kommentierte neue Regeln

This commit is contained in:
AluAli 2021-03-19 15:05:40 +01:00
parent 661fa53937
commit b147430fb6

View File

@ -512,12 +512,11 @@ public class FamilyOfGeneratedGenerics {
}
public static List<MethodConstraint> secondLineMethodDefinition(List<TPHConstraint> allConstraints, HashMap<String, List<PairTphMethod<PositionFinder.Position, String>>> posOfTphs, MethodAndTPH methodAndTPH, ResultSet resSet, Set<Pair> oldCons) {
List<MethodConstraint> tempMC = new ArrayList<>();
Set<Pair> tempSet = new HashSet<>();
List<MethodConstraint> tempMC = new ArrayList<>(); //für Ergebnisse basierend auf der neuen Datenstruktur (Ali)
Set<Pair> tempSet = new HashSet<>(); //für Ergebnisse basierend auf der alten Datenstruktur
Set<Pair> tcOfoldConsSet = buildTransitiveClosureForCP(oldCons, resSet);
MethodAndTPH methAndTphs = methodAndTPH;
List<Set<Constraint<Pair>>> orCons = methAndTphs.constraints.getOderConstraints();
List<List<Constraint<Pair>>> orConsList = new ArrayList<>();
List<HashMap<Relation, List<TPHConstraint>>> orConsListConverted = new ArrayList<>();
//gehe die OrConstraints der aktuellen Methode durch und teile nach Operator auf (
for(int i=0; i<orCons.size(); i++) {
@ -569,8 +568,10 @@ public class FamilyOfGeneratedGenerics {
for(int i=0; i<orCons.size(); i++) {
Constraint<Pair> extendsSet = new Constraint<Pair>();
Constraint<Pair> equalSet = new Constraint<Pair>();
//für jede einzelne OrConstraint-Menge gehe durch
for(Constraint con: orCons.get(i)) {
Iterator<Pair> 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<Pair> 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);
}