Initial commit: Go 1.23 release state
This commit is contained in:
56
test/typeparam/geninline.dir/a.go
Normal file
56
test/typeparam/geninline.dir/a.go
Normal file
@@ -0,0 +1,56 @@
|
||||
// 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 a
|
||||
|
||||
type IVal[T comparable] interface {
|
||||
check(want T)
|
||||
}
|
||||
|
||||
type Val[T comparable] struct {
|
||||
val T
|
||||
}
|
||||
|
||||
//go:noinline
|
||||
func (l *Val[T]) check(want T) {
|
||||
if l.val != want {
|
||||
panic("hi")
|
||||
}
|
||||
}
|
||||
|
||||
func Test1() {
|
||||
var l Val[int]
|
||||
if l.val != 0 {
|
||||
panic("hi")
|
||||
}
|
||||
_ = IVal[int](&l)
|
||||
}
|
||||
|
||||
func Test2() {
|
||||
var l Val[float64]
|
||||
l.val = 3.0
|
||||
l.check(float64(3))
|
||||
_ = IVal[float64](&l)
|
||||
}
|
||||
|
||||
type privateVal[T comparable] struct {
|
||||
val T
|
||||
}
|
||||
|
||||
//go:noinline
|
||||
func (l *privateVal[T]) check(want T) {
|
||||
if l.val != want {
|
||||
panic("hi")
|
||||
}
|
||||
}
|
||||
|
||||
type Outer struct {
|
||||
val privateVal[string]
|
||||
}
|
||||
|
||||
func Test3() {
|
||||
var o Outer
|
||||
o.val.check("")
|
||||
_ = IVal[string](&o.val)
|
||||
}
|
||||
16
test/typeparam/geninline.dir/main.go
Normal file
16
test/typeparam/geninline.dir/main.go
Normal file
@@ -0,0 +1,16 @@
|
||||
// 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 main
|
||||
|
||||
import "./a"
|
||||
|
||||
// Testing inlining of functions that refer to instantiated exported and non-exported
|
||||
// generic types.
|
||||
|
||||
func main() {
|
||||
a.Test1()
|
||||
a.Test2()
|
||||
a.Test3()
|
||||
}
|
||||
Reference in New Issue
Block a user