Open volsa opened 6 days ago
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.
This commit introduces a validation which makes sure that
INPUT
andIN_OUT
arguments are present for methods and if not yields a diagnostic.