diff options
author | Dan Scales <danscales@google.com> | 2021-08-18 06:28:40 -0700 |
---|---|---|
committer | Dan Scales <danscales@google.com> | 2021-08-27 01:42:38 +0000 |
commit | d7e2e2ec2b2a11c2bfb98a27c03d0dccba62c4fb (patch) | |
tree | 3731dfd4abcf85abbfffeee598be743fd814d75e /test | |
parent | c92759978372ffc354f83e08b1dd6fa496e9b545 (diff) | |
download | go-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.go | 19 |
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() {} |