PLC-lang/rusty

Enhance missing argument validation

Open

#1,367 opened on Nov 22, 2024

 (2 comments) (0 reactions) (0 assignees)Rust (71 forks)auto 404
enhancementgood first issuevalidation

Repository metrics

Stars
 (351 stars)
PR merge metrics
 (PR metrics pending)

Description

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) <list of names separated by a comma> 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.

Originally posted by @mhasel in https://github.com/PLC-lang/rusty/issues/1364#issuecomment-2488507797

Contributor guide