/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/tailcall.go
29 строк
805 B
Cherry Mui
Revert "cmd/compile: Enable inlining of tail calls"
04 июн 2025, 18:27
04 июн 2025, 18:27
1aa3362
Код
Авторство
О чём код?
// errorcheck -0 -d=tailcall=1 // Copyright 2024 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 // Test that when generating wrappers for methods, we generate a tail call to the pointer version of // the method, if that method is not inlineable. We use go:noinline here to force the non-inlineability // condition. //go:noinline func (f *Foo) Get2Vals() [2]int { return [2]int{f.Val, f.Val + 1} } func (f *Foo) Get3Vals() [3]int { return [3]int{f.Val, f.Val + 1, f.Val + 2} } type Foo struct{ Val int } type Bar struct { // ERROR "tail call emitted for the method \(\*Foo\).Get2Vals wrapper" int64 *Foo // needs a method wrapper string } var i any func init() { i = Bar{1, nil, "first"} }