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