| // errorcheck |
| |
| // Copyright 2014 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. |
| |
| // Issue 8385: provide a more descriptive error when a method expression |
| // is called without a receiver. |
| |
| package main |
| |
| type Fooer interface { |
| Foo(i, j int) |
| } |
| |
| func f(x int) { |
| } |
| |
| type I interface { |
| M(int) |
| } |
| type T struct{} |
| |
| func (t T) M(x int) { |
| } |
| |
| func g() func(int) |
| |
| func main() { |
| Fooer.Foo(5, 6) // ERROR "not enough arguments in call to method expression Fooer.Foo|incompatible type|not enough arguments" |
| |
| var i I |
| var t *T |
| |
| g()() // ERROR "not enough arguments in call to g\(\)|not enough arguments" |
| f() // ERROR "not enough arguments in call to f|not enough arguments" |
| i.M() // ERROR "not enough arguments in call to i\.M|not enough arguments" |
| I.M() // ERROR "not enough arguments in call to method expression I\.M|not enough arguments" |
| t.M() // ERROR "not enough arguments in call to t\.M|not enough arguments" |
| T.M() // ERROR "not enough arguments in call to method expression T\.M|not enough arguments" |
| (*T).M() // ERROR "not enough arguments in call to method expression \(\*T\)\.M|not enough arguments" |
| } |