blob: eec24b8e9deaff82fca4699e5c07dfe18a2394f0 [file] [log] [blame]
This test renames a receiver, type parameter, parameter or result var
whose name matches a package-level decl. Prior to go1.22, this used to
cause a spurious shadowing error because of an edge case in the
behavior of types.Scope for function parameters and results.
This is a regression test for issue #60752, a bug in the type checker.
-- flags --
-min_go=go1.22
-- go.mod --
module example.com
go 1.18
-- a/type.go --
package a
type t int
-- a/recv.go --
package a
func (v t) _() {} //@ rename("v", "t", recv)
-- a/param.go --
package a
func _(v t) {} //@ rename("v", "t", param)
-- a/result.go --
package a
func _() (v t) { return } //@ rename("v", "t", result)
-- a/typeparam.go --
package a
func _[v t]() {} //@ renameerr("v", "t", re"would shadow (.|\n)*type.go:3:6")
-- b/b.go --
package b
import _ "example.com/a"
-- @param/a/param.go --
@@ -3 +3 @@
-func _(v t) {} //@ rename("v", "t", param)
+func _(t t) {} //@ rename("v", "t", param)
-- @recv/a/recv.go --
@@ -3 +3 @@
-func (v t) _() {} //@ rename("v", "t", recv)
+func (t t) _() {} //@ rename("v", "t", recv)
-- @result/a/result.go --
@@ -3 +3 @@
-func _() (v t) { return } //@ rename("v", "t", result)
+func _() (t t) { return } //@ rename("v", "t", result)