Russ Cox | 57eb06f | 2012-02-16 23:51:04 -0500 | [diff] [blame] | 1 | // errorcheck |
Russ Cox | d289e63 | 2008-11-04 09:45:27 -0800 | [diff] [blame] | 2 | |
| 3 | // Copyright 2009 The Go Authors. All rights reserved. |
| 4 | // Use of this source code is governed by a BSD-style |
| 5 | // license that can be found in the LICENSE file. |
| 6 | |
Rob Pike | 501f0b5 | 2012-02-23 18:47:26 +1100 | [diff] [blame] | 7 | // Verify that pointers and interface types cannot be method receivers. |
| 8 | // Does not compile. |
| 9 | |
Russ Cox | d289e63 | 2008-11-04 09:45:27 -0800 | [diff] [blame] | 10 | package main |
| 11 | |
Russ Cox | 00ffd59 | 2010-09-28 13:43:50 -0400 | [diff] [blame] | 12 | type T struct { |
| 13 | a int |
| 14 | } |
Russ Cox | 839a684 | 2009-01-20 14:40:40 -0800 | [diff] [blame] | 15 | type P *T |
| 16 | type P1 *T |
Russ Cox | d289e63 | 2008-11-04 09:45:27 -0800 | [diff] [blame] | 17 | |
Ian Lance Taylor | 9169c27 | 2011-09-21 17:25:48 -0700 | [diff] [blame] | 18 | func (p P) val() int { return 1 } // ERROR "receiver.* pointer|invalid pointer or interface receiver" |
| 19 | func (p *P1) val() int { return 1 } // ERROR "receiver.* pointer|invalid pointer or interface receiver" |
Russ Cox | 4684df5 | 2011-04-25 17:16:44 -0400 | [diff] [blame] | 20 | |
| 21 | type I interface{} |
| 22 | type I1 interface{} |
| 23 | |
Rémy Oudompheng | a9e119a | 2013-08-29 10:00:58 +0200 | [diff] [blame] | 24 | func (p I) val() int { return 1 } // ERROR "receiver.*interface|invalid pointer or interface receiver" |
Ian Lance Taylor | 9169c27 | 2011-09-21 17:25:48 -0700 | [diff] [blame] | 25 | func (p *I1) val() int { return 1 } // ERROR "receiver.*interface|invalid pointer or interface receiver" |
Russ Cox | 00ffd59 | 2010-09-28 13:43:50 -0400 | [diff] [blame] | 26 | |
| 27 | type Val interface { |
| 28 | val() int |
| 29 | } |
| 30 | |
| 31 | var _ = (*Val).val // ERROR "method" |
Russ Cox | bee2d5b | 2010-09-30 14:59:41 -0400 | [diff] [blame] | 32 | |
| 33 | var v Val |
| 34 | var pv = &v |
| 35 | |
Rémy Oudompheng | a9e119a | 2013-08-29 10:00:58 +0200 | [diff] [blame] | 36 | var _ = pv.val() // ERROR "method" |
| 37 | var _ = pv.val // ERROR "method" |