PLC-lang/rusty

Evaluate all array elements before returning an overflow error

Aberta

#872 aberto em 12 de jun. de 2023

 (0 comentário) (0 reação) (0 responsável)Rust (71 forks)auto 404
good first issuelow-priority

Métricas do repositório

Stars
 (351 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

Overflow checks for arrays currently stop evaluating after the first element that overflows, e.g.

FUNCTION main : DINT
  VAR
    arr : ARRAY[0..4] OF UDINT := [-1, -2, -3, 4, -5];
  END_VAR
END_FUNCTION

will return

error: This will overflow for type UDINT
  ┌─ target/demo.st:3:36
  │
3 │     arr : ARRAY[0..4] OF UDINT := [-1, -2, -3, 4, -5];
  │                                    ^^ This will overflow for type UDINT

Instead of only reporting -1 here, one would expect to also receive an error message for -2, -3 and -5. Fixing this will require some tweaks in the evalute_with_target_hint function, more specifically this line https://github.com/PLC-lang/rusty/blob/c33bc5f04dcf9294f31920c961eb5050362f15a8/src/resolver/const_evaluator.rs#L341

Guia do colaborador