/
/
opt
/
golang
/
1.22.0
/
test
/
typeparam
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.137
PHP 8.3.16
Dir:
/opt/golang/1.22.0/test/typeparam
Edit:
/opt/golang/1.22.0/test/typeparam/issue58513.go
// run // Copyright 2023 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. // Some derived-type expressions require the compiler to synthesize // function literals to plumb sub-dictionaries appropriately. // However, when these expressions are inlined, we were constructing // the function literal bodies with the inline-adjusted positions // instead of the original (inline-free) positions, which could lead // to infinite loops when unwinding the stack. package main import "runtime" func assert[_ any]() { panic(0) } func Assert[To any]() func() { return assert[To] } type asserter[_ any] struct{} func (asserter[_]) assert() { panic(0) } func AssertMV[To any]() func() { return asserter[To]{}.assert } func AssertME[To any]() func(asserter[To]) { return asserter[To].assert } var me = AssertME[string]() var tests = []func(){ Assert[int](), AssertMV[int](), func() { me(asserter[string]{}) }, } func main() { for _, test := range tests { func() { defer func() { recover() // Check that we can unwind the stack without infinite looping. runtime.Caller(1000) }() test() }() } }
Ukuran: 1.2 KB