PLC-lang/rusty

Enhance missing argument validation

オープン

#1,367 opened on 2024/11/22

 (2 件のコメント) (0 件のリアクション) (0 人の担当者)Rust (71 件のフォーク)auto 404
enhancementgood first issuevalidation

Repository metrics

Stars
 (351 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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

コントリビューターガイド