diff --git a/pom.xml b/pom.xml
index f356ce82..185b9fa0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,6 @@ http://maven.apache.org/maven-v4_0_0.xsd">
maven-compiler-plugin
3.11.0
- --enable-preview
21
diff --git a/src/main/java/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java b/src/main/java/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java
index 2193e7da..ebdd7005 100644
--- a/src/main/java/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java
+++ b/src/main/java/de/dhbwstuttgart/typeinference/typeAlgo/TYPE.java
@@ -5,10 +5,7 @@ import de.dhbwstuttgart.parser.scope.JavaClassName;
import de.dhbwstuttgart.syntaxtree.*;
import de.dhbwstuttgart.syntaxtree.factory.ASTFactory;
import de.dhbwstuttgart.syntaxtree.statement.Statement;
-import de.dhbwstuttgart.syntaxtree.type.ExtendsWildcardType;
-import de.dhbwstuttgart.syntaxtree.type.RefType;
-import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
-import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
+import de.dhbwstuttgart.syntaxtree.type.*;
import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceBlockInformation;
import de.dhbwstuttgart.typeinference.assumptions.TypeInferenceInformation;
import de.dhbwstuttgart.typeinference.constraints.ConstraintSet;
@@ -45,7 +42,7 @@ public class TYPE {
private String toASP(RefTypeOrTPHOrWildcardOrGeneric type){
if(type instanceof TypePlaceholder){
- return "tph"+((TypePlaceholder) type).getName();
+ return "_"+((TypePlaceholder) type).getName();
}else if(type instanceof RefType){
if(((RefType) type).getParaList().size() > 0){
return ((RefType) type).getName() + "<" +
@@ -55,7 +52,11 @@ public class TYPE {
return ((RefType) type).getName().toString();
}
}else if(type instanceof ExtendsWildcardType){
- //TODO
+ return toASP(((ExtendsWildcardType) type).getInnerType());
+ } else if(type instanceof SuperWildcardType) {
+ return toASP(((SuperWildcardType) type).getInnerType());
+ } else if(type instanceof GenericRefType){
+ return "G"+((GenericRefType) type).getParsedName();
}
throw new RuntimeException("Unsupported Type: "+ type);
}
@@ -67,7 +68,9 @@ public class TYPE {
} else if (p.OperatorSmallerDot()) {
ret +=(toASP(p.TA1) + "<." + toASP(p.TA2) + "\n");
} else if (p.OperatorSmallerNEQDot()) {
- ret +=(toASP(p.TA1) + "<." + toASP(p.TA2) + "\n");
+ ret += (toASP(p.TA1) + "<." + toASP(p.TA2) + "\n");
+ }else if(p.OperatorSmaller()){
+ ret += toASP(p.TA1) +"<"+toASP(p.TA2)+ "\n";
} else {
throw new RuntimeException("Operator unsupported: " + p.GetOperator());
}
@@ -77,14 +80,22 @@ public class TYPE {
private void writeASP(ConstraintSet cs){
try(var f = new FileWriter("/tmp/output")){
f.append(genASP(cs.getUndConstraints()));
- List> orCons = cs.getOderConstraints().stream().map(css -> {
- return css.stream().flatMap(cp -> {
- return cp.stream();
- }).collect(Collectors.toSet());
+ List>> orCons = cs.getOderConstraints().stream().map(css -> {
+ return css.stream().map(cp -> {
+ return cp.stream().collect(Collectors.toSet());
+ }).collect(Collectors.toList());
}).toList();
- for(Set orC : orCons) {
+
+ for(var orCon : orCons){
f.append("{\n");
- f.append(genASP(orC));
+ var it = orCon.iterator();
+ while(it.hasNext()) {
+ var orC = it.next();
+ f.append("{\n");
+ f.append(genASP(orC));
+ f.append("}\n");
+ if(it.hasNext())f.append("|");
+ }
f.append("}\n");
}
} catch (IOException e) {