diff --git a/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java b/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java index 2c2ca6b2..81c6da3a 100644 --- a/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java +++ b/src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java @@ -315,7 +315,7 @@ public class TypeUnifyTask extends RecursiveTask>> { List> nextSetasList =new ArrayList<>(nextSet); try { //List> - nextSetasList = oup.sortedCopy(nextSet);//new ArrayList<>(nextSet); + //nextSetasList = oup.sortedCopy(nextSet);//new ArrayList<>(nextSet); } catch (java.lang.IllegalArgumentException e) { System.out.print(""); @@ -815,6 +815,16 @@ public class TypeUnifyTask extends RecursiveTask>> { //List freshTphs = new ArrayList<>(); PL 18-02-06 in die For-Schleife verschoben for (UnifyType tq : thetaQs) { Set smaller = fc.smaller(unifier.apply(tq)); + //eingefuegt PL 2018-03-29 Anfang ? ext. theta hinzufuegen + Set smaller_ext = smaller.stream() + .map(x -> { + BinaryOperator> combiner = (aa,b) -> { aa.putAll(b); return aa;}; + HashMap hm = x.getInvolvedPlaceholderTypes().stream() + .reduce(new HashMap(), + (aa, b)-> { aa.put(b,PlaceholderType.freshPlaceholder()); return aa; }, combiner); + return new ExtendsType (x.accept(new freshPlaceholder(), hm));}).collect(Collectors.toCollection(HashSet::new)); + smaller.addAll(smaller_ext); + //eingefuegt PL 2018-03-29 Ende ? ext. theta hinzufuegen for(UnifyType theta : smaller) { List freshTphs = new ArrayList<>(); Set resultPrime = new HashSet<>(); diff --git a/src/de/dhbwstuttgart/typeinference/unify/model/Unifier.java b/src/de/dhbwstuttgart/typeinference/unify/model/Unifier.java index 7b32864d..1ee05264 100644 --- a/src/de/dhbwstuttgart/typeinference/unify/model/Unifier.java +++ b/src/de/dhbwstuttgart/typeinference/unify/model/Unifier.java @@ -63,7 +63,12 @@ public class Unifier implements Function, Iterable