From 31d7856afac31bfc6e0c316dcddc6c8d87bb02ff Mon Sep 17 00:00:00 2001 From: AluAli Date: Fri, 5 Mar 2021 00:31:36 +0100 Subject: [PATCH] modified: src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java modified: src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java --- .../GeneratedGenericsFinder.java | 2 +- .../FamilyOfGeneratedGenerics.java | 59 +++++++++++++++++-- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java b/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java index a73d2b3c..595f874e 100644 --- a/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java +++ b/src/main/java/de/dhbwstuttgart/bytecode/genericsGenerator/GeneratedGenericsFinder.java @@ -134,7 +134,7 @@ public class GeneratedGenericsFinder implements ASTVisitor { classOrInterface.accept(tphExtractor); //PL 2020-10-16: Ab hier GGenerics implementieren durch Ali //Rueckgabe an generatedGenericsForSF - fogg = new FamilyOfGeneratedGenerics(tphExtractor); + fogg = new FamilyOfGeneratedGenerics(tphExtractor, resultSet); System.out.println("fogg.allConstraints: "+ fogg.allConstraints); System.out.println("fogg.posOfTPHs: "+ fogg.posOfTPHs); diff --git a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java index 853f4bf4..544d43be 100644 --- a/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java +++ b/src/main/java/de/dhbwstuttgart/bytecode/insertGenerics/FamilyOfGeneratedGenerics.java @@ -5,11 +5,18 @@ import de.dhbwstuttgart.bytecode.constraint.TPHConstraint; import de.dhbwstuttgart.bytecode.constraint.TPHConstraint.Relation; import de.dhbwstuttgart.bytecode.utilities.MethodAndTPH; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import java.util.*; +import java.util.function.Predicate; + +import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder; +import de.dhbwstuttgart.typeinference.constraints.Constraint; +import de.dhbwstuttgart.typeinference.constraints.Pair; +import de.dhbwstuttgart.typeinference.result.ResultPair; +import de.dhbwstuttgart.typeinference.result.ResultSet; import org.objectweb.asm.Type; +import javax.naming.ldap.PagedResultsResponseControl; + public class FamilyOfGeneratedGenerics { public List allConstraints = new ArrayList<>(); // HashMap speichert ob TPH in einer Methode oder in der Klasse ist; und wenn es in der Methode ist, in welcher Methode @@ -17,15 +24,19 @@ public class FamilyOfGeneratedGenerics { public List classConstraints = new ArrayList<>(); public List methodConstraints = new ArrayList<>(); public HashMap> methodConstraintsWithPosition = new HashMap<>(); +// public List methodAndTPHList = new ArrayList<>(); //not necessary? + public ResultSet resSet; private static final String objectType = Type.getInternalName(Object.class); - public FamilyOfGeneratedGenerics(TPHExtractor tphExtractor) { + public FamilyOfGeneratedGenerics(TPHExtractor tphExtractor, ResultSet resultSet) { + this.resSet = resultSet; this.allConstraints = tphExtractor.allCons; this.posOfTPHs = positionConverter(tphExtractor.allTPHS, tphExtractor.ListOfMethodsAndTph); this.classConstraints = getClassConstraints(allConstraints,posOfTPHs); this.methodConstraints = getMethodConstraints(allConstraints,classConstraints,posOfTPHs, tphExtractor.ListOfMethodsAndTph); - this.methodConstraintsWithPosition = getMethodConstraintsWithPosition(allConstraints,classConstraints,posOfTPHs, tphExtractor.ListOfMethodsAndTph); + this.methodConstraintsWithPosition = getMethodConstraintsWithPosition(allConstraints,classConstraints,posOfTPHs, tphExtractor.ListOfMethodsAndTph, resSet); +// this.methodAndTPHList = tphExtractor.ListOfMethodsAndTph; //not necessary? } public static List getClassConstraints(List cs, HashMap>> posOfTphs) { //Inputparameter List constraintsSet weg @@ -104,7 +115,7 @@ public class FamilyOfGeneratedGenerics { return cs_m; } - public static HashMap> getMethodConstraintsWithPosition(List cs, List cs_cl, HashMap>> posOfTphs, List listOfMethodsAndTph) { + public static HashMap> getMethodConstraintsWithPosition(List cs, List cs_cl, HashMap>> posOfTphs, List listOfMethodsAndTph, ResultSet resSet) { HashMap> tempMethodConstraintsWithPosition = new HashMap<>(); for(MethodAndTPH method: listOfMethodsAndTph){ List methodsAddedToHashMap = new ArrayList<>(); @@ -124,6 +135,8 @@ public class FamilyOfGeneratedGenerics { } listOfThisMethod = getMethodConstraints(cs,cs_cl,posOfTPHsForThisMethod,listOfMethodsAndTph); tempMethodConstraintsWithPosition.put(currentMethod, listOfThisMethod); + + List newMCList = firstLineMethodDefinition(cs, posOfTphs, resSet); } } @@ -464,4 +477,38 @@ public class FamilyOfGeneratedGenerics { } */ + public static List firstLineMethodDefinition(List allConstraints, HashMap>> posOfTphs, ResultSet resSet) { + List tempMC= new ArrayList<>(); +// MethodAndTPH methAndTphs = methodAndTPH; +// Set undCons = methAndTphs.constraints.getUndConstraints(); +// Iterator it = undCons.iterator(); +// while(it.hasNext()) { +// System.out.println(it.next()); +// } + Set res = resSet.results; + Iterator it = res.iterator(); + System.out.println("res: " + res.size() + res); + System.out.println("booooooooo"); + while(it.hasNext()) { + System.out.println(it.next()); + } + System.out.println("booooooooo2"); + +// for(TPHConstraint tphC: allConstraints) { +// } + Predicate filterUndConstraints = ab -> resSet.resolveType((TypePlaceholder)(ab.TA1)).resolvedType instanceof TypePlaceholder; + System.out.println(filterUndConstraints); + Predicate the = x -> resSet.resolveType((TypePlaceholder)(x.TA1)).resolvedType instanceof TypePlaceholder; + ResultPair rp = y -> resSet.resolveType((TypePlaceholder)(y.TA1)).getResultPair(); + +// (resultSet.resolveType((TypePlaceholder)(cs.TA1)).resolvedType instanceof TypePlaceholder) + + + return null; + } + + + + + }