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
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if got_arg_typ != ast.void_type {
|
|
||||||
c.error('$err.msg() in argument ${i + 1} to `${left_sym.name}.$method_name`',
|
c.error('$err.msg() in argument ${i + 1} to `${left_sym.name}.$method_name`',
|
||||||
arg.pos)
|
arg.pos)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if method.is_unsafe && !c.inside_unsafe {
|
if method.is_unsafe && !c.inside_unsafe {
|
||||||
c.warn('method `${left_sym.name}.$method_name` must be called from an `unsafe` block',
|
c.warn('method `${left_sym.name}.$method_name` must be called from an `unsafe` block',
|
||||||
node.pos)
|
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