]> Cypherpunks.ru repositories - gostls13.git/commitdiff
tests for redeclaration in :=
authorRob Pike <r@golang.org>
Sun, 19 Apr 2009 00:21:00 +0000 (17:21 -0700)
committerRob Pike <r@golang.org>
Sun, 19 Apr 2009 00:21:00 +0000 (17:21 -0700)
R=ken
DELTA=71  (71 added, 0 deleted, 0 changed)
OCL=27616
CL=27616

test/decl.go [new file with mode: 0644]
test/declbad.go [new file with mode: 0644]

diff --git a/test/decl.go b/test/decl.go
new file mode 100644 (file)
index 0000000..6229db9
--- /dev/null
@@ -0,0 +1,29 @@
+// $G $F.go && $L $F.$A && ./$A.out
+
+// Copyright 2009 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.
+
+// Correct short declarations and redeclarations.
+
+package main
+
+func f1() int { return 1 }
+func f2() (float, int) { return 1, 2 }
+func f3() (float, int, string) { return 1, 2, "3" }
+
+func main() {
+       i, f, s := f3();
+       j, f := f2();   // redeclare f
+       k := f1();
+       m, g, s := f3();
+       m, h, s := f3();
+       {
+               // new block should be ok.
+               i, f, s := f3();
+               j, f := f2();   // redeclare f
+               k := f1();
+               m, g, s := f3();
+               m, h, s := f3();
+       }
+}
diff --git a/test/declbad.go b/test/declbad.go
new file mode 100644 (file)
index 0000000..8115b2c
--- /dev/null
@@ -0,0 +1,50 @@
+// errchk $G -e $F.go
+
+// Copyright 2009 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.
+
+// Incorrect short declarations and redeclarations.
+
+package main
+
+func f1() int { return 1 }
+func f2() (float, int) { return 1, 2 }
+func f3() (float, int, string) { return 1, 2, "3" }
+
+func main() {
+       {
+               // simple redeclaration
+               i := f1();
+               i := f1();      // ERROR "redeclared"
+       {
+               // change of type for f
+               i, f, s := f3();
+               f, g, t := f3();        // ERROR "redeclared"
+       }
+       {
+               // change of type for i
+               i, f, s := f3();
+               j, i, t := f3();        // ERROR "redeclared"
+       }
+       {
+               // no new variables
+               i, f, s := f3();
+               i, f := f2();   // ERROR "redeclared"
+       }
+       {
+               // single redeclaration
+               i, f, s := f3();
+               i := f1();      // ERROR "redeclared"
+       }
+               // double redeclaration
+       {
+               i, f, s := f3();
+               i, f := f2();   // ERROR "redeclared"
+       }
+       {
+               // triple redeclaration
+               i, f, s := f3();
+               i, f, s := f3();        // ERROR "redeclared"
+       }
+}