From: Josh Bleecher Snyder Date: Fri, 5 Jun 2015 17:39:23 +0000 (-0700) Subject: cmd/compile: early typecheck top level OAS2 nodes X-Git-Tag: go1.5beta1~314 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=494ff188f882098648831a27c7c09da5085fa0c2;p=gostls13.git cmd/compile: early typecheck top level OAS2 nodes Fixes #10977. Change-Id: I706c953c16daad48595c7fae2d82124614dfc3ad Reviewed-on: https://go-review.googlesource.com/10780 Reviewed-by: David Chase Run-TryBot: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/gc/lex.go b/src/cmd/compile/internal/gc/lex.go index 46b7d5da16..afc5de95c5 100644 --- a/src/cmd/compile/internal/gc/lex.go +++ b/src/cmd/compile/internal/gc/lex.go @@ -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 index 0000000000..0b18c70005 --- /dev/null +++ b/test/fixedbugs/issue10977.go @@ -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{} }