mirror of https://github.com/golang/go.git
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:
parent
4e7dd9fc08
commit
7548327374
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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 */ )
|
||||
}
|
||||
Loading…
Reference in New Issue