github.com/JimmyHuang454/JLS-go@v0.0.0-20230831150107-90d536585ba0/internal/types/testdata/check/typeinference.go (about) 1 // Copyright 2021 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 typeInference 6 7 // As of issue #51527, type-type inference has been disabled. 8 9 // basic inference 10 type Tb[P ~*Q, Q any] int 11 func _() { 12 var x Tb /* ERROR got 1 arguments */ [*int] 13 var y Tb[*int, int] 14 x = y /* ERROR cannot use y .* in assignment */ 15 _ = x 16 } 17 18 // recursive inference 19 type Tr[A any, B *C, C *D, D *A] int 20 func _() { 21 var x Tr /* ERROR got 1 arguments */ [string] 22 var y Tr[string, ***string, **string, *string] 23 var z Tr[int, ***int, **int, *int] 24 x = y /* ERROR cannot use y .* in assignment */ 25 x = z // ERROR cannot use z .* as Tr 26 _ = x 27 } 28 29 // other patterns of inference 30 type To0[A any, B []A] int 31 type To1[A any, B struct{a A}] int 32 type To2[A any, B [][]A] int 33 type To3[A any, B [3]*A] int 34 type To4[A any, B any, C struct{a A; b B}] int 35 func _() { 36 var _ To0 /* ERROR got 1 arguments */ [int] 37 var _ To1 /* ERROR got 1 arguments */ [int] 38 var _ To2 /* ERROR got 1 arguments */ [int] 39 var _ To3 /* ERROR got 1 arguments */ [int] 40 var _ To4 /* ERROR got 2 arguments */ [int, string] 41 } 42 43 // failed inference 44 type Tf0[A, B any] int 45 type Tf1[A any, B ~struct{a A; c C}, C any] int 46 func _() { 47 var _ Tf0 /* ERROR got 1 arguments but 2 type parameters */ [int] 48 var _ Tf1 /* ERROR got 1 arguments but 3 type parameters */ [int] 49 }