Doku erweitert

This commit is contained in:
JanUlrich 2015-03-05 13:56:42 +01:00
parent e8538be1c2
commit 90e4c3bc96
4 changed files with 30 additions and 25 deletions

View File

@ -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.

View File

@ -105,7 +105,6 @@ public class ResultSet implements Iterable<Pair> {
}
}
}
return ret;
}

View File

@ -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;
}
}
*/
}

View File

@ -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()){