aboutsummaryrefslogtreecommitdiff
path: root/test/typeparam
diff options
context:
space:
mode:
authorDan Scales <danscales@google.com>2021-09-24 08:57:06 -0700
committerDan Scales <danscales@google.com>2021-09-25 01:24:46 +0000
commit8854368cb076ea9a2b71c8b3c8f675a8e19b751c (patch)
tree2bc1f770b01ce1da5ab899ef61be769aac416d70 /test/typeparam
parentd60ad1e068263832c711aaf17b6ccb1b7f71b000 (diff)
downloadgo-8854368cb076ea9a2b71c8b3c8f675a8e19b751c.tar.xz
cmd/compile: deal with blank nodes with typeparam type during stenciling
Deal correctly with a blank local variable with type param type. This is a special case, because a blank local variable is not in the fn.Dcl list. In this case, we must explicitly create a new blank node with the correct substituted type, so we have correct types if the blank local variable has an initializing assignment. Fixes #48602 Change-Id: I903ea44b29934e180404e32800773b7309bf297b Reviewed-on: https://go-review.googlesource.com/c/go/+/352117 Run-TryBot: Dan Scales <danscales@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Trust: Dan Scales <danscales@google.com>
Diffstat (limited to 'test/typeparam')
-rw-r--r--test/typeparam/issue48602.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/typeparam/issue48602.go b/test/typeparam/issue48602.go
new file mode 100644
index 0000000000..53ce20e6ea
--- /dev/null
+++ b/test/typeparam/issue48602.go
@@ -0,0 +1,25 @@
+// run -gcflags=-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 main
+
+type Iterator[T any] interface {
+ Iterate(fn T)
+}
+
+type IteratorFunc[T any] func(fn T)
+
+func (f IteratorFunc[T]) Iterate(fn T) {
+ f(fn)
+}
+
+func Foo[R any]() {
+ var _ Iterator[R] = IteratorFunc[R](nil)
+}
+
+func main() {
+ Foo[int]()
+}