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
|
||||
* 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:
|
||||
|
||||
1. Parsen
|
||||
@ -53,19 +64,4 @@
|
||||
5. Einsetzen eines TypeInsertSet (optional)
|
||||
1. Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -170,15 +170,17 @@ class GenericVarPatch {
|
||||
public void removeUnusedTPHs(Vector<TypePlaceholder> usedTPHs) {
|
||||
this.usedTPHs = usedTPHs;
|
||||
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);
|
||||
}
|
||||
}
|
||||
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)
|
||||
|
||||
|
||||
/*
|
||||
// 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()){
|
||||
|
Loading…
Reference in New Issue
Block a user