Projektmodule und vollständiges TBC-Kompilat umsetzen und Change archivieren
This commit is contained in:
@@ -99,10 +99,16 @@ 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: Typisiertes HIR als Sema-Ausgabe
|
||||
Die semantische Analyse SHALL neben den Diagnosen einen typisierten,
|
||||
abgesenkten Zwischenbaum (HIR) liefern, der die Codegen-Eingabe bildet:
|
||||
@@ -259,6 +265,8 @@ 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 Steuerelement `Text9` enthält
|
||||
- **THEN** nennt die Diagnose `Text9` als unbekanntes Objekt statt „Type mismatch" zu melden
|
||||
@@ -275,6 +283,10 @@ er MUST NOT zu einer impliziten Variablen mit Punkt im Namen werden.
|
||||
- **WHEN** ein Modul `IF TYPEOF Ziel IS CommandButton THEN` enthä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
|
||||
|
||||
### Requirement: Bang-Operator neben dem SINGLE-Suffix
|
||||
Der Lexer SHALL `!` als Container-Operator erkennen, wenn ihm ein
|
||||
Bezeichner folgt, und andernfalls als Typsuffix für SINGLE. Beide Formen
|
||||
|
||||
Reference in New Issue
Block a user