diff --git a/.classpath b/.classpath
index 8031ed71..8ed57022 100755
--- a/.classpath
+++ b/.classpath
@@ -3,7 +3,7 @@
-
+
diff --git a/bin/.gitignore b/bin/.gitignore
index 34ddca33..c682e79e 100644
--- a/bin/.gitignore
+++ b/bin/.gitignore
@@ -1,2 +1,5 @@
/de/
/plugindevelopment/
+=======
+/syntaxTree/
+/bytecode/
diff --git a/src/de/dhbwstuttgart/bytecode/CodeAttribute.java b/src/de/dhbwstuttgart/bytecode/CodeAttribute.java
index 6cff7bc5..9650c6a6 100755
--- a/src/de/dhbwstuttgart/bytecode/CodeAttribute.java
+++ b/src/de/dhbwstuttgart/bytecode/CodeAttribute.java
@@ -250,7 +250,7 @@ public class CodeAttribute extends Attribute
// ino.method.codegen.21757.definition
- public void codegen(ClassFile classfile, FileOutputStream f)
+ public void codegen(ClassFile classfile, OutputStream f)
throws JVMCodeException, IOException
// ino.end
// ino.method.codegen.21757.body
@@ -1088,11 +1088,11 @@ public class CodeAttribute extends Attribute
}
// ino.end
- @Override
- public void codegen(ClassFile classfile, OutputStream f)
- throws JVMCodeException, IOException {
- throw new NotImplementedException();
- }
+// @Override
+// public void codegen(ClassFile classfile, OutputStream f)
+// throws JVMCodeException, IOException {
+// throw new NotImplementedException();
+// }
}
// ino.end
diff --git a/src/de/dhbwstuttgart/bytecode/SignatureInfo.java b/src/de/dhbwstuttgart/bytecode/SignatureInfo.java
index c7fa7873..a13f8a86 100755
--- a/src/de/dhbwstuttgart/bytecode/SignatureInfo.java
+++ b/src/de/dhbwstuttgart/bytecode/SignatureInfo.java
@@ -186,7 +186,7 @@ public class SignatureInfo extends Attribute
// ino.end
// ino.method.codegen.22987.definition
- public void codegen(ClassFile classfile, FileOutputStream f)
+ public void codegen(ClassFile classfile, OutputStream f)
throws JVMCodeException, IOException
// ino.end
// ino.method.codegen.22987.body
@@ -266,11 +266,11 @@ public class SignatureInfo extends Attribute
}
// ino.end
- @Override
- public void codegen(ClassFile classfile, OutputStream f)
- throws JVMCodeException, IOException {
- throw new NotImplementedException();
- }
+// @Override
+// public void codegen(ClassFile classfile, OutputStream f)
+// throws JVMCodeException, IOException {
+// throw new NotImplementedException();
+// }
}
// ino.end
diff --git a/src/de/dhbwstuttgart/typeinference/ConstraintType.java b/src/de/dhbwstuttgart/typeinference/ConstraintType.java
index 09ccb730..aa26c650 100644
--- a/src/de/dhbwstuttgart/typeinference/ConstraintType.java
+++ b/src/de/dhbwstuttgart/typeinference/ConstraintType.java
@@ -16,6 +16,9 @@ public class ConstraintType{
public ConstraintType(RefType t){
this.t = t;
}
+ public ConstraintType(WildcardType t){
+ this.t = t;
+ }
public Type getType() {
return t;
}
diff --git a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java
index a0d935fb..9787b5b4 100755
--- a/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java
+++ b/src/de/dhbwstuttgart/typeinference/assumptions/TypeAssumptions.java
@@ -13,6 +13,7 @@ import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
import de.dhbwstuttgart.syntaxtree.type.RefType;
import de.dhbwstuttgart.syntaxtree.type.Type;
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
+import de.dhbwstuttgart.syntaxtree.type.WildcardType;
import de.dhbwstuttgart.typeinference.ConstraintType;
import de.dhbwstuttgart.typeinference.FunN;
import de.dhbwstuttgart.typeinference.FunNInterface;
@@ -285,6 +286,13 @@ public class TypeAssumptions {
* @return null, falls der Typ nicht vorhanden ist.
*/
public ConstraintType getTypeFor(Type t, SyntaxTreeNode inNode){
+ if(t instanceof WildcardType){
+ WildcardType wt = (WildcardType)t;
+ Type innerType = wt.GetWildcardType();
+ innerType = getTypeFor(innerType, t).getType();
+ wt.SetWildcardType(innerType);
+ return new ConstraintType(wt);
+ }
if(t instanceof TypePlaceholder)
return new ConstraintType((TypePlaceholder)t); //Handelt es sich um einen TypePlaceholder kann dieser nicht in den Assumptions vorkommen.
diff --git a/src/de/dhbwstuttgart/typeinference/unify/Unify.java b/src/de/dhbwstuttgart/typeinference/unify/Unify.java
index d3408e02..3c281407 100755
--- a/src/de/dhbwstuttgart/typeinference/unify/Unify.java
+++ b/src/de/dhbwstuttgart/typeinference/unify/Unify.java
@@ -2400,6 +2400,36 @@ throws MatchException
return true;
}
}
+ //Wildcard ergänzt PL 12-12-05
+ if ( T instanceof ExtendsWildcardType )
+ {
+ Type Temp = ((ExtendsWildcardType) T).get_ExtendsType();
+ if( Temp instanceof TypePlaceholder )
+ {
+
+ if( Temp.getName().equals(a.getName()) )
+ {
+ // Typvariable ersetzen
+ ((ExtendsWildcardType) T).SetWildcardType(o);
+ return true;
+ }
+ }
+ }
+
+ if ( T instanceof SuperWildcardType )
+ {
+ Type Temp = ((SuperWildcardType) T).get_SuperType();
+ if( Temp instanceof TypePlaceholder )
+ {
+
+ if( Temp.getName().equals(a.getName()) )
+ {
+ // Typvariable ersetzen
+ ((SuperWildcardType) T).SetWildcardType(o);
+ return true;
+ }
+ }
+ }
return false;
}
// ino.end
diff --git a/tools/jay.darwin b/tools/jay.darwin
index 00114230..79f44cb2 100755
Binary files a/tools/jay.darwin and b/tools/jay.darwin differ