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