comd/compile/internal/types2: add missing nil check in const conversion

Follow-up on CL 360396.

Fixes #49296.

Change-Id: Ie08f86ae884da4cfd5db557cbf4f721a237dc39f
Reviewed-on: https://go-review.googlesource.com/c/go/+/360796
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
Robert Griesemer 2021-11-02 10:14:29 -07:00
parent 4e7dd9fc08
commit 7548327374
2 changed files with 22 additions and 0 deletions

View File

@ -18,6 +18,8 @@ func (check *Checker) conversion(x *operand, T Type) {
constConvertibleTo := func(T Type, val *constant.Value) bool {
switch t := asBasic(T); {
case t == nil:
// nothing to do
case representableConst(x.val, check, t, val):
return true
case isInteger(x.typ) && isString(t):

View File

@ -0,0 +1,20 @@
// Copyright 2021 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
func _[
T0 any,
T1 []int,
T2 ~float64 | ~complex128 | chan int,
]() {
_ = T0(nil /* ERROR cannot convert untyped nil to T0 */ )
_ = T1(1 /* ERROR cannot convert 1 .* to T1 */ )
_ = T2(2 /* ERROR cannot convert 2 .* to T2 */ )
}
// test case from issue
func f[T interface{[]int}]() {
_ = T(1 /* ERROR cannot convert */ )
}