mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 16:50:58 +00:00 
			
		
		
		
	 7a1aa7dfaf
			
		
	
	
		7a1aa7dfaf
		
	
	
	
	
		
			
			With this CL, the first ~500 errorcheck tests pass when running go run run.go -v -G in the $GOROOT/test directory (the log output includes a few dozen tests that are currently skipped). Change-Id: I9eaa2319fb39a090df54f8699ddc29ffe58b1bf1 Reviewed-on: https://go-review.googlesource.com/c/go/+/274975 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			790 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			790 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // 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
 | |
| }
 |