From b147430fb6620526ede7fb19a736c03f777f394e Mon Sep 17 00:00:00 2001 From: AluAli Date: Fri, 19 Mar 2021 15:05:40 +0100 Subject: [PATCH] kommentierte neue Regeln --- .../insertGenerics/FamilyOfGeneratedGenerics.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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); }