diff --git a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java index 1d3921dc..ed4566f2 100644 --- a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java +++ b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java @@ -512,12 +512,11 @@ public class FamilyOfGeneratedGenerics { } public static List secondLineMethodDefinition(List allConstraints, HashMap>> posOfTphs, MethodAndTPH methodAndTPH, ResultSet resSet, Set oldCons) { - List tempMC = new ArrayList<>(); - Set tempSet = new HashSet<>(); + List tempMC = new ArrayList<>(); //für Ergebnisse basierend auf der neuen Datenstruktur (Ali) + Set tempSet = new HashSet<>(); //für Ergebnisse basierend auf der alten Datenstruktur Set tcOfoldConsSet = buildTransitiveClosureForCP(oldCons, resSet); MethodAndTPH methAndTphs = methodAndTPH; List>> orCons = methAndTphs.constraints.getOderConstraints(); - List>> orConsList = new ArrayList<>(); List>> orConsListConverted = new ArrayList<>(); //gehe die OrConstraints der aktuellen Methode durch und teile nach Operator auf ( for(int i=0; i extendsSet = new Constraint(); Constraint equalSet = new Constraint(); + //für jede einzelne OrConstraint-Menge gehe durch for(Constraint con: orCons.get(i)) { Iterator it = con.iterator(); + //für jeden Eintrag der Menge while (it.hasNext()) { Pair p = it.next(); if (p.OperatorSmallerDot()) { @@ -589,8 +590,8 @@ public class FamilyOfGeneratedGenerics { Iterator itTC = tcOfoldConsSet.iterator(); while(itTC.hasNext()) { Pair pairTC = itTC.next(); - if(resSet.resolveType((TypePlaceholder)(pairTC.TA1)).resolvedType == newPair.TA1 && resSet.resolveType((TypePlaceholder)(pairTC.TA2)).resolvedType == newPair.TA2 && pairTC.OperatorSmallerDot() && newPair.OperatorSmallerDot()) { //hier bei pairTC resolvedType, damit Pairs aus oldCons in der Methode zur Berechnung von der transitiven Hülle nicht in eine Endlosschleife kommen (Cycles!) - if(newPair.TA1 != newPair.TA2) { + if(resSet.resolveType((TypePlaceholder)(pairTC.TA1)).resolvedType == newPair.TA1 && resSet.resolveType((TypePlaceholder)(pairTC.TA2)).resolvedType == newPair.TA2 && pairTC.OperatorSmallerDot() && newPair.OperatorSmallerDot()) { //erst hier bei pairTC resolvedType, damit Pairs aus oldCons in der Methode zur Berechnung von der transitiven Hülle nicht in eine Endlosschleife kommen (Cycles!) + if(newPair.TA1 != newPair.TA2) { //eliminieren der Fälle wie AA<.AA if (!checkForDuplicatesForSets(newPair, tempSet)) { tempSet.add(newPair); }