summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2013-07-29 13:52:15 -0700
committerRobert Griesemer <gri@golang.org>2013-07-29 13:52:15 -0700
commit1f9e82401421a347100fa72ccc211a6215c38028 (patch)
tree14726c0da3036b04478344af7df2a97ebeb5546a
parent20b149f874dccf81185a18e38cb8de032e9b2118 (diff)
downloadgo-1f9e82401421a347100fa72ccc211a6215c38028.tar.gz
go/parser: selectors may be method expressions
R=adonovan CC=golang-dev https://codereview.appspot.com/12062043
-rw-r--r--src/pkg/go/parser/parser.go2
-rw-r--r--src/pkg/go/parser/short_test.go1
2 files changed, 2 insertions, 1 deletions
diff --git a/src/pkg/go/parser/parser.go b/src/pkg/go/parser/parser.go
index 42a1c5e57..a0ac8d713 100644
--- a/src/pkg/go/parser/parser.go
+++ b/src/pkg/go/parser/parser.go
@@ -1408,7 +1408,7 @@ L:
}
switch p.tok {
case token.IDENT:
- x = p.parseSelector(p.checkExpr(x))
+ x = p.parseSelector(p.checkExprOrType(x))
case token.LPAREN:
x = p.parseTypeAssertion(p.checkExpr(x))
default:
diff --git a/src/pkg/go/parser/short_test.go b/src/pkg/go/parser/short_test.go
index a581319e0..0ef0c560c 100644
--- a/src/pkg/go/parser/short_test.go
+++ b/src/pkg/go/parser/short_test.go
@@ -34,6 +34,7 @@ var valids = []string{
`package p; func f() { switch ; {} };`,
`package p; func f() { for _ = range "foo" + "bar" {} };`,
`package p; func f() { var s []int; g(s[:], s[i:], s[:j], s[i:j], s[i:j:k], s[:j:k]) };`,
+ `package p; var ( _ = (struct {*T}).m; _ = (interface {T}).m )`,
}
func TestValid(t *testing.T) {