From 3db9b069c77335050650e41942222b348cd02f7c Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Tue, 7 Oct 2014 10:47:52 +0200 Subject: [PATCH] makeBasicAssumptions verbessert. Nimmt auch nun die Superklassen der BasicAssumptions auf --- .../dhbwstuttgart/syntaxtree/SourceFile.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java index 41dc15892..50f7bdc2e 100755 --- a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java +++ b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java @@ -311,9 +311,14 @@ public class SourceFile for(ClassAssumption cAss : ass.getClassAssumptions()){ Type t1 = cAss.getAssumedClass().getType(); - Type t2 = cAss.getAssumedClass().getType(); + Type t2 = cAss.getAssumedClass().getSuperClass(); Pair p = new Pair(t1, t2); - if(! t1.equals(t2))vFC.add(p); //Um FC_TTO darf kein T <. T stehen. + System.out.println("FCPair: "+p); + if(! t1.equals(t2)){ + vFC.add(p); //Um FC_TTO darf kein T <. T stehen. + }else{ + System.out.println("Wurde nicht aufgenommen"); + } } for( int i = 0; i < KlassenVektor.size(); i++ ) @@ -668,7 +673,7 @@ public class SourceFile //FiniteClosure generieren: FC_TTO finiteClosure = this.makeFC(globalAssumptions); - System.out.println("FiniteClosure: \n"+finiteClosure); + typinferenzLog.debug("FiniteClosure: \n"+finiteClosure); ConstraintsSet oderConstraints = new ConstraintsSet(); //Alle Constraints der in dieser SourceFile enthaltenen Klassen sammeln: @@ -682,6 +687,7 @@ public class SourceFile //Unmögliche ConstraintsSets aussortieren durch Unifizierung oderConstraints.filterWrongConstraints((pairs)->{return Unify.unify(pairs,finiteClosure);}); + typinferenzLog.debug("Übriggebliebene Konstraints:\n"+oderConstraints+"\n"); //Die Constraints in Pair's umwandeln (Karthesisches Produkt bilden): Vector> xConstraints = new Vector>();// = oderConstraints.getConstraints(); for(Vector uC:oderConstraints.getConstraints()){ //mit dem getConstraints-Aufruf wird das Karthesische Produkt erzeugt. @@ -1258,9 +1264,15 @@ public class SourceFile private Class getSuperClassOfJREClass(java.lang.Class x, TypeAssumptions ass) { Class ret; java.lang.Class s = x.getSuperclass(); - if(s == null)return new Class("java.lang.Object",new Modifiers(), 0); + if(s == null){ + return new Class("java.lang.Object",new Modifiers(), 0); + } Class ss = this.getSuperClassOfJREClass(s, ass); - ret = new Class(x.getName(),ss.getType(),new Modifiers(),0); + ret = new Class(s.getName(),ss.getType(),new Modifiers(),0); + + ass.addClassAssumption(new ClassAssumption(ss)); //Die beiden SuperKlassen den Assumptions anfügen... + ass.addClassAssumption(new ClassAssumption(ret)); + return ret; }