jens-maus / RaspberryMatic

:house: A feature-rich but lightweight, buildroot-based Linux operating system alternative for your CloudFree CCU3/ELV-Charly 'homematicIP CCU' IoT smarthome central. Running as a pure virtual appliance (ProxmoxVE, Home Assistant, LXC, Docker/OCI, Kubernetes/K8s, etc.) on a dedicated embedded device (RaspberryPi, etc.) or generic x86/ARM hardware.
https://raspberrymatic.de
Apache License 2.0
1.55k stars 190 forks source link

ReGaHss: elseif() innerhalb while() #404

Closed jm1536 closed 5 years ago

jm1536 commented 6 years ago

Das elseif() funktioniert nicht innerhalb einer while() Schleife. Die Schleife wird nach dem 1. elseif abgebrochen. Ob auch foreach() betroffen ist, habe ich nicht überprüft.

Skript zum Nachstellen des Fehlers:

WriteLine("elseif funktioniert:");
integer i = 2;
WriteLine(i);
if     (i == 0) { WriteLine("i=0"); }
elseif (i == 1) { WriteLine("i=1"); }
elseif (i == 2) { WriteLine("i=2"); }
elseif (i == 3) { WriteLine("i=3"); }
else            { WriteLine("i=?"); }

WriteLine("elseif innerhalb while funktioniert nicht:");
integer i = 0;
while (i < 10) {
    WriteLine(i);
    if     (i == 0) { WriteLine("i=0"); }
    elseif (i == 1) { WriteLine("i=1"); }
    elseif (i == 2) { WriteLine("i=2"); }
    elseif (i == 3) { WriteLine("i=3"); }
    else            { WriteLine("i=?"); }
    i = i + 1;
}

WriteLine("end");

Ausgabe:

elseif funktioniert: 2 i=2 elseif innerhalb while funktioniert nicht: 0 i=0 1 i=1 end

Erwartete Ausgabe: elseif funktioniert: 2 i=2 elseif innerhalb while funktioniert nicht: 0 i=0 1 i=1 2 i=2 3 i=3 4 i=? ... 9 i=? end

  • Version [RaspberryMatic 2.35.16.20180826]
  • Hardware [RaspberryPi3B+, RPI-RF-MOD]
jens-maus commented 6 years ago

Please note that the automatic ReGaHss tests also show/demonstrate this issue: https://travis-ci.org/hobbyquaker/occu-test/jobs/447049093#L1119