Currently we have two different error messages for missing arguments, either a
"Argument <name> is missing" or a
"this POU takes 1 argument but 0 arguments were supplied"
A better approach would be to merge both these validations into one, displaying something along "Argument(s) are missing"
FUNCTION_BLOCK foo
VAR_INPUT
x : DINT := 34;
END_VAR
METHOD bar
VAR_INPUT
x : DINT := 34;
END_VAR
END_METHOD
END_FUNCTION_BLOCK
FUNCTION baz
VAR_INPUT
x : DINT := 34;
END_VAR
END_FUNCTION
FUNCTION main : DINT
VAR
fb: foo;
END_VAR
fb.bar();
baz();
END_FUNCTION
Both the calls to fb.bar and baz have the same error, yet yield different diagnostics:
error[E030]: Argument `x` is missing
┌─ target/demo.st:22:5
│
22 │ fb.bar();
│ ^^^^^^ Argument `x` is missing
error[E032]: this POU takes 1 argument but 0 arguments were supplied
┌─ target/demo.st:23:5
│
23 │ baz();
│ ^^^ this POU takes 1 argument but 0 arguments were supplied
Compilation aborted due to critical errors.
Currently we have two different error messages for missing arguments, either a
<name>
is missing" or aA better approach would be to merge both these validations into one, displaying something along "Argument(s)
are missing"
Both the calls to
fb.bar
andbaz
have the same error, yet yield different diagnostics:Originally posted by @mhasel in https://github.com/PLC-lang/rusty/issues/1364#issuecomment-2488507797