| Inlining an expression into an ExprStmt. |
| Call and receive expressions can be inlined directly |
| (though calls to only some builtins can be reduced). |
| All other expressions are inlined as "_ = expr". |
| |
| -- go.mod -- |
| module testdata |
| go 1.12 |
| |
| -- a/call.go -- |
| package a |
| |
| func _() { |
| call() //@ inline(re"call", call) |
| } |
| |
| func call() int { return recv() } |
| |
| -- call -- |
| package a |
| |
| func _() { |
| recv() //@ inline(re"call", call) |
| } |
| |
| func call() int { return recv() } |
| |
| -- a/recv.go -- |
| package a |
| |
| func _() { |
| recv() //@ inline(re"recv", recv) |
| } |
| |
| func recv() int { return <-(chan int)(nil) } |
| |
| -- recv -- |
| package a |
| |
| func _() { |
| <-(chan int)(nil) //@ inline(re"recv", recv) |
| } |
| |
| func recv() int { return <-(chan int)(nil) } |
| |
| -- a/constant.go -- |
| package a |
| |
| func _() { |
| constant() //@ inline(re"constant", constant) |
| } |
| |
| func constant() int { return 0 } |
| |
| -- constant -- |
| package a |
| |
| func _() { |
| _ = 0 //@ inline(re"constant", constant) |
| } |
| |
| func constant() int { return 0 } |
| |
| -- a/builtin.go -- |
| package a |
| |
| func _() { |
| builtin() //@ inline(re"builtin", builtin) |
| } |
| |
| func builtin() int { return len("") } |
| |
| -- builtin -- |
| package a |
| |
| func _() { |
| _ = len("") //@ inline(re"builtin", builtin) |
| } |
| |
| func builtin() int { return len("") } |
| |
| -- a/copy.go -- |
| package a |
| |
| func _() { |
| _copy() //@ inline(re"copy", copy) |
| } |
| |
| func _copy() int { return copy([]int(nil), []int(nil)) } |
| |
| -- copy -- |
| package a |
| |
| func _() { |
| copy([]int(nil), []int(nil)) //@ inline(re"copy", copy) |
| } |
| |
| func _copy() int { return copy([]int(nil), []int(nil)) } |
| |