
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)
