aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDan Scales <danscales@google.com>2021-08-18 06:28:40 -0700
committerDan Scales <danscales@google.com>2021-08-27 01:42:38 +0000
commitd7e2e2ec2b2a11c2bfb98a27c03d0dccba62c4fb (patch)
tree3731dfd4abcf85abbfffeee598be743fd814d75e /test
parentc92759978372ffc354f83e08b1dd6fa496e9b545 (diff)
downloadgo-d7e2e2ec2b2a11c2bfb98a27c03d0dccba62c4fb.tar.gz
go-d7e2e2ec2b2a11c2bfb98a27c03d0dccba62c4fb.zip
cmd/compile: delay fillinMethods to deal with mutually-recursive types
We need to delay fillinMethods until we get to a top-level type, so we know all the TFORW types have been filled in, and we can do the substitutions required by fillinMethods. Fixes #47710 Change-Id: I298de7e7753ed31a2c2b1ff04f35177a8afc7a66 Reviewed-on: https://go-review.googlesource.com/c/go/+/345149 Trust: Dan Scales <danscales@google.com> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'test')
-rw-r--r--test/typeparam/issue47710.go19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/typeparam/issue47710.go b/test/typeparam/issue47710.go
new file mode 100644
index 0000000000..0882cb4137
--- /dev/null
+++ b/test/typeparam/issue47710.go
@@ -0,0 +1,19 @@
+// compile -G=3
+
+// 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 p
+
+type FooType[t any] interface {
+ Foo(BarType[t])
+}
+type BarType[t any] interface {
+ Int(IntType[t]) FooType[int]
+}
+
+type IntType[t any] int
+
+func (n IntType[t]) Foo(BarType[t]) {}
+func (n IntType[_]) String() {}