github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/fixedbugs/issue53650.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package p 6 7 import ( 8 "reflect" 9 "testing" 10 ) 11 12 type T1 int 13 type T2 int 14 15 func f[P T1 | T2, _ []P]() {} 16 17 var _ = f[T1] 18 19 // test case from issue 20 21 type BaseT interface { 22 Type1 | Type2 23 } 24 type BaseType int 25 type Type1 BaseType 26 type Type2 BaseType // float64 27 28 type ValueT[T BaseT] struct { 29 A1 T 30 } 31 32 func NewType1() *ValueT[Type1] { 33 r := NewT[Type1]() 34 return r 35 } 36 func NewType2() *ValueT[Type2] { 37 r := NewT[Type2]() 38 return r 39 } 40 41 func NewT[TBase BaseT, TVal ValueT[TBase]]() *TVal { 42 ret := TVal{} 43 return &ret 44 } 45 func TestGoType(t *testing.T) { 46 r1 := NewType1() 47 r2 := NewType2() 48 t.Log(r1, r2) 49 t.Log(reflect.TypeOf(r1), reflect.TypeOf(r2)) 50 fooT1(r1.A1) 51 fooT2(r2.A1) 52 } 53 54 func fooT1(t1 Type1) { 55 56 } 57 func fooT2(t2 Type2) { 58 59 }