forked from JavaTX/JavaCompilerCore
Doku erweitert
This commit is contained in:
parent
e8538be1c2
commit
90e4c3bc96
@ -29,6 +29,17 @@
|
|||||||
* Stellt die Typeinsetzung für eine der generierten Lösungen dar
|
* 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
|
* Setzt alle Typen und generischen Variablen ein, welche zu dieser Lösung gehören
|
||||||
|
|
||||||
|
### Einsetzen von Generischen Variablen
|
||||||
|
Die einzusetzenden Generischen Variablen werden erst beim Einsetzen eines Typs generiert.
|
||||||
|
|
||||||
|
* Ablauf:
|
||||||
|
* 1. Alle TypePlaceholder im einzusetzenden Typ ermitteln.
|
||||||
|
* 2. Alle Constraints die mit diesen TPHs zusammenhängen ermitteln (Das kann möglicherweise wegfallen)
|
||||||
|
* 3. Alle TPHs, aus Schritt 1 und 2 zusammenfügen.
|
||||||
|
* 4. Kontrollieren, welche TPHs in dem InsertKontext noch nicht bekannt sind.
|
||||||
|
* 5. Alle Unbekannten TPHs herausfiltern (von den Pairs nur TA2)
|
||||||
|
* 6. Alle unbekannten TPHs + Pairs als GenericTypeInsertPoint deklarieren.
|
||||||
|
|
||||||
## Ablauf Typinferenz:
|
## Ablauf Typinferenz:
|
||||||
|
|
||||||
1. Parsen
|
1. Parsen
|
||||||
@ -53,19 +64,4 @@
|
|||||||
5. Einsetzen eines TypeInsertSet (optional)
|
5. Einsetzen eines TypeInsertSet (optional)
|
||||||
1. Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
|
1. Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
|
||||||
2. Alle Abhängigkeiten dieser
|
2. Alle Abhängigkeiten dieser
|
||||||
|
|
||||||
# Typinferenz für Java 8
|
|
||||||
|
|
||||||
## Programmablauf
|
|
||||||
|
|
||||||
1. SourceFile parst die Java-Dateien
|
|
||||||
2. SourceFile erstellt die Basic/Global Assumptions
|
|
||||||
3. Das Globale AssumptionSet wird anschließend jeder Klasse im Syntaxbaum mit dem TRProg aufruf übergeben
|
|
||||||
4. Jede Klasse verwaltet lokale Variablen in ihrem eigenen AssumptionSet. Das Globale ist Klassenübergreifend und jede AssumptionType darf darin nur einmalig gesetzt werden.
|
|
||||||
5. Haben alle Klassen ihrer Constraints erstellt können diese Unifiziert werden.
|
|
||||||
|
|
||||||
## Overloading
|
|
||||||
|
|
||||||
* Die Overloading Klasse generiert Constraints aus einem Methodenaufruf.
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -105,7 +105,6 @@ public class ResultSet implements Iterable<Pair> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,15 +170,17 @@ class GenericVarPatch {
|
|||||||
public void removeUnusedTPHs(Vector<TypePlaceholder> usedTPHs) {
|
public void removeUnusedTPHs(Vector<TypePlaceholder> usedTPHs) {
|
||||||
this.usedTPHs = usedTPHs;
|
this.usedTPHs = usedTPHs;
|
||||||
return;
|
return;
|
||||||
/*
|
|
||||||
for(TypePlaceholder tph : usedTPHs){
|
|
||||||
//Zuerst alle extends Typen kontrollieren und entfernen:
|
|
||||||
for(GenericVarExtendsDeclarationPatch p : this.genericVarExtendDeclarations){
|
|
||||||
if(p.definesGenericVar(tph))return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for(TypePlaceholder tph : usedTPHs){
|
||||||
|
//Zuerst alle extends Typen kontrollieren und entfernen:
|
||||||
|
for(GenericVarExtendsDeclarationPatch p : this.genericVarExtendDeclarations){
|
||||||
|
if(p.definesGenericVar(tph))return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,7 +92,15 @@ public class TypeInsertSet {
|
|||||||
allTPHs.add(tph);
|
allTPHs.add(tph);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for(Pair pair : pairs)
|
||||||
|
for(TypePlaceholder tph : pair.getTypePlaceholder()){
|
||||||
|
if(!allTPHs.contains(tph)){
|
||||||
|
allTPHs.add(tph);
|
||||||
|
}
|
||||||
|
}
|
||||||
//TODO: Schritt 4 (Es wird nicht kontrolliert, ob der TPH in dem Kontext schon bekannt ist)
|
//TODO: Schritt 4 (Es wird nicht kontrolliert, ob der TPH in dem Kontext schon bekannt ist)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// und Schritt 5: (Es werden nur die TPHs übernommen, welche noch nicht in den involvedTPHs vorkommen)
|
// und Schritt 5: (Es werden nur die TPHs übernommen, welche noch nicht in den involvedTPHs vorkommen)
|
||||||
for(Pair pair : pairs)for(Type t : pair.getTypes())for(TypePlaceholder tph : t.getInvolvedTypePlaceholder()){
|
for(Pair pair : pairs)for(Type t : pair.getTypes())for(TypePlaceholder tph : t.getInvolvedTypePlaceholder()){
|
||||||
|
Loading…
Reference in New Issue
Block a user