]> Cypherpunks repositories - gostls13.git/commitdiff
test/fixedbugs/bug454.go: add a test for CL 6564052
authorShenghou Ma <minux.ma@gmail.com>
Sat, 29 Sep 2012 15:23:56 +0000 (23:23 +0800)
committerShenghou Ma <minux.ma@gmail.com>
Sat, 29 Sep 2012 15:23:56 +0000 (23:23 +0800)
   Also mention that ignoring second blank identifier of range is required by the spec in the code.

   Fixes #4173.

R=daniel.morsing, remyoudompheng, r
CC=golang-dev
https://golang.org/cl/6594043

src/cmd/gc/range.c
test/fixedbugs/bug454.go [new file with mode: 0644]

index 741a9ac9a7b41dab9b8dd417d201aacb3cba9b58..50c4617c068f2c9a40bbd42a2cf297631b6c8bd1 100644 (file)
@@ -71,7 +71,11 @@ typecheckrange(Node *n)
        v2 = N;
        if(n->list->next)
                v2 = n->list->next->n;
-       
+
+       // this is not only a optimization but also a requirement in the spec.
+       // "if the second iteration variable is the blank identifier, the range
+       // clause is equivalent to the same clause with only the first variable
+       // present."
        if(isblank(v2)) {
                n->list = list1(v1);
                v2 = N;
diff --git a/test/fixedbugs/bug454.go b/test/fixedbugs/bug454.go
new file mode 100644 (file)
index 0000000..a10abba
--- /dev/null
@@ -0,0 +1,21 @@
+// run
+
+// Copyright 2012 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 4173
+
+package main
+
+func main() {
+       var arr *[10]int
+       s := 0
+       for i, _ := range arr {
+               // used to panic trying to access arr[i]
+               s += i
+       }
+       if s != 45 {
+               println("BUG")
+       }
+}