blob: 37f8f7d8127dc79d968f217d9f14ed57d4541134 [file] [log] [blame]
This test checks that parameter shadowing is avoided for substitution groups,
as well as the examples of recursive pruning of these groups based on falcon
and effects analysis.
-- go.mod --
module testdata
go 1.20
-- falcon.go --
package a
var a [3]int
func falcon(x, y, z int) {
_ = x + a[y+z]
}
func _() {
var y int
const x, z = 1, 2
falcon(y, x, z) //@ inline(re"falcon", falcon)
}
-- falcon --
package a
var a [3]int
func falcon(x, y, z int) {
_ = x + a[y+z]
}
func _() {
var y int
const x, z = 1, 2
{
var x, y, z int = y, x, z
_ = x + a[y+z]
} //@ inline(re"falcon", falcon)
}
-- effects.go --
package a
func effects(w, x, y, z int) {
_ = x + w + y + z
}
func _() {
v := 0
w := func() int { v++; return 0 }
x := func() int { v++; return 0 }
y := func() int { v++; return 0 }
effects(x(), w(), y(), x()) //@ inline(re"effects", effects)
}
-- effects --
package a
func effects(w, x, y, z int) {
_ = x + w + y + z
}
func _() {
v := 0
w := func() int { v++; return 0 }
x := func() int { v++; return 0 }
y := func() int { v++; return 0 }
{
var w, x, y, z int = x(), w(), y(), x()
_ = x + w + y + z
} //@ inline(re"effects", effects)
}
-- negative.go --
package a
func _() {
i := -1
if negative1(i, i) { //@ inline(re"negative1", negative1)
i := 0
_ = i
}
}
func negative1(i, j int) bool {
return negative2(j, i)
}
func negative2(i, j int) bool {
return i < 0
}
-- negative1 --
package a
func _() {
i := -1
if negative2(i, i) { //@ inline(re"negative1", negative1)
i := 0
_ = i
}
}
func negative1(i, j int) bool {
return negative2(j, i)
}
func negative2(i, j int) bool {
return i < 0
}