1.2 KiB
1.2 KiB
Typinferenz
ResultSet
-
Spezifisch für jedes SourceFile (nicht für jede Klasse)
-
mehrere ResultSets pro Klasse
-
Enthält:
- constraintPairs
- unifiedConstraints
TypeInsertSet
- Stellt die Typeinsetzung für eine der generierten Lösungen dar
- Setzt alle Typen und generischen Variablen ein, welche zu dieser Lösung gehören
Ablauf Typinferenz:
-
Parsen
- (Parser postProcessing)
-
Typinferenz
- Anfangspunkt SourceFile
- löst geparste Typen zu richtigen Typen auf (RefTypes, GenericVar)
- setzt TPHs ein
- bildet Constraints, welche in ResultSet gesammelt werden. ResultSet wird durch Syntaxbaum gereicht.
- Assumptions generieren
- Wird im Syntaxbaum für jeden Knoten ausgeführt und die Assumptions für darunterliegende Knoten gebildet
-
Unifizierung
- wird im SourceFile aufgerufen
- unifiziert Constraints aller im SourceFile vorkommenden Klassen
-
Erstellen von TypeInsertSet
- Durchlaufen des Syntaxbaumes
- Jeder Knoten erstellt TypeInsertSets anhand des ResultSets.
- Bei Knoten, welche Generische Variablen beinhalten können werden GenericTypeInsertPoints erstellt
-
Einsetzen eines TypeInsertSet (optional)
- Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
- Alle Abhängigkeiten dieser