golang.org/x/tools@v0.21.0/internal/refactor/inline/testdata/method.txtar (about)

     1  Test of inlining a method call.
     2  
     3  The call to (*T).g0 implicitly takes the address &x, and
     4  the call to T.h implictly dereferences the argument *ptr.
     5  
     6  The f1/g1 methods have parameters, exercising the
     7  splicing of the receiver into the parameter list.
     8  Notice that the unnamed parameters become named.
     9  
    10  -- go.mod --
    11  module testdata
    12  go 1.12
    13  
    14  -- a/f0.go --
    15  package a
    16  
    17  type T int
    18  
    19  func (recv T) f0() { println(recv) }
    20  
    21  func _(x T) {
    22  	x.f0() //@ inline(re"f0", f0)
    23  }
    24  
    25  -- f0 --
    26  package a
    27  
    28  type T int
    29  
    30  func (recv T) f0() { println(recv) }
    31  
    32  func _(x T) {
    33  	println(x) //@ inline(re"f0", f0)
    34  }
    35  
    36  -- a/g0.go --
    37  package a
    38  
    39  func (recv *T) g0() { println(recv) }
    40  
    41  func _(x T) {
    42  	x.g0() //@ inline(re"g0", g0)
    43  }
    44  
    45  -- g0 --
    46  package a
    47  
    48  func (recv *T) g0() { println(recv) }
    49  
    50  func _(x T) {
    51  	println(&x) //@ inline(re"g0", g0)
    52  }
    53  
    54  -- a/f1.go --
    55  package a
    56  
    57  func (recv T) f1(int, int) { println(recv) }
    58  
    59  func _(x T) {
    60  	x.f1(1, 2) //@ inline(re"f1", f1)
    61  }
    62  
    63  -- f1 --
    64  package a
    65  
    66  func (recv T) f1(int, int) { println(recv) }
    67  
    68  func _(x T) {
    69  	println(x) //@ inline(re"f1", f1)
    70  }
    71  
    72  -- a/g1.go --
    73  package a
    74  
    75  func (recv *T) g1(int, int) { println(recv) }
    76  
    77  func _(x T) {
    78  	x.g1(1, 2) //@ inline(re"g1", g1)
    79  }
    80  
    81  -- g1 --
    82  package a
    83  
    84  func (recv *T) g1(int, int) { println(recv) }
    85  
    86  func _(x T) {
    87  	println(&x) //@ inline(re"g1", g1)
    88  }
    89  
    90  -- a/h.go --
    91  package a
    92  
    93  func (T) h() int { return 1 }
    94  
    95  func _() {
    96  	var ptr *T
    97  	ptr.h() //@ inline(re"h", h)
    98  }
    99  
   100  -- h --
   101  package a
   102  
   103  func (T) h() int { return 1 }
   104  
   105  func _() {
   106  	var ptr *T
   107  	var _ T = *ptr
   108  	_ = 1 //@ inline(re"h", h)
   109  }
   110  
   111  -- a/i.go --
   112  package a
   113  
   114  func (T) i() int { return 1 }
   115  
   116  func _() {
   117  	(*T).i(nil) //@ inline(re"i", i)
   118  }
   119  
   120  -- i --
   121  package a
   122  
   123  func (T) i() int { return 1 }
   124  
   125  func _() {
   126  	_ = 1 //@ inline(re"i", i)
   127  }