mirror of
https://github.com/golang/go
synced 2024-11-26 10:28:19 -07:00
cmd/compile: mark ODYNAMICDOTTYPE as an expression that can panic
Fixes #47924 Change-Id: I4325b3c4ed9d369d9ea778478285436e1b2ab08a Reviewed-on: https://go-review.googlesource.com/c/go/+/344571 Trust: Keith Randall <khr@golang.org> Trust: Dan Scales <danscales@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
This commit is contained in:
parent
5b64381155
commit
c2f96e686f
@ -312,7 +312,7 @@ func mayCall(n ir.Node) bool {
|
|||||||
return true
|
return true
|
||||||
|
|
||||||
case ir.OINDEX, ir.OSLICE, ir.OSLICEARR, ir.OSLICE3, ir.OSLICE3ARR, ir.OSLICESTR,
|
case ir.OINDEX, ir.OSLICE, ir.OSLICEARR, ir.OSLICE3, ir.OSLICE3ARR, ir.OSLICESTR,
|
||||||
ir.ODEREF, ir.ODOTPTR, ir.ODOTTYPE, ir.ODIV, ir.OMOD, ir.OSLICE2ARRPTR:
|
ir.ODEREF, ir.ODOTPTR, ir.ODOTTYPE, ir.ODYNAMICDOTTYPE, ir.ODIV, ir.OMOD, ir.OSLICE2ARRPTR:
|
||||||
// These ops might panic, make sure they are done
|
// These ops might panic, make sure they are done
|
||||||
// before we start marshaling args for a call. See issue 16760.
|
// before we start marshaling args for a call. See issue 16760.
|
||||||
return true
|
return true
|
||||||
|
15
test/typeparam/issue47924.go
Normal file
15
test/typeparam/issue47924.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// compile -G=3
|
||||||
|
|
||||||
|
// 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
|
||||||
|
|
||||||
|
type Cache[K any] struct{}
|
||||||
|
|
||||||
|
func (c Cache[K]) foo(x interface{}, f func(K) bool) {
|
||||||
|
f(x.(K))
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ Cache[int]
|
Loading…
Reference in New Issue
Block a user