From: Roger Peppe Date: Wed, 30 Mar 2011 16:45:51 +0000 (-0700) Subject: go/parser: fix scoping for local type declarations X-Git-Tag: weekly.2011-04-04~44 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=dba96cf411bc06cc3d75be160d420fc457b4a598;p=gostls13.git go/parser: fix scoping for local type declarations R=gri CC=golang-dev https://golang.org/cl/4332045 --- diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index ad7e4cdcf2..5b1edace1b 100644 --- a/src/pkg/go/parser/parser.go +++ b/src/pkg/go/parser/parser.go @@ -2016,16 +2016,17 @@ func parseTypeSpec(p *parser, doc *ast.CommentGroup, _ int) ast.Spec { } ident := p.parseIdent() - typ := p.parseType() - p.expectSemi() // call before accessing p.linecomment // Go spec: The scope of a type identifier declared inside a function begins // at the identifier in the TypeSpec and ends at the end of the innermost // containing block. // (Global identifiers are resolved in a separate phase after parsing.) - spec := &ast.TypeSpec{doc, ident, typ, p.lineComment} + spec := &ast.TypeSpec{doc, ident, nil, p.lineComment} p.declare(spec, p.topScope, ast.Typ, ident) + spec.Type = p.parseType() + p.expectSemi() // call before accessing p.linecomment + return spec }