cgen: check call argument on methods (#12965)
parent
3b5de71e60
commit
04be2465dc
|
@ -654,7 +654,14 @@ pub fn (mut c Checker) fn_call(mut node ast.CallExpr, mut continue_check &bool)
|
||||||
node.expected_arg_types << param.typ
|
node.expected_arg_types << param.typ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !c.pref.backend.is_js() && node.args.len > 0 && func.params.len == 0 {
|
||||||
|
c.error('too many arguments in call to `$func.name` (non-js backend: $c.pref.backend)',
|
||||||
|
node.pos)
|
||||||
|
}
|
||||||
for i, mut call_arg in node.args {
|
for i, mut call_arg in node.args {
|
||||||
|
if func.params.len == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
param := if func.is_variadic && i >= func.params.len - 1 {
|
param := if func.is_variadic && i >= func.params.len - 1 {
|
||||||
func.params[func.params.len - 1]
|
func.params[func.params.len - 1]
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
vlib/v/checker/tests/js_with_non_js_backend_too_many_arguments.vv:3:4: error: too many arguments in call to `JS.Foo.bar` (non-js backend: c)
|
||||||
|
1 | fn JS.Foo.bar() bool
|
||||||
|
2 |
|
||||||
|
3 | JS.Foo.bar(123)
|
||||||
|
| ~~~~~~~~~~~~
|
|
@ -0,0 +1,3 @@
|
||||||
|
fn JS.Foo.bar() bool
|
||||||
|
|
||||||
|
JS.Foo.bar(123)
|
Loading…
Reference in New Issue