checker: check method call argument type mismatch (#14496)
parent
86ba683536
commit
880223c2dd
|
@ -1461,12 +1461,10 @@ pub fn (mut c Checker) method_call(mut node ast.CallExpr) ast.Type {
|
|||
continue
|
||||
}
|
||||
}
|
||||
if got_arg_typ != ast.void_type {
|
||||
c.error('$err.msg() in argument ${i + 1} to `${left_sym.name}.$method_name`',
|
||||
arg.pos)
|
||||
}
|
||||
}
|
||||
}
|
||||
if method.is_unsafe && !c.inside_unsafe {
|
||||
c.warn('method `${left_sym.name}.$method_name` must be called from an `unsafe` block',
|
||||
node.pos)
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
vlib/v/checker/tests/method_call_arg_mismatch.vv:9:10: error: `baz()` (no value) used as value in argument 1 to `Foo.bar`
|
||||
7 | fn main() {
|
||||
8 | foo := Foo{}
|
||||
9 | foo.bar(baz())
|
||||
| ~~~~~
|
||||
10 | }
|
|
@ -0,0 +1,10 @@
|
|||
struct Foo {}
|
||||
|
||||
fn (f Foo) bar(baz fn ()) {}
|
||||
|
||||
fn baz() {}
|
||||
|
||||
fn main() {
|
||||
foo := Foo{}
|
||||
foo.bar(baz())
|
||||
}
|
Loading…
Reference in New Issue