JanUlrich
24caa58998
Merge branch 'master' of ssh://gohorb.ba-horb.de/bahome/projekt/git/JavaCompilerCore
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
Description
Languages
Java
97.9%
ANTLR
2.1%