diff --git a/src/cmd/gc/dcl.c b/src/cmd/gc/dcl.c index ba1aa83888f..5bfeeb97aa5 100644 --- a/src/cmd/gc/dcl.c +++ b/src/cmd/gc/dcl.c @@ -746,10 +746,8 @@ stotype(NodeList *l, int et, Type **t, int funarg) } else { typecheck(&n->right, Etype); n->type = n->right->type; - if(n->type == T) { - *t0 = T; - return t0; - } + if(n->type == T) + continue; if(left != N) left->type = n->type; n->right = N; diff --git a/test/fixedbugs/bug365.go b/test/fixedbugs/bug365.go new file mode 100644 index 00000000000..7ec19b0c8b7 --- /dev/null +++ b/test/fixedbugs/bug365.go @@ -0,0 +1,22 @@ +// errchk $G $D/$F.go + +// Copyright 2011 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. + +// check that compiler doesn't stop reading struct def +// after first unknown type. + +// Fixes issue 2110. + +package main + +type S struct { + err os.Error // ERROR "undefined" + Num int +} + +func main() { + s := S{} + _ = s.Num // no error here please +}