| // 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() | |
| } | |
| } |