forked from JavaTX/JavaCompilerCore
FieldDeclaration wurde der Typ in der TYPE methode nicht angepasst. Fehler behoben
This commit is contained in:
parent
4e61ba736d
commit
dc6cd6cdd0
@ -4,6 +4,6 @@
|
||||
<classpathentry excluding=".classpath|.cvsignore|.externalToolBuilders/|.project|.settings/|Papers/|bin/|doc/|examples/|lib/|notizen/|src/|test/|tools/" including="log4j.xml" kind="src" path=""/>
|
||||
<classpathentry kind="src" path="test"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/CDC-1.0%Foundation-1.0"/>
|
||||
<classpathentry kind="lib" path="lib/junit-4.0.jar"/>
|
||||
<classpathentry kind="lib" path="lib/junit-4.0.jar" sourcepath="/home/janulrich/.m2/repository/junit/junit/4.0/junit-4.0-sources.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
15
README.me
15
README.me
@ -1,15 +0,0 @@
|
||||
# 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.
|
||||
|
||||
|
42
Readme.md
42
Readme.md
@ -1,42 +0,0 @@
|
||||
# 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:
|
||||
|
||||
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ü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.
|
||||
* Bei Knoten, welche Generische Variablen beinhalten können werden GenericTypeInsertPoints erstellt
|
||||
|
||||
5. Einsetzen eines TypeInsertSet (optional)
|
||||
1. Auf allen TypeInsertPoints die getUnresolvedTPHs-Methoden aufrufen
|
||||
2. Alle Abhängigkeiten dieser
|
||||
|
||||
|
@ -137,6 +137,7 @@ public class FieldDeclaration extends Field{
|
||||
|
||||
//TypeCheck, falls es sich um einen RefType handelt:
|
||||
ConstraintType thisType = this.getType().TYPE(localAssumptions, this);
|
||||
this.setType(thisType.getType());
|
||||
/*
|
||||
if(this.getType()!=null && (this.getType() instanceof RefType)){
|
||||
Type replaceType = null;
|
||||
|
@ -185,7 +185,6 @@ public class LocalOrFieldVar extends Expr
|
||||
|
||||
public String getTypeInformation(){
|
||||
return this.getType()+" "+this.get_Name();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import de.dhbwstuttgart.parser.JavaClassName;
|
||||
import de.dhbwstuttgart.syntaxtree.Class;
|
||||
import de.dhbwstuttgart.syntaxtree.Field;
|
||||
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
||||
import de.dhbwstuttgart.syntaxtree.type.Type;
|
||||
|
||||
public class FieldAssumption extends Assumption {
|
||||
|
||||
@ -38,5 +39,4 @@ public class FieldAssumption extends Assumption {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -327,6 +327,8 @@ public class TypeAssumptions {
|
||||
for(GenericVarAssumption ass : this.genericVarAssumptions){
|
||||
//if(ass.inheritsType(t))return t;
|
||||
if(ass.getIdentifier().equals(t.getName())){
|
||||
//Generische Variable gefunden!
|
||||
|
||||
if(! ass.getAssumedType().getParentClass().equals(inNode.getParentClass())){ //hier muss nach der ParentClass von inNode gefragt werden, da die ParentClass von t nicht immer korrekt ist! (TODO: Überprüfen)
|
||||
TypeAssumptions.log.debug(t+" ist NICHT in Klasse: "+ass.getAssumedType().getParentClass(), Section.ASSUMPTIONS);
|
||||
//Ist die Generische Variable nicht aus dieser Klasse, so muss sie zu einem TPH umgewandelt werden:
|
||||
|
Loading…
Reference in New Issue
Block a user