1
0
mirror of https://github.com/golang/go synced 2024-11-14 15:10:54 -07:00

[dev.typeparams] cmd/compile/internal/types2: report error for invalid type expression

This bug was introduced by the change from go/ast to syntax which
represents pointer types as (unary) operations rather than dedicated
StarExpr nodes. Accordingly, this bug does not exist for go/types.
It's still ok to backport the test.

Fixes #43125.

Change-Id: Ic55d913f8afc92862856e1eb7c2861d07fc56cfb
Reviewed-on: https://go-review.googlesource.com/c/go/+/278013
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
Robert Griesemer 2020-12-10 18:07:09 -08:00
parent f8930a2413
commit 8fe8e29c9f
2 changed files with 11 additions and 0 deletions

View File

@ -0,0 +1,8 @@
// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package p
var _ = new(- /* ERROR not a type */ 1)
var _ = new(1 /* ERROR not a type */ + 1)

View File

@ -535,6 +535,9 @@ func (check *Checker) typInternal(e0 syntax.Expr, def *Named) (T Type) {
return typ return typ
} }
check.errorf(e0, "%s is not a type", e0)
check.use(e0)
case *syntax.FuncType: case *syntax.FuncType:
typ := new(Signature) typ := new(Signature)
def.setUnderlying(typ) def.setUnderlying(typ)