diff options
| author | Robert Griesemer <gri@golang.org> | 2021-04-27 12:12:01 -0700 |
|---|---|---|
| committer | Robert Griesemer <gri@golang.org> | 2021-04-28 18:50:41 +0000 |
| commit | ea65a12f895ce67ee6fd843b9cee97d42f6ad0b4 (patch) | |
| tree | 5b59beb78316074ae398a42b830fe492cec12c04 /src/cmd/compile/internal/syntax/parser.go | |
| parent | 90614ff46236e970acbcb3645edd03186718667a (diff) | |
| download | go-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.go | 13 |
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 } |
