Go 1.26.0のgo fix -inlineによるインライン化、ジェネリクスな関数では型引数を明示しないと動かない場合がありそう。上はインライン化されるけど下はされない
— うたがわきき (@utgwkk) 2026年2月23日
```
//go:fix inline
func Ptr[T any](x T) *T {
return new(x)
}
func f() {
_ = Ptr[int](1)
_ = Ptr(1)
}
```
冒頭に貼ったツイートが全てです。func Ptr[T any](x T) *T のようなジェネリックな関数を、Go 1.26.0の go fix コマンドでインライン化する場合、呼び出す際に型引数を渡していないとインライン化されません。
//go:fix inline func Ptr[T any](x T) *T { return new(x) } func f() { _ = Ptr[int](1) // new(int(1)) にインライン化される _ = Ptr(1) // インライン化されない }
go fix -inline の実装上で明示的にエラーが返るようになっている*1ので、現状はそういうものだと捉えることになりそうです。
一方で go fix -newexpr コマンドであれば、上述したような関数をインライン化できます。newexpr Analyzerが対象とする関数の形に強い仮定を置いている*2一方で、 go fix -inline では一般的な関数のインライン展開を考える必要があるので、このような差が生じているのでしょう。
ここで宣伝
2/27 (金) の kamakura.go #8 でGo 1.26の new 関数などの話をします。鎌倉に来れる方はぜひお越しください。