aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/parser.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-04-27 12:12:01 -0700
committerRobert Griesemer <gri@golang.org>2021-04-28 18:50:41 +0000
commitea65a12f895ce67ee6fd843b9cee97d42f6ad0b4 (patch)
tree5b59beb78316074ae398a42b830fe492cec12c04 /src/cmd/compile/internal/syntax/parser.go
parent90614ff46236e970acbcb3645edd03186718667a (diff)
downloadgo-ea65a12f895ce67ee6fd843b9cee97d42f6ad0b4.tar.xz
cmd/compile/internal/types2: catch unexpected expression lists
This is a modified port of the https://golang.org/cl/313909 change for go/types. - add catch-all cases for unexpected expression lists - add Checker.singleIndex function to check single indices - better syntax error handling in parser for invalid type instantiations that are missing a type argument Change-Id: I6f0f396d637ad66b79f803d886fdc20ee55a98b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/314409 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/syntax/parser.go')
-rw-r--r--src/cmd/compile/internal/syntax/parser.go13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go
index 80250212dd..e7b8840b33 100644
--- a/src/cmd/compile/internal/syntax/parser.go
+++ b/src/cmd/compile/internal/syntax/parser.go
@@ -1291,16 +1291,15 @@ func (p *parser) typeInstance(typ Expr) Expr {
pos := p.pos()
p.want(_Lbrack)
- if p.tok == _Rbrack {
- p.error("expecting type")
- p.next()
- return typ
- }
-
x := new(IndexExpr)
x.pos = pos
x.X = typ
- x.Index, _ = p.typeList()
+ if p.tok == _Rbrack {
+ p.syntaxError("expecting type")
+ x.Index = p.badExpr()
+ } else {
+ x.Index, _ = p.typeList()
+ }
p.want(_Rbrack)
return x
}