| 
									
										
										
										
											2012-02-16 23:50:37 -05:00
										 |  |  | // errorcheck | 
					
						
							| 
									
										
										
										
											2009-05-21 13:46:20 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Copyright 2009 The Go Authors. All rights reserved. | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | // Use of this source code is governed by a BSD-style | 
					
						
							|  |  |  | // license that can be found in the LICENSE file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-12 16:09:47 -07:00
										 |  |  | // Error messages about missing implicit methods. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type T int | 
					
						
							| 
									
										
										
										
											2010-06-08 18:50:02 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | func (t T) V() | 
					
						
							|  |  |  | func (t *T) P() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-08 18:50:02 -07:00
										 |  |  | type V interface { | 
					
						
							|  |  |  | 	V() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | type P interface { | 
					
						
							|  |  |  | 	P() | 
					
						
							|  |  |  | 	V() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-08 18:50:02 -07:00
										 |  |  | type S struct { | 
					
						
							|  |  |  | 	T | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | type SP struct { | 
					
						
							|  |  |  | 	*T | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							| 
									
										
										
										
											2010-06-08 18:50:02 -07:00
										 |  |  | 	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" | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							|  |  |  | 	v = &t | 
					
						
							|  |  |  | 	p = &t | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v = s | 
					
						
							|  |  |  | 	p = s // ERROR "does not implement|requires a pointer" | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							|  |  |  | 	v = &s | 
					
						
							|  |  |  | 	p = &s | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	v = sp | 
					
						
							|  |  |  | 	p = sp // no error! | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							|  |  |  | 	v = &sp | 
					
						
							|  |  |  | 	p = &sp | 
					
						
							|  |  |  | 	_, _ = v, p | 
					
						
							| 
									
										
										
										
											2009-05-06 17:05:55 -07:00
										 |  |  | } |