summaryrefslogtreecommitdiffstats
path: root/test/fixedbugs/issue59338.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/fixedbugs/issue59338.go')
-rw-r--r--test/fixedbugs/issue59338.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/fixedbugs/issue59338.go b/test/fixedbugs/issue59338.go
new file mode 100644
index 0000000..8ba3fd2
--- /dev/null
+++ b/test/fixedbugs/issue59338.go
@@ -0,0 +1,37 @@
+// run
+
+// Copyright 2023 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.
+
+// Smoke test for reverse type inference.
+// The type checker has more expansive tests.
+
+package main
+
+func main() {
+ var f1 func(int) int
+ f1 = g1
+ if f1(1) != g1(1) {
+ panic(1)
+ }
+
+ var f2 func(int) string = g2
+ if f2(2) != "" {
+ panic(2)
+ }
+
+ if g3(g1, 3) != g1(3) {
+ panic(3)
+ }
+
+ if g4(g2, 4) != "" {
+ panic(4)
+ }
+}
+
+func g1[P any](x P) P { return x }
+func g2[P, Q any](x P) Q { var q Q; return q }
+
+func g3(f1 func(int) int, x int) int { return f1(x) }
+func g4(f2 func(int) string, x int) string { return f2(x) }