github.com/JimmyHuang454/JLS-go@v0.0.0-20230831150107-90d536585ba0/internal/types/testdata/fixedbugs/issue50929.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 // This file is tested when running "go test -run Manual" 6 // without source arguments. Use for one-off debugging. 7 8 package p 9 10 import "fmt" 11 12 type F[A, B any] int 13 14 func G[A, B any](F[A, B]) { 15 } 16 17 func _() { 18 // TODO(gri) only report one error below (issue #50932) 19 var x F /* ERROR got 1 arguments but 2 type parameters */ [int] 20 G(x /* ERROR does not match */) 21 } 22 23 // test case from issue 24 // (lots of errors but doesn't crash anymore) 25 26 type RC[G any, RG any] interface { 27 ~[]RG 28 } 29 30 type RG[G any] struct{} 31 32 type RSC[G any] []*RG[G] 33 34 type M[Rc RC[G, RG], G any, RG any] struct { 35 Fn func(Rc) 36 } 37 38 type NFn[Rc RC[G, RG], G any, RG any] func(Rc) 39 40 func NC[Rc RC[G, RG], G any, RG any](nFn NFn[Rc, G, RG]) { 41 var empty Rc 42 nFn(empty) 43 } 44 45 func NSG[G any](c RSC[G]) { 46 fmt.Println(c) 47 } 48 49 func MMD[Rc RC /* ERROR got 1 arguments */ [RG], RG any, G any]() M /* ERROR got 2 arguments */ [Rc, RG] { 50 51 var nFn NFn /* ERROR got 2 arguments */ [Rc, RG] 52 53 var empty Rc 54 switch any(empty).(type) { 55 case BC /* ERROR undefined: BC */ : 56 57 case RSC[G]: 58 nFn = NSG /* ERROR cannot use NSG\[G\] */ [G] 59 } 60 61 return M /* ERROR got 2 arguments */ [Rc, RG]{ 62 Fn: func(rc Rc) { 63 NC(nFn /* ERROR does not match */ ) 64 }, 65 } 66 67 return M /* ERROR got 2 arguments */ [Rc, RG]{} 68 }