| Test of inlining a method call. | |
| The call to (*T).g0 implicitly takes the address &x, and | |
| the call to T.h implicitly 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 | |
| _ = *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) | |
| } |