1
0
mirror of https://github.com/golang/go synced 2024-11-24 17:10:03 -07:00

gc: more graceful errors during struct definition

Fixes #2110.

R=ken2
CC=golang-dev
https://golang.org/cl/4823060
This commit is contained in:
Russ Cox 2011-07-28 20:41:18 -04:00
parent 33a4da89d3
commit 032ffb2e90
2 changed files with 24 additions and 4 deletions

View File

@ -746,10 +746,8 @@ stotype(NodeList *l, int et, Type **t, int funarg)
} else { } else {
typecheck(&n->right, Etype); typecheck(&n->right, Etype);
n->type = n->right->type; n->type = n->right->type;
if(n->type == T) { if(n->type == T)
*t0 = T; continue;
return t0;
}
if(left != N) if(left != N)
left->type = n->type; left->type = n->type;
n->right = N; n->right = N;

22
test/fixedbugs/bug365.go Normal file
View File

@ -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
}