From 8fe8e29c9f94d569586a6d8ae6798f82bb5b385b Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 10 Dec 2020 18:07:09 -0800 Subject: [PATCH] [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 Run-TryBot: Robert Griesemer Reviewed-by: Robert Findley TryBot-Result: Go Bot --- src/cmd/compile/internal/types2/fixedbugs/issue43125.src | 8 ++++++++ src/cmd/compile/internal/types2/typexpr.go | 3 +++ 2 files changed, 11 insertions(+) create mode 100644 src/cmd/compile/internal/types2/fixedbugs/issue43125.src diff --git a/src/cmd/compile/internal/types2/fixedbugs/issue43125.src b/src/cmd/compile/internal/types2/fixedbugs/issue43125.src new file mode 100644 index 0000000000..c2bd970e25 --- /dev/null +++ b/src/cmd/compile/internal/types2/fixedbugs/issue43125.src @@ -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) diff --git a/src/cmd/compile/internal/types2/typexpr.go b/src/cmd/compile/internal/types2/typexpr.go index 22df01b3be..4231577a4f 100644 --- a/src/cmd/compile/internal/types2/typexpr.go +++ b/src/cmd/compile/internal/types2/typexpr.go @@ -535,6 +535,9 @@ func (check *Checker) typInternal(e0 syntax.Expr, def *Named) (T Type) { return typ } + check.errorf(e0, "%s is not a type", e0) + check.use(e0) + case *syntax.FuncType: typ := new(Signature) def.setUnderlying(typ)