From ba8df8b37624cc385276240b28bb8138ce126083 Mon Sep 17 00:00:00 2001 From: AluAli Date: Fri, 19 Mar 2021 18:27:50 +0100 Subject: [PATCH] modified: src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java --- .../FamilyOfGeneratedGenerics.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java index ed4566f2..cf9abbfd 100644 --- a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java +++ b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java @@ -520,9 +520,9 @@ public class FamilyOfGeneratedGenerics { List>> orConsListConverted = new ArrayList<>(); //gehe die OrConstraints der aktuellen Methode durch und teile nach Operator auf ( for(int i=0; i> orConsInternal = new HashMap<>(); List orConsWithEQUAL = new ArrayList(); List orConsWithEXTENDS = new ArrayList(); + HashMap> orConsInternal = new HashMap<>(); for(Constraint con: orCons.get(i)) { Iterator it = con.iterator(); while(it.hasNext()) { @@ -564,10 +564,13 @@ public class FamilyOfGeneratedGenerics { oldConsListConverted.add(new TPHConstraint(((TypePlaceholder) pair.TA1).getName(), ((TypePlaceholder) pair.TA2).getName(), r)); } - // Berechnung der Regel + // dies ist das "R" aus dem ersten Teil, wird im zweiten Teil gebraucht + TypePlaceholder tphR = null; + + // Berechnung des ersten Teils der Regel + Constraint extendsSet = new Constraint(); + Constraint equalSet = new Constraint(); 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(); @@ -586,6 +589,7 @@ public class FamilyOfGeneratedGenerics { Iterator itEqual = equalSet.iterator(); while(itEqual.hasNext()) { Pair pairEqual = itEqual.next(); + tphR = (TypePlaceholder) (pairEqual.TA2); Pair newPair = new Pair(resSet.resolveType((TypePlaceholder)(pairExtends.TA2)).resolvedType, resSet.resolveType((TypePlaceholder)(pairEqual.TA1)).resolvedType, PairOperator.SMALLERDOT); Iterator itTC = tcOfoldConsSet.iterator(); while(itTC.hasNext()) { @@ -601,6 +605,25 @@ public class FamilyOfGeneratedGenerics { } } } + // Berechnung des zweiten Teils der Regel + Iterator itEqual = equalSet.iterator(); + while(itEqual.hasNext()) { + Pair pairEqual = itEqual.next(); + // prüfe, ob das "R" von vorhin in einem EqualConstraint links auftaucht + if(tphR == pairEqual.TA1) { + tempSet.add(); + } + } + Iterator itExtends = equalSet.iterator(); + while(itExtends.hasNext()) { + Pair pairExtends = itExtends.next(); + // prüfe, ob das "R" von vorhin in einem EqualConstraint links auftaucht + if(tphR == pairExtends.TA1) { + tempSet.add(); + } + + } + } // aus der alten Datenstruktur in die neue Datenstruktur (von Ali)