]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: early typecheck top level OAS2 nodes
authorJosh Bleecher Snyder <josharian@gmail.com>
Fri, 5 Jun 2015 17:39:23 +0000 (10:39 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Tue, 9 Jun 2015 00:25:02 +0000 (00:25 +0000)
Fixes #10977.

Change-Id: I706c953c16daad48595c7fae2d82124614dfc3ad
Reviewed-on: https://go-review.googlesource.com/10780
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>

src/cmd/compile/internal/gc/lex.go
test/fixedbugs/issue10977.go [new file with mode: 0644]

index 46b7d5da169ab5e9a1c9115b693f67ebcb413e3e..afc5de95c5ef3f91d2ab0b53e28aa142d4712452 100644 (file)
@@ -370,7 +370,7 @@ func Main() {
        defercheckwidth()
 
        for l := xtop; l != nil; l = l.Next {
-               if l.N.Op != ODCL && l.N.Op != OAS {
+               if l.N.Op != ODCL && l.N.Op != OAS && l.N.Op != OAS2 {
                        typecheck(&l.N, Etop)
                }
        }
@@ -378,7 +378,7 @@ func Main() {
        // Phase 2: Variable assignments.
        //   To check interface assignments, depends on phase 1.
        for l := xtop; l != nil; l = l.Next {
-               if l.N.Op == ODCL || l.N.Op == OAS {
+               if l.N.Op == ODCL || l.N.Op == OAS || l.N.Op == OAS2 {
                        typecheck(&l.N, Etop)
                }
        }
diff --git a/test/fixedbugs/issue10977.go b/test/fixedbugs/issue10977.go
new file mode 100644 (file)
index 0000000..0b18c70
--- /dev/null
@@ -0,0 +1,20 @@
+// compile
+
+// Copyright 2015 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.
+
+package p
+
+type T struct{}
+
+var (
+       t = T{}
+       u = t.New()
+)
+
+func x(T) (int, int) { return 0, 0 }
+
+var _, _ = x(u)
+
+func (T) New() T { return T{} }