From f1171210bcf8d099e9e5d0e8d4de083d561d8d0c Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Tue, 20 Jan 2015 18:32:51 +0100 Subject: [PATCH] =?UTF-8?q?Kleine=20=C3=84nderungen,=20Fehlerbehebung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/dhbwstuttgart/syntaxtree/Method.java | 1 + src/de/dhbwstuttgart/syntaxtree/statement/Null.java | 4 ++-- src/de/dhbwstuttgart/syntaxtree/type/Type.java | 2 ++ .../typeinference/assumptions/TypeAssumptions.java | 4 +++- 4 files changed, 8 insertions(+), 3 deletions(-) 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()); } }