forked from JavaTX/JavaCompilerCore
Fehler in Testcases behoben. RefTyp.hashCode() angefügt
This commit is contained in:
parent
e7db1e7494
commit
fab7522def
@ -65,10 +65,11 @@ public abstract class AddOp extends Operator
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Type getReturnType(RefType inputType, TypeAssumptions ass) {
|
public Type getReturnType(RefType inputType, TypeAssumptions ass) {
|
||||||
Type ret = ass.getTypeFor(new RefType("java.lang.Integer",-1));
|
Type iT = ass.getTypeFor(inputType);
|
||||||
if(ret == null)throw new DebugException("java.lang.Integer kann nicht aufgelöst werden");
|
Hashtable<RefType, RefType> types = getOperatorTypes();
|
||||||
|
Type ret = types.get(iT);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import mycompiler.myoperator.MulOp;
|
|||||||
import mycompiler.myoperator.Operator;
|
import mycompiler.myoperator.Operator;
|
||||||
import mycompiler.myoperator.RelOp;
|
import mycompiler.myoperator.RelOp;
|
||||||
import mycompiler.mytype.GenericTypeVar;
|
import mycompiler.mytype.GenericTypeVar;
|
||||||
|
import mycompiler.mytype.RefType;
|
||||||
import mycompiler.mytype.Type;
|
import mycompiler.mytype.Type;
|
||||||
import mycompiler.mytypereconstruction.CSupportData;
|
import mycompiler.mytypereconstruction.CSupportData;
|
||||||
import mycompiler.mytypereconstruction.set.CSubstitutionSet;
|
import mycompiler.mytypereconstruction.set.CSubstitutionSet;
|
||||||
@ -34,6 +35,7 @@ import org.apache.log4j.Logger;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
||||||
import typinferenz.ConstraintsSet;
|
import typinferenz.ConstraintsSet;
|
||||||
import typinferenz.JavaCodeResult;
|
import typinferenz.JavaCodeResult;
|
||||||
@ -261,7 +263,8 @@ public class Binary extends BinaryExpr
|
|||||||
ret.add(this.expr2.TYPEExpr(assumptions));
|
ret.add(this.expr2.TYPEExpr(assumptions));
|
||||||
//Der Operator generiert die fehlenden Constraints:
|
//Der Operator generiert die fehlenden Constraints:
|
||||||
ret.add(this.op.TYPEExpr(expr1, expr2, assumptions));
|
ret.add(this.op.TYPEExpr(expr1, expr2, assumptions));
|
||||||
this.set_Type(this.op.getReturnType(assumptions));
|
//Kleiner Hack, wenn die op.TYPEExpr ohne Fehler durchlaufen wurde, dann kann expr1.getType() zu RefType gecastet werden
|
||||||
|
this.set_Type(this.op.getReturnType((RefType) expr1.getType(),assumptions));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ public class BoolLiteral extends Literal
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) {
|
public ConstraintsSet TYPEExpr(TypeAssumptions assumptions) {
|
||||||
this.type = new BooleanType();
|
this.type = assumptions.getTypeFor(new RefType("java.lang.Boolean",-1));
|
||||||
return new ConstraintsSet();
|
return new ConstraintsSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,14 @@ public class RefType extends Type implements IMatchable
|
|||||||
}
|
}
|
||||||
// ino.end
|
// ino.end
|
||||||
|
|
||||||
// ino.method.RefType.26640.definition
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int hash = 0;
|
||||||
|
hash += this.name.hashCode();//Nur den Name hashen. Sorgt für langsame, aber funktionierende HashMaps
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ino.method.RefType.26640.definition
|
||||||
public RefType(String fullyQualifiedName, Vector parameter, int offset)
|
public RefType(String fullyQualifiedName, Vector parameter, int offset)
|
||||||
// ino.end
|
// ino.end
|
||||||
// ino.method.RefType.26640.body
|
// ino.method.RefType.26640.body
|
||||||
|
@ -13,8 +13,7 @@ class Main {
|
|||||||
ol;
|
ol;
|
||||||
ol = new OL2();
|
ol = new OL2();
|
||||||
y;
|
y;
|
||||||
/* y = new Vector<Integer>(); */
|
y.add(ol.m(x));
|
||||||
y.addElement(ol.m(x));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,10 +59,8 @@ public class Tester extends TypeInsertTester{
|
|||||||
testFiles.add("BoundedType.jav");
|
testFiles.add("BoundedType.jav");
|
||||||
testFiles.add("OL2.jav");
|
testFiles.add("OL2.jav");
|
||||||
testFiles.add("OL.jav");
|
testFiles.add("OL.jav");
|
||||||
testFiles.add("Probleme");
|
|
||||||
testFiles.add("Simple.jav");
|
testFiles.add("Simple.jav");
|
||||||
testFiles.add("SMatrix.jav");
|
testFiles.add("SMatrix.jav");
|
||||||
testFiles.add("Tester.java");
|
|
||||||
testFiles.add("UnifyTest1.jav");
|
testFiles.add("UnifyTest1.jav");
|
||||||
testFiles.add("UsecaseEight_pl.jav");
|
testFiles.add("UsecaseEight_pl.jav");
|
||||||
testFiles.add("UsecaseFive_pl.jav");
|
testFiles.add("UsecaseFive_pl.jav");
|
||||||
|
@ -5,7 +5,7 @@ import java.util.Stack;
|
|||||||
class Test {
|
class Test {
|
||||||
public getValue(a){
|
public getValue(a){
|
||||||
String x;
|
String x;
|
||||||
a.addElement(x);
|
a.add(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
class UsecaseFive_pl<A> {
|
class UsecaseFive_pl<A> {
|
||||||
|
|
||||||
foo() {
|
foo() {
|
||||||
|
Loading…
Reference in New Issue
Block a user