PLC-lang/rusty
Evaluate all array elements before returning an overflow error
Ouverte
#872 ouverte le 12 juin 2023
good first issuelow-priority
Métriques du dépôt
- Stars
- (351 étoiles)
- Métriques de merge PR
- (Métriques PR en attente)
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