| // Copyright 2022 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. |
| |
| // This file is tested when running "go test -run Manual" |
| // without source arguments. Use for one-off debugging. |
| |
| package p |
| |
| import "fmt" |
| |
| type F[A, B any] int |
| |
| func G[A, B any](F[A, B]) { |
| } |
| |
| func _() { |
| // TODO(gri) only report one error below (issue #50932) |
| var x F /* ERROR got 1 arguments but 2 type parameters */ [int] |
| G(x /* ERROR does not match */) |
| } |
| |
| // test case from issue |
| // (lots of errors but doesn't crash anymore) |
| |
| type RC[G any, RG any] interface { |
| ~[]RG |
| } |
| |
| type RG[G any] struct{} |
| |
| type RSC[G any] []*RG[G] |
| |
| type M[Rc RC[G, RG], G any, RG any] struct { |
| Fn func(Rc) |
| } |
| |
| type NFn[Rc RC[G, RG], G any, RG any] func(Rc) |
| |
| func NC[Rc RC[G, RG], G any, RG any](nFn NFn[Rc, G, RG]) { |
| var empty Rc |
| nFn(empty) |
| } |
| |
| func NSG[G any](c RSC[G]) { |
| fmt.Println(c) |
| } |
| |
| func MMD[Rc RC /* ERROR got 1 arguments */ [RG], RG any, G any]() M /* ERROR got 2 arguments */ [Rc, RG] { |
| |
| var nFn NFn /* ERROR got 2 arguments */ [Rc, RG] |
| |
| var empty Rc |
| switch any(empty).(type) { |
| case BC /* ERROR undeclared name: BC */ : |
| |
| case RSC[G]: |
| nFn = NSG /* ERROR cannot use NSG\[G\] */ [G] |
| } |
| |
| return M /* ERROR got 2 arguments */ [Rc, RG]{ |
| Fn: func(rc Rc) { |
| NC(nFn /* ERROR does not match */ ) |
| }, |
| } |
| |
| return M /* ERROR got 2 arguments */ [Rc, RG]{} |
| } |