// errorcheck | |
// Copyright 2009 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. | |
// Verify compiler complains about missing implicit methods. | |
// Does not compile. | |
package main | |
type T int | |
func (t T) V() | |
func (t *T) P() | |
type V interface { | |
V() | |
} | |
type P interface { | |
P() | |
V() | |
} | |
type S struct { | |
T | |
} | |
type SP struct { | |
*T | |
} | |
func main() { | |
var t T | |
var v V | |
var p P | |
var s S | |
var sp SP | |
v = t | |
p = t // ERROR "does not implement|requires a pointer|cannot use" | |
_, _ = v, p | |
v = &t | |
p = &t | |
_, _ = v, p | |
v = s | |
p = s // ERROR "does not implement|requires a pointer|cannot use" | |
_, _ = v, p | |
v = &s | |
p = &s | |
_, _ = v, p | |
v = sp | |
p = sp // no error! | |
_, _ = v, p | |
v = &sp | |
p = &sp | |
_, _ = v, p | |
} |