From dba96cf411bc06cc3d75be160d420fc457b4a598 Mon Sep 17 00:00:00 2001 From: Roger Peppe Date: Wed, 30 Mar 2011 09:45:51 -0700 Subject: [PATCH] go/parser: fix scoping for local type declarations R=gri CC=golang-dev https://golang.org/cl/4332045 --- src/pkg/go/parser/parser.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go index ad7e4cdcf2e..5b1edace1b6 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 }