2.6 KiB
MODIFIED Requirements
Requirement: Diagnostik mit Vorbild-Meldungen
Diagnosen SHALL exakte 1-basierte Quelltextpositionen (Zeile, Spalte) tragen; die Meldungstexte SHALL dem Katalog des Vorbilds folgen, wo eine Entsprechung existiert (z. B. „Type mismatch", „Duplicate definition", „Label not defined", „Subprogram not defined", „Overflow").
Bei Projekten und Includes SHALL jede Diagnose den ursprünglichen Dateinamen mit dessen physischer Zeile und Spalte tragen.
Scenario: Position in der Diagnose
- WHEN in Zeile 3 ein Typkonflikt auftritt
- THEN nennt die Diagnose Zeile 3 und die Spalte des Ausdrucks
Scenario: Include-Diagnose
- WHEN ein eingebundenes Include einen Typfehler enthält
- THEN nennt die Diagnose die Include-Datei und ihre eigene Quellposition
Requirement: Objektzugriffe in Grammatik und Semantik
Der Parser SHALL Punktpfade auf Formulare und Steuerelemente
(objekt.eigenschaft), den Container-Operator
form!steuerelement[.eigenschaft], IF TYPEOF ausdruck IS klasse, den
Metabefehl $FORM und die Datentypen FORM und CONTROL als
Parametertypen erkennen. Die Semantik SHALL Eigenschaften gegen die
Klasse des Objekts prüfen und ihren Typ bestimmen. Ein Punktpfad, dessen
Basis weder ein benutzerdefinierter Typ noch ein bekanntes Objekt ist,
MUST eine Diagnose erzeugen, die Basis und Eigenschaft namentlich nennt;
er MUST NOT zu einer impliziten Variablen mit Punkt im Namen werden.
Gleichnamige Steuerelemente unterschiedlicher Formulare SHALL im jeweiligen Formularnamensraum aufgelöst werden; die explizite Containerangabe SHALL vor der lokalen Namenssuche wirken.
Scenario: Unbekanntes Objekt wird benannt
- WHEN ein Modul
Text9.Text = "a"ohne SteuerelementText9enthält - THEN nennt die Diagnose
Text9als unbekanntes Objekt statt „Type mismatch" zu melden
Scenario: Unbekannte Eigenschaft wird benannt
- WHEN ein Modul
Text1.Farbe = 3enthält - THEN nennt die Diagnose
Farbeals unbekannte Eigenschaft vonTextBox
Scenario: Eigenschaftstyp wird geprüft
- WHEN ein Modul
Text1.Text = 5enthält - THEN meldet die Semantik einen Typkonflikt mit Nennung der Eigenschaft
Scenario: TYPEOF
- WHEN ein Modul
IF TYPEOF Ziel IS CommandButton THENenthält - THEN wird es übersetzt und die Klasse gegen die bekannten Steuerelementklassen geprüft
Scenario: Gleichnamige Controls verschiedener Formulare
- WHEN Form1 und Form2 jeweils Text1 enthalten und Form2!Text1.Text gelesen wird
- THEN wird Text1 in Form2 aufgelöst und das Programm übersetzt diagnosefrei