| 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)) } | |