| Tests of reduction of calls to multi-statement bodies. | |
| a1: reduced to a block with a parameter binding decl. | |
| (Parameter x can't be substituted by z without a shadowing conflict.) | |
| a2: reduced with parameter substitution (no shadowing). | |
| a3: literalized, because of the return statement. | |
| -- go.mod -- | |
| module testdata | |
| go 1.12 | |
| -- a/a1.go -- | |
| package a | |
| func _() { | |
| z := 1 | |
| f(z, 2) //@ inline(re"f", out1) | |
| } | |
| func f(x, y int) { | |
| z := 1 | |
| print(x + y + z) | |
| } | |
| -- out1 -- | |
| package a | |
| func _() { | |
| z := 1 | |
| { | |
| x := z | |
| z := 1 | |
| print(x + 2 + z) | |
| } //@ inline(re"f", out1) | |
| } | |
| func f(x, y int) { | |
| z := 1 | |
| print(x + y + z) | |
| } | |
| -- a/a2.go -- | |
| package a | |
| func _() { | |
| a := 1 | |
| f(a, 2) //@ inline(re"f", out2) | |
| } | |
| -- out2 -- | |
| package a | |
| func _() { | |
| a := 1 | |
| z := 1 | |
| print(a + 2 + z) //@ inline(re"f", out2) | |
| } | |
| -- a/a3.go -- | |
| package a | |
| func _() { | |
| a := 1 | |
| g(a, 2) //@ inline(re"g", out3) | |
| } | |
| func g(x, y int) int { | |
| z := 1 | |
| return x + y + z | |
| } | |
| -- out3 -- | |
| package a | |
| func _() { | |
| a := 1 | |
| func() int { z := 1; return a + 2 + z }() //@ inline(re"g", out3) | |
| } | |
| func g(x, y int) int { | |
| z := 1 | |
| return x + y + z | |
| } |