1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
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)) }
|