2014-05-07 06:10:55 +00:00
|
|
|
|
# Typinferenz
|
|
|
|
|
|
|
|
|
|
## ResultSet
|
|
|
|
|
|
|
|
|
|
* Spezifisch f<>r jedes SourceFile (nicht f<>r jede Klasse)
|
|
|
|
|
* mehrere ResultSets pro Klasse
|
|
|
|
|
*
|
|
|
|
|
|
|
|
|
|
* Enth<74>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<65>ren
|
|
|
|
|
|
|
|
|
|
## Ablauf Typinferenz:
|
|
|
|
|
|
|
|
|
|
1. Parsen
|
|
|
|
|
* (Parser postProcessing)
|
|
|
|
|
2. 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<65>hrt und die Assumptions f<>r darunterliegende Knoten gebildet
|
|
|
|
|
*
|
|
|
|
|
3. Unifizierung
|
|
|
|
|
* wird im SourceFile aufgerufen
|
|
|
|
|
* unifiziert Constraints aller im SourceFile vorkommenden Klassen
|
|
|
|
|
|
|
|
|
|
4. Erstellen von TypeInsertSet
|
|
|
|
|
* Durchlaufen des Syntaxbaumes
|
|
|
|
|
* Jeder Knoten erstellt TypeInsertSets anhand des ResultSets.
|
2014-05-07 11:01:14 +00:00
|
|
|
|
* Bei Knoten, welche Generische Variablen beinhalten k<>nnen werden GenericTypeInsertPoints erstellt
|
|
|
|
|
|
2014-05-07 07:36:31 +00:00
|
|
|
|
5. Einsetzen eines TypeInsertSet (optional)
|
|
|
|
|
1. Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
|
|
|
|
|
2. Alle Abh<62>ngigkeiten dieser
|
2014-05-07 06:10:55 +00:00
|
|
|
|
|
|
|
|
|
|