// Make a new internal function.
fn, formalParams, formalResults := startClosure(pos, outer, typ)
+ fn.SetWrapper(true) // See issue 52237
// This is the dictionary we want to use.
// It may be a constant, it may be the outer functions's dictionary, or it may be
want := `--- FAIL: Test (?s)
helperfuncs_test.go:12: 0
-helperfuncs_test.go:33: 1
+helperfuncs_test.go:40: 1
helperfuncs_test.go:21: 2
-helperfuncs_test.go:35: 3
-helperfuncs_test.go:42: 4
+helperfuncs_test.go:42: 3
+helperfuncs_test.go:49: 4
--- FAIL: Test/sub (?s)
-helperfuncs_test.go:45: 5
+helperfuncs_test.go:52: 5
helperfuncs_test.go:21: 6
-helperfuncs_test.go:44: 7
-helperfuncs_test.go:56: 8
+helperfuncs_test.go:51: 7
+helperfuncs_test.go:63: 8
--- FAIL: Test/sub2 (?s)
-helperfuncs_test.go:71: 11
-helperfuncs_test.go:75: recover 12
-helperfuncs_test.go:64: 9
-helperfuncs_test.go:60: 10
+helperfuncs_test.go:78: 11
+helperfuncs_test.go:82: recover 12
+helperfuncs_test.go:84: GenericFloat64
+helperfuncs_test.go:85: GenericInt
+helperfuncs_test.go:71: 9
+helperfuncs_test.go:67: 10
`
lines := strings.Split(buf.String(), "\n")
durationRE := regexp.MustCompile(`\(.*\)$`)
helper(t, msg)
}
+func genericHelper[G any](t *T, msg string) {
+ t.Helper()
+ t.Error(msg)
+}
+
+var genericIntHelper = genericHelper[int]
+
func testHelper(t *T) {
// Check combinations of directly and indirectly
// calling helper functions.
// Check that helper-ness propagates up through panic/recover.
// See https://golang.org/issue/31154.
recoverHelper(t, "12")
+
+ genericHelper[float64](t, "GenericFloat64")
+ genericIntHelper(t, "GenericInt")
}
func parallelTestHelper(t *T) {