diff --git a/src/de/dhbwstuttgart/syntaxtree/Method.java b/src/de/dhbwstuttgart/syntaxtree/Method.java index 38f3bca5..6c0b07f5 100755 --- a/src/de/dhbwstuttgart/syntaxtree/Method.java +++ b/src/de/dhbwstuttgart/syntaxtree/Method.java @@ -693,6 +693,7 @@ public class Method extends Field implements IItemWithOffset, TypeInsertable // Methode und Block teilen sich einen ReturnType: //this.block.setType(t); this.returntype = t; + this.returntype.parent = this; //TODO: Dieser Hack sollte nicht nötig sein. (Parser ändern) } /** diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/Null.java b/src/de/dhbwstuttgart/syntaxtree/statement/Null.java index 89a37dbb..441da860 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/Null.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/Null.java @@ -88,8 +88,8 @@ public class Null extends Literal @Override public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) { - // TODO Auto-generated method stub - return null; + this.setType(TypePlaceholder.fresh(this)); + return new ConstraintsSet(); } @Override diff --git a/src/de/dhbwstuttgart/syntaxtree/type/Type.java b/src/de/dhbwstuttgart/syntaxtree/type/Type.java index 2e0cea92..d2e5522e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/Type.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/Type.java @@ -14,6 +14,7 @@ import de.dhbwstuttgart.typeinference.ConstraintType; import de.dhbwstuttgart.typeinference.JavaCodeResult; import de.dhbwstuttgart.typeinference.ResultSet; import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions; +import de.dhbwstuttgart.typeinference.exceptions.DebugException; import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException; @@ -50,6 +51,7 @@ public abstract class Type extends SyntaxTreeNode implements IItemWithOffset // ino.method.Type.26732.body { //if(parent == null)throw new NullPointerException(); + //if(parent == null)throw new DebugException("Parent darf nicht null sein"); this.parent = parent; this.offset=offset; } diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java index 162b6ac8..564fd472 100755 --- a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java +++ b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java @@ -327,10 +327,12 @@ public class TypeAssumptions { for(GenericVarAssumption ass : this.genericVarAssumptions){ //if(ass.inheritsType(t))return t; if(ass.getIdentifier().equals(t.getName())){ - if(! ass.getAssumedType().getParentClass().equals(t.getParentClass())){ + 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.TYPEINFERENCE); //Ist die Generische Variable nicht aus dieser Klasse, so muss sie zu einem TPH umgewandelt werden: return new ConstraintType(ass.getAssumedType().getTypePlaceHolder(inNode)); } + TypeAssumptions.log.debug(t+" ist in Klasse: "+ass.getAssumedType().getParentClass(), Section.TYPEINFERENCE); return new ConstraintType(ass.getAssumedType()); } }