]> Cypherpunks repositories - gostls13.git/commit
go/parser: remove validation of expression syntax, leave to type checker
authorRobert Griesemer <gri@golang.org>
Thu, 25 Aug 2022 22:28:52 +0000 (15:28 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 1 Sep 2022 22:35:46 +0000 (22:35 +0000)
commit9b80d3d3db126bda3eb976778cca4eb03a5a229b
tree2cf39e5fae760d62821e7e3b50e7be97ff3e6543
parent4048f3ffb6b74fef0a7e0e2f9d47bc944d805578
go/parser: remove validation of expression syntax, leave to type checker

Remove the code that verifies that an expression is a type or non-type
expression. For one, it cannot be done perfectly accurate
(e.g., consider *p which could be an indirection or a pointer type),
it also unnecessarily slows down parsing. It's simpler to leave the
verification to the type checker which has all the information needed.

Remove short compiler tests that tested the expression/type property.
Adjust a couple of go/types tests which now trigger because the parser
doesn't complain anymore.

Change file for benchmark from "parser.go" to "../printer/nodes.go"
to avoid a moving target when benchmarking.

The parser may be marginally faster when tested on nodes.go:

name          old time/op    new time/op    delta
ParseOnly-12    1.35ms ± 0%    1.31ms ± 0%   ~     (p=0.100 n=3+3)

name          old speed      new speed      delta
ParseOnly-12  39.9MB/s ± 0%  41.0MB/s ± 0%   ~     (p=0.100 n=3+3)

For #54511.

Change-Id: I9a32c24c2c6e843c3d1af4587651c352f378b490
Reviewed-on: https://go-review.googlesource.com/c/go/+/425716
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Robert Griesemer <gri@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
Auto-Submit: Robert Griesemer <gri@google.com>
src/go/parser/interface.go
src/go/parser/parser.go
src/go/parser/performance_test.go
src/go/parser/short_test.go
src/go/types/testdata/check/stmt0.go
src/go/types/testdata/fixedbugs/issue42987.go