Source file test/fixedbugs/issue43384.go

     1  // errorcheck
     2  
     3  // Copyright 2020 The Go Authors. All rights reserved.  Use of this
     4  // source code is governed by a BSD-style license that can be found in
     5  // the LICENSE file.
     6  
     7  package p
     8  
     9  type T int
    10  
    11  func (T) Mv()  {}
    12  func (*T) Mp() {}
    13  
    14  type P1 struct{ T }
    15  type P2 struct{ *T }
    16  type P3 *struct{ T }
    17  type P4 *struct{ *T }
    18  
    19  func _() {
    20  	{
    21  		var p P1
    22  		p.Mv()
    23  		(&p).Mv()
    24  		(*&p).Mv()
    25  		p.Mp()
    26  		(&p).Mp()
    27  		(*&p).Mp()
    28  	}
    29  	{
    30  		var p P2
    31  		p.Mv()
    32  		(&p).Mv()
    33  		(*&p).Mv()
    34  		p.Mp()
    35  		(&p).Mp()
    36  		(*&p).Mp()
    37  	}
    38  	{
    39  		var p P3
    40  		p.Mv()     // ERROR "undefined"
    41  		(&p).Mv()  // ERROR "undefined"
    42  		(*&p).Mv() // ERROR "undefined"
    43  		(**&p).Mv()
    44  		(*p).Mv()
    45  		(&*p).Mv()
    46  		p.Mp()     // ERROR "undefined"
    47  		(&p).Mp()  // ERROR "undefined"
    48  		(*&p).Mp() // ERROR "undefined"
    49  		(**&p).Mp()
    50  		(*p).Mp()
    51  		(&*p).Mp()
    52  	}
    53  	{
    54  		var p P4
    55  		p.Mv()     // ERROR "undefined"
    56  		(&p).Mv()  // ERROR "undefined"
    57  		(*&p).Mv() // ERROR "undefined"
    58  		(**&p).Mv()
    59  		(*p).Mv()
    60  		(&*p).Mv()
    61  		p.Mp()     // ERROR "undefined"
    62  		(&p).Mp()  // ERROR "undefined"
    63  		(*&p).Mp() // ERROR "undefined"
    64  		(**&p).Mp()
    65  		(*p).Mp()
    66  		(&*p).Mp()
    67  	}
    68  }
    69  
    70  func _() {
    71  	type P5 struct{ T }
    72  	type P6 struct{ *T }
    73  	type P7 *struct{ T }
    74  	type P8 *struct{ *T }
    75  
    76  	{
    77  		var p P5
    78  		p.Mv()
    79  		(&p).Mv()
    80  		(*&p).Mv()
    81  		p.Mp()
    82  		(&p).Mp()
    83  		(*&p).Mp()
    84  	}
    85  	{
    86  		var p P6
    87  		p.Mv()
    88  		(&p).Mv()
    89  		(*&p).Mv()
    90  		p.Mp()
    91  		(&p).Mp()
    92  		(*&p).Mp()
    93  	}
    94  	{
    95  		var p P7
    96  		p.Mv()     // ERROR "undefined"
    97  		(&p).Mv()  // ERROR "undefined"
    98  		(*&p).Mv() // ERROR "undefined"
    99  		(**&p).Mv()
   100  		(*p).Mv()
   101  		(&*p).Mv()
   102  		p.Mp()     // ERROR "undefined"
   103  		(&p).Mp()  // ERROR "undefined"
   104  		(*&p).Mp() // ERROR "undefined"
   105  		(**&p).Mp()
   106  		(*p).Mp()
   107  		(&*p).Mp()
   108  	}
   109  	{
   110  		var p P8
   111  		p.Mv()     // ERROR "undefined"
   112  		(&p).Mv()  // ERROR "undefined"
   113  		(*&p).Mv() // ERROR "undefined"
   114  		(**&p).Mv()
   115  		(*p).Mv()
   116  		(&*p).Mv()
   117  		p.Mp()     // ERROR "undefined"
   118  		(&p).Mp()  // ERROR "undefined"
   119  		(*&p).Mp() // ERROR "undefined"
   120  		(**&p).Mp()
   121  		(*p).Mp()
   122  		(&*p).Mp()
   123  	}
   124  }
   125  

View as plain text