| Basic tests of inlining by literalization. |
| |
| The use of defer forces literalization. |
| |
| recover() is an example of a function with effects, |
| defeating elimination of parameter x; but parameter |
| y is eliminated by substitution. |
| |
| -- go.mod -- |
| module testdata |
| go 1.12 |
| |
| -- a/a1.go -- |
| package a |
| |
| func _() { |
| add(recover().(int), 2) //@ inline(re"add", add1) |
| } |
| |
| func add(x, y int) int { defer print(); return x + y } |
| |
| -- add1 -- |
| package a |
| |
| func _() { |
| func() int { var x int = recover().(int); defer print(); return x + 2 }() //@ inline(re"add", add1) |
| } |
| |
| func add(x, y int) int { defer print(); return x + y } |