|  | // errorcheck | 
|  |  | 
|  | // Copyright 2020 The Go Authors. All rights reserved.  Use of this | 
|  | // source code is governed by a BSD-style license that can be found in | 
|  | // the LICENSE file. | 
|  |  | 
|  | package p | 
|  |  | 
|  | type T int | 
|  |  | 
|  | func (T) Mv()  {} | 
|  | func (*T) Mp() {} | 
|  |  | 
|  | type P1 struct{ T } | 
|  | type P2 struct{ *T } | 
|  | type P3 *struct{ T } | 
|  | type P4 *struct{ *T } | 
|  |  | 
|  | func _() { | 
|  | { | 
|  | var p P1 | 
|  | p.Mv() | 
|  | (&p).Mv() | 
|  | (*&p).Mv() | 
|  | p.Mp() | 
|  | (&p).Mp() | 
|  | (*&p).Mp() | 
|  | } | 
|  | { | 
|  | var p P2 | 
|  | p.Mv() | 
|  | (&p).Mv() | 
|  | (*&p).Mv() | 
|  | p.Mp() | 
|  | (&p).Mp() | 
|  | (*&p).Mp() | 
|  | } | 
|  | { | 
|  | var p P3 | 
|  | p.Mv()     // ERROR "undefined" | 
|  | (&p).Mv()  // ERROR "undefined" | 
|  | (*&p).Mv() // ERROR "undefined" | 
|  | (**&p).Mv() | 
|  | (*p).Mv() | 
|  | (&*p).Mv() | 
|  | p.Mp()     // ERROR "undefined" | 
|  | (&p).Mp()  // ERROR "undefined" | 
|  | (*&p).Mp() // ERROR "undefined" | 
|  | (**&p).Mp() | 
|  | (*p).Mp() | 
|  | (&*p).Mp() | 
|  | } | 
|  | { | 
|  | var p P4 | 
|  | p.Mv()     // ERROR "undefined" | 
|  | (&p).Mv()  // ERROR "undefined" | 
|  | (*&p).Mv() // ERROR "undefined" | 
|  | (**&p).Mv() | 
|  | (*p).Mv() | 
|  | (&*p).Mv() | 
|  | p.Mp()     // ERROR "undefined" | 
|  | (&p).Mp()  // ERROR "undefined" | 
|  | (*&p).Mp() // ERROR "undefined" | 
|  | (**&p).Mp() | 
|  | (*p).Mp() | 
|  | (&*p).Mp() | 
|  | } | 
|  | } | 
|  |  | 
|  | func _() { | 
|  | type P5 struct{ T } | 
|  | type P6 struct{ *T } | 
|  | type P7 *struct{ T } | 
|  | type P8 *struct{ *T } | 
|  |  | 
|  | { | 
|  | var p P5 | 
|  | p.Mv() | 
|  | (&p).Mv() | 
|  | (*&p).Mv() | 
|  | p.Mp() | 
|  | (&p).Mp() | 
|  | (*&p).Mp() | 
|  | } | 
|  | { | 
|  | var p P6 | 
|  | p.Mv() | 
|  | (&p).Mv() | 
|  | (*&p).Mv() | 
|  | p.Mp() | 
|  | (&p).Mp() | 
|  | (*&p).Mp() | 
|  | } | 
|  | { | 
|  | var p P7 | 
|  | p.Mv()     // ERROR "undefined" | 
|  | (&p).Mv()  // ERROR "undefined" | 
|  | (*&p).Mv() // ERROR "undefined" | 
|  | (**&p).Mv() | 
|  | (*p).Mv() | 
|  | (&*p).Mv() | 
|  | p.Mp()     // ERROR "undefined" | 
|  | (&p).Mp()  // ERROR "undefined" | 
|  | (*&p).Mp() // ERROR "undefined" | 
|  | (**&p).Mp() | 
|  | (*p).Mp() | 
|  | (&*p).Mp() | 
|  | } | 
|  | { | 
|  | var p P8 | 
|  | p.Mv()     // ERROR "undefined" | 
|  | (&p).Mv()  // ERROR "undefined" | 
|  | (*&p).Mv() // ERROR "undefined" | 
|  | (**&p).Mv() | 
|  | (*p).Mv() | 
|  | (&*p).Mv() | 
|  | p.Mp()     // ERROR "undefined" | 
|  | (&p).Mp()  // ERROR "undefined" | 
|  | (*&p).Mp() // ERROR "undefined" | 
|  | (**&p).Mp() | 
|  | (*p).Mp() | 
|  | (&*p).Mp() | 
|  | } | 
|  | } |