diff --git a/src/de/dhbwstuttgart/typeinference/unify/Unify.java b/src/de/dhbwstuttgart/typeinference/unify/Unify.java index e6f7b563d..55050f384 100755 --- a/src/de/dhbwstuttgart/typeinference/unify/Unify.java +++ b/src/de/dhbwstuttgart/typeinference/unify/Unify.java @@ -321,6 +321,9 @@ public class Unify { if(p.TA1 instanceof TypePlaceholder) { + //TPH <. ? super Ty entspricht TPH <. Ty + if (p.TA2 instanceof SuperWildcardType) p.TA2 = ((SuperWildcardType)p.TA2).get_SuperType(); + if(p.OperatorEqual()) { //Alle Paare die bereits durch sub_unify die richtige Struktur haben einfach durchleiten. @@ -330,7 +333,7 @@ public class Unify setofsetofpairs.add(vTmp); cartProduktSets.add(setofsetofpairs); } - else if(p.OperatorSmaller() && p.TA2 instanceof RefType) + else if(p.OperatorSmaller() && (p.TA2 instanceof RefType)) { RefType p_TA2 = (RefType)p.TA2; //1. Menge @@ -446,14 +449,16 @@ public class Unify } //aus {ty <. ty'} {? extends ty <. ty'} erzeugen //angefuegt PL 15-03-03 - Stream> extergMenge1 = + //DIES IST NICHT RICHTIG GETESTET, ES KOENNTE SEIN, DASS DAS KART. PRODUKT FALSCH GEBILDET WIRD. + Stream> strextergMenge1 = ergMenge1.stream().map(v -> v.stream().map(pa -> - new Pair(new ExtendsWildcardType(pa.getTA1Copy().getOffset(), pa.getTA1Copy()), pa.getTA2Copy(), pa.GetOperator(), pa.bSubst) + new Pair(pa.getTA1Copy(), new ExtendsWildcardType(pa.getTA2Copy().getOffset(), pa.getTA2Copy()), pa.GetOperator(), pa.bSubst) ).collect(Vector::new, Vector::add, Vector::addAll)); + Vector> extergMenge1 = strextergMenge1.collect(Vector::new, Vector::add, Vector::addAll); + ergMenge1.addAll(extergMenge1); cartProduktSets.add(ergMenge1); - cartProduktSets.add(extergMenge1.collect(Vector::new, Vector::add, Vector::addAll)); } else if(p.OperatorSmaller() && p.TA2 instanceof GenericTypeVar) {