go/test/fixedbugs/issue59338.go
Matthew Dempsky 767fbe01ae cmd/compile: fix compilation of inferred type arguments
Previously, type arguments could only be inferred for generic
functions in call expressions, whereas with the reverse type inference
proposal they can now be inferred in assignment contexts too. As a
consequence, we now need to check Info.Instances to find the inferred
type for more cases now.

Updates #59338.
Fixes #59955.

Change-Id: I9b6465395869459c2387d0424febe7337b28b90e
Reviewed-on: https://go-review.googlesource.com/c/go/+/492455
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
2023-05-03 22:12:27 +00:00

37 lines
700 B
Go

// 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) }