| Test of inlining a method call. |
| |
| The call to (*T).g0 implicitly takes the address &x, and |
| the call to T.h implictly dereferences the argument *ptr. |
| |
| The f1/g1 methods have parameters, exercising the |
| splicing of the receiver into the parameter list. |
| Notice that the unnamed parameters become named. |
| |
| -- go.mod -- |
| module testdata |
| go 1.12 |
| |
| -- a/f0.go -- |
| package a |
| |
| type T int |
| |
| func (recv T) f0() { println(recv) } |
| |
| func _(x T) { |
| x.f0() //@ inline(re"f0", f0) |
| } |
| |
| -- f0 -- |
| package a |
| |
| type T int |
| |
| func (recv T) f0() { println(recv) } |
| |
| func _(x T) { |
| println(x) //@ inline(re"f0", f0) |
| } |
| |
| -- a/g0.go -- |
| package a |
| |
| func (recv *T) g0() { println(recv) } |
| |
| func _(x T) { |
| x.g0() //@ inline(re"g0", g0) |
| } |
| |
| -- g0 -- |
| package a |
| |
| func (recv *T) g0() { println(recv) } |
| |
| func _(x T) { |
| println(&x) //@ inline(re"g0", g0) |
| } |
| |
| -- a/f1.go -- |
| package a |
| |
| func (recv T) f1(int, int) { println(recv) } |
| |
| func _(x T) { |
| x.f1(1, 2) //@ inline(re"f1", f1) |
| } |
| |
| -- f1 -- |
| package a |
| |
| func (recv T) f1(int, int) { println(recv) } |
| |
| func _(x T) { |
| println(x) //@ inline(re"f1", f1) |
| } |
| |
| -- a/g1.go -- |
| package a |
| |
| func (recv *T) g1(int, int) { println(recv) } |
| |
| func _(x T) { |
| x.g1(1, 2) //@ inline(re"g1", g1) |
| } |
| |
| -- g1 -- |
| package a |
| |
| func (recv *T) g1(int, int) { println(recv) } |
| |
| func _(x T) { |
| println(&x) //@ inline(re"g1", g1) |
| } |
| |
| -- a/h.go -- |
| package a |
| |
| func (T) h() int { return 1 } |
| |
| func _() { |
| var ptr *T |
| ptr.h() //@ inline(re"h", h) |
| } |
| |
| -- h -- |
| package a |
| |
| func (T) h() int { return 1 } |
| |
| func _() { |
| var ptr *T |
| var _ T = *ptr |
| _ = 1 //@ inline(re"h", h) |
| } |
| |
| -- a/i.go -- |
| package a |
| |
| func (T) i() int { return 1 } |
| |
| func _() { |
| (*T).i(nil) //@ inline(re"i", i) |
| } |
| |
| -- i -- |
| package a |
| |
| func (T) i() int { return 1 } |
| |
| func _() { |
| _ = 1 //@ inline(re"i", i) |
| } |