Verbesserung
Wichtig
Detail
Detail
Fehlerbehebung
Bei folgendem TL-Script scheitert bereits das Parsen:
switch (1) { 0: false; 1: true; }
Suchausdruck: Undefinierte Variable '<synthetic>'.
Während das gleiche mit switch (0) funktioniert. Bisherige Erkenntnisse:
- Es scheint für alle Zahlen != 0 zu scheitern.
- Weitere case-Statements zum Beispiel für 2 ändern nichts am Verhalten.
- Ein default-Statement ändert nichts am Verhalten.
- Ein anderer Ergebnis-Typ, wie zum Beispiel String statt Boolean, ändert nichts am Verhalten.
- Den Wert aus einer Variablen zu holen ändert nichts am Verhalten.
- Den Wert auf triviale Art auszurechnen (switch (10-9)) ändert nichts am Verhalten.
- Den Wert aus einem String zu parsen, lässt den Fehler verschwinden.
Es handelt sich um ein vereinfachtes Beispiel. Der Fehler trat auf, als ich in der Skript Konsole ein TL-Script Ausdruck bauen und testen wollte. Sobald ich das Eingabefeld der Skript Konsole verlasse, tritt obiger Fehler auf. Das Ausführen des Skriptes ist nicht notwendig.
Evaluation
Fehler im Constant-Folding des TL-Script Compilers. Problem tritt immer dann auf, wenn sich der Input des Switch-Blocks schon bei der Übersetzung auswerten lässt. Bei 0 tritt der Fehler in diesem konkreten Beispiel nur daher nicht zu Tage, weil dann der erste Zweig des Switch-Blocks gewählt wird.
Test
- test.com.top_logic.model.search.expr.TestSearchExpression.testSwitchLiteral()