From f20b978b14ece5815963b6852fe002aa90127b42 Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Sun, 4 Jan 2015 19:30:37 +0100 Subject: [PATCH] Kleine Anpassungen --- bin/.gitignore | 3 -- .../dhbwstuttgart/syntaxtree/SourceFile.java | 2 +- .../statement/LambdaExpression.java | 9 ++++- .../syntaxtree/type/ExtendsWildcardType.java | 2 +- .../syntaxtree/type/SuperWildcardType.java | 33 ++++++++++--------- .../syntaxtree/type/WildcardType.java | 32 ++++++++---------- 6 files changed, 41 insertions(+), 40 deletions(-) diff --git a/bin/.gitignore b/bin/.gitignore index c682e79e..34ddca33 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,5 +1,2 @@ /de/ /plugindevelopment/ -======= -/syntaxTree/ -/bytecode/ diff --git a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java index a6e8a699..32856c39 100755 --- a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java +++ b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java @@ -698,7 +698,7 @@ public class SourceFile retValue = Unify.unify(pairs, finiteClosure); return retValue;}; oderConstraints.filterWrongConstraints(unifier); - //oderConstraints.unifyUndConstraints(unifier); + oderConstraints.unifyUndConstraints(unifier); typinferenzLog.debug("Übriggebliebene Konstraints:\n"+oderConstraints+"\n", Section.TYPEINFERENCE); //Die Constraints in Pair's umwandeln (Karthesisches Produkt bilden): Vector> xConstraints = new Vector>();// = oderConstraints.getConstraints(); diff --git a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java index 20ffdba6..eec84a10 100755 --- a/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java +++ b/src/de/dhbwstuttgart/syntaxtree/statement/LambdaExpression.java @@ -18,6 +18,7 @@ import de.dhbwstuttgart.syntaxtree.type.DoubleType; import de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType; import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar; import de.dhbwstuttgart.syntaxtree.type.RefType; +import de.dhbwstuttgart.syntaxtree.type.SuperWildcardType; import de.dhbwstuttgart.syntaxtree.type.Type; import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; import de.dhbwstuttgart.typeinference.ConstraintsSet; @@ -150,9 +151,15 @@ public class LambdaExpression extends Expr{ //ArgumentAssumptions + assumptions ergeben die Assumptions für die Statements innerhalb des Lambda-Bodys: ret.add(method_body.TYPEStmt(ArgumentAssumptions.add(assumptions))); //Es gibt die LambdaExpression nur mit einem Block als Method Body, nicht mit einer einzelnen Expression + //Die Typen innerhalb von FunN anpassen: + Vector superParamTypes = new Vector<>(); + for(Type pT : paramTypes){ + superParamTypes.add(new SuperWildcardType(pT.getOffset(), pT)); + } Type retType = method_body.getType(); ExtendsWildcardType extRetType = new ExtendsWildcardType(retType.getOffset(), retType); - ret.add(new SingleConstraint(new FunN(extRetType, paramTypes).TYPE(assumptions, this),this.getType().TYPE(assumptions, this))); + + ret.add(new SingleConstraint(new FunN(extRetType, superParamTypes).TYPE(assumptions, this),this.getType().TYPE(assumptions, this))); return ret; } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java index 8531ee81..70677904 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/ExtendsWildcardType.java @@ -69,7 +69,7 @@ public class ExtendsWildcardType extends WildcardType implements ITypeContainer, { if(obj instanceof ExtendsWildcardType) { - return this.extendsType.equals(((ExtendsWildcardType)obj).get_ExtendsType()); + return super.equals(obj); } else { diff --git a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java index 289154cc..fdeadd18 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/SuperWildcardType.java @@ -56,22 +56,6 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I return new SuperWildcardType(getOffset(), superType.clone()); } - /** - * Author: Arne Lüdtke
- * Vergleicht mit einem anderen Objekt. - * @param obj - Object to compare. - */ - public boolean equals(Object obj) - { - if(obj instanceof SuperWildcardType) - { - return this.superType.equals(((SuperWildcardType)obj).get_SuperType()); - } - else - { - return false; - } - } /** * Author: Arne Lüdtke
@@ -129,4 +113,21 @@ public class SuperWildcardType extends WildcardType implements ITypeContainer, I return new JavaCodeResult("? super " + this.superType.printJavaCode(result)); } + /** + * Author: Arne Lüdtke
+ * Vergleicht mit einem anderen Objekt. + * @param obj - Object to compare. + */ + public boolean equals(Object obj) + { + if(obj instanceof SuperWildcardType) + { + return super.equals(obj); + } + else + { + return false; + } + } + } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java b/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java index 56312b90..f8d07f9a 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/WildcardType.java @@ -42,24 +42,6 @@ public class WildcardType extends Type{ return new WildcardType(this.getParent(), getOffset()); } - /** - * Author: Arne Lüdtke
- * Vergleicht mit einem anderen Objekt. - * @param obj - Object to compare. - */ - public boolean equals(Object obj) - { - //Luar 06-11-29 If Block erstellt, falls weitere Einschränkungen notwendig werden. - if(obj instanceof WildcardType && !(obj instanceof SuperWildcardType || obj instanceof ExtendsWildcardType)) - { - return true; - } - else - { - return false; - } - } - /** * Author: Arne Lüdtke
* Gibt die passende FreshWildcardType Klasse zurück. @@ -93,4 +75,18 @@ public class WildcardType extends Type{ public JavaCodeResult printJavaCode(ResultSet resultSet) { throw new NotImplementedException(); } + + public boolean equals(Object obj) + { + if(obj instanceof WildcardType) + { + return ((WildcardType)obj).GetWildcardType().equals(this.GetWildcardType()); + } + else + { + return false; + } + } + + }