forked from JavaTX/JavaCompilerCore
Methodenconstraint neu definiert, Typvariable eingefügt)
This commit is contained in:
parent
d4e32794ff
commit
a9b9c46d84
@ -50,11 +50,11 @@ public class AssumptionGenerator {
|
|||||||
for (FormalParameter p : m.getParameterList().getFormalparalist()) {
|
for (FormalParameter p : m.getParameterList().getFormalparalist()) {
|
||||||
String pName = p.getName();
|
String pName = p.getName();
|
||||||
String pType = p.getType().toString();
|
String pType = p.getType().toString();
|
||||||
typeArg = typeArg + String.format("%s : %s", pName, pType);
|
typeArg = typeArg + String.format("%s :%s ", pName, pType);
|
||||||
ass.put(p.getName(), p.getType());
|
ass.put(p.getName(), p.getType());
|
||||||
}
|
}
|
||||||
argAss.put(m, ass);
|
argAss.put(m, ass);
|
||||||
System.out.println(String.format("Methodenname: %s , Arguments: %s -> ReturnType %s", methodName, typeArg,
|
System.out.println(String.format("Methodenname: %s , Arguments: %s -> ReturnType %s ", methodName, typeArg,
|
||||||
returnType));
|
returnType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ public class HelpMethoden {
|
|||||||
|
|
||||||
// LocalVar (Constraints für den Algo, Constraints für die Interfaces
|
// LocalVar (Constraints für den Algo, Constraints für die Interfaces
|
||||||
// usw. )
|
// usw. )
|
||||||
// LocalVar
|
// LocalVar ------------------------------------------------------------------------------------------
|
||||||
if (expression.getClass().equals(LocalVar.class)) {
|
if (expression.getClass().equals(LocalVar.class)) {
|
||||||
LocalVar lvar = (LocalVar) expression;
|
LocalVar lvar = (LocalVar) expression;
|
||||||
List<ConstraintAbstract> constraints = new ArrayList<ConstraintAbstract>();
|
List<ConstraintAbstract> constraints = new ArrayList<ConstraintAbstract>();
|
||||||
@ -130,7 +130,7 @@ public class HelpMethoden {
|
|||||||
constraints.add(constraint);
|
constraints.add(constraint);
|
||||||
return constraints;
|
return constraints;
|
||||||
}
|
}
|
||||||
// FeldVar
|
// FeldVar ------------------------------------------------------------------------------------------
|
||||||
else if (expression.getClass().equals(FieldVar.class)) {
|
else if (expression.getClass().equals(FieldVar.class)) {
|
||||||
FieldVar fieldVar = (FieldVar) expression;
|
FieldVar fieldVar = (FieldVar) expression;
|
||||||
Expression receiver = fieldVar.getReceiver();
|
Expression receiver = fieldVar.getReceiver();
|
||||||
@ -146,7 +146,7 @@ public class HelpMethoden {
|
|||||||
return constraints;
|
return constraints;
|
||||||
|
|
||||||
}
|
}
|
||||||
// MethodCall
|
// MethodCall ------------------------------------------------------------------------------------------
|
||||||
else if (expression.getClass().equals(MethodCall.class)) {
|
else if (expression.getClass().equals(MethodCall.class)) {
|
||||||
MethodCall methodCall = (MethodCall) expression;
|
MethodCall methodCall = (MethodCall) expression;
|
||||||
|
|
||||||
@ -162,13 +162,20 @@ public class HelpMethoden {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// An dieser Stelle wird der Methoden Constraint erstellt
|
// An dieser Stelle wird der Methoden Constraint erstellt
|
||||||
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypesVars = new ArrayList<>();
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
List<MyTypeVar> argumentTypesVars = new ArrayList<>();
|
||||||
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes = new ArrayList<>();
|
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes = new ArrayList<>();
|
||||||
|
Integer index_arg = 1;
|
||||||
for (Expression arg : methodCall.get_ArgList().getArguments()) {
|
for (Expression arg : methodCall.get_ArgList().getArguments()) {
|
||||||
argumentTypesVars.add(arg.getType());
|
argumentTypesVars.add(new MyTypeVar(methodCall.get_Name(), index_arg , receiver.getType()));
|
||||||
|
index_arg = index_arg +1;
|
||||||
constraints.addAll(HelpMethoden.TypeExpr(ass, arg, method, cl));
|
constraints.addAll(HelpMethoden.TypeExpr(ass, arg, method, cl));
|
||||||
|
argumentTypes.add(arg.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
// Es wird der Typ des übergabeparameter erstellt
|
// Es wird der Typ des übergabeparameter erstellt
|
||||||
List<SubTypeConstraint> puffer = new ArrayList<>();
|
List<SubTypeConstraint> puffer = new ArrayList<>();
|
||||||
for (RefTypeOrTPHOrWildcardOrGeneric type : argumentTypesVars) {
|
for (RefTypeOrTPHOrWildcardOrGeneric type : argumentTypesVars) {
|
||||||
@ -185,15 +192,11 @@ public class HelpMethoden {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
constraints.addAll(puffer);
|
constraints.addAll(puffer);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MethodConstraint methodConstraint = new MethodConstraint(receiver.getType(), methodCall.get_Name(), argumentTypes, methodCall.getType(), argumentTypesVars );
|
MethodConstraint methodConstraint = new MethodConstraint(receiver.getType(), methodCall.get_Name(), argumentTypes, methodCall.getType(), argumentTypesVars );
|
||||||
|
|
||||||
constraints.add(methodConstraint);
|
constraints.add(methodConstraint);
|
||||||
return constraints;
|
return constraints;
|
||||||
|
|
||||||
|
@ -14,11 +14,11 @@ class MethodConstraint extends ConstraintAbstract {
|
|||||||
private String methodName;
|
private String methodName;
|
||||||
private List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes;
|
private List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes;
|
||||||
private RefTypeOrTPHOrWildcardOrGeneric returnType;
|
private RefTypeOrTPHOrWildcardOrGeneric returnType;
|
||||||
private List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypeVars;
|
private List<MyTypeVar> argumentTypeVars;
|
||||||
|
|
||||||
public MethodConstraint(RefTypeOrTPHOrWildcardOrGeneric receiver, String methodName,
|
public MethodConstraint(RefTypeOrTPHOrWildcardOrGeneric receiver, String methodName,
|
||||||
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes, RefTypeOrTPHOrWildcardOrGeneric returnType,
|
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypes, RefTypeOrTPHOrWildcardOrGeneric returnType,
|
||||||
List<RefTypeOrTPHOrWildcardOrGeneric> argumentTypeVars) {
|
List<MyTypeVar> argumentTypeVars) {
|
||||||
super();
|
super();
|
||||||
this.receiver = receiver;
|
this.receiver = receiver;
|
||||||
this.methodName = methodName;
|
this.methodName = methodName;
|
||||||
|
53
src/de/dhbwstuttgart/strucTypes3/MyTypeVar.java
Normal file
53
src/de/dhbwstuttgart/strucTypes3/MyTypeVar.java
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package de.dhbwstuttgart.strucTypes3;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
||||||
|
|
||||||
|
public class MyTypeVar {
|
||||||
|
|
||||||
|
private String method_name;
|
||||||
|
private Integer index_Argument;
|
||||||
|
private RefTypeOrTPHOrWildcardOrGeneric typevar;
|
||||||
|
|
||||||
|
public MyTypeVar(String method_name, Integer index_Argument, RefTypeOrTPHOrWildcardOrGeneric typevar) {
|
||||||
|
super();
|
||||||
|
this.method_name = method_name;
|
||||||
|
this.index_Argument = index_Argument;
|
||||||
|
this.typevar = typevar;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public String getMethod_name() {
|
||||||
|
return method_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMethod_name(String method_name) {
|
||||||
|
this.method_name = method_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getIndex_Argument() {
|
||||||
|
return index_Argument;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIndex_Argument(Integer index_Argument) {
|
||||||
|
this.index_Argument = index_Argument;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RefTypeOrTPHOrWildcardOrGeneric getTypevar() {
|
||||||
|
return typevar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTypevar(RefTypeOrTPHOrWildcardOrGeneric typevar) {
|
||||||
|
this.typevar = typevar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return String.format("TypVar?( %s , %s , %s )" , method_name , index_Argument , typevar );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,10 +1,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class A {
|
class A {
|
||||||
|
|
||||||
|
|
||||||
mt(x,y,z) { return x.sub(y).add(z); }
|
mt(x,y,z) { return x.sub(y).add(z); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user