forked from JavaTX/JavaCompilerCore
Unify Bugfix Bug 5 geloest und fuer TypVar <. RefType: ? extends Ty <. RefType eingefuegt
This commit is contained in:
parent
618847bf4f
commit
7889783e8a
@ -804,7 +804,14 @@ public class SourceFile
|
|||||||
|
|
||||||
//Schritt 4: Unifikation
|
//Schritt 4: Unifikation
|
||||||
Vector<Vector<Vector<Pair>>> vecunifyResult =
|
Vector<Vector<Vector<Pair>>> vecunifyResult =
|
||||||
streamconstraintsclone.map(x -> Unify.unify(x, finiteClosure)).collect(Vector::new, Vector::add, Vector::addAll);
|
//streamconstraintsclone.map(x -> Unify.unify(x, finiteClosure)).collect(Vector::new, Vector::add, Vector::addAll);
|
||||||
|
//DEBUG-Variante
|
||||||
|
streamconstraintsclone.map(x ->
|
||||||
|
{ Vector<Vector<Pair>> z = Unify.unify(x, finiteClosure);
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
).collect(Vector::new, Vector::add, Vector::addAll);
|
||||||
|
|
||||||
|
|
||||||
//card gibt die Cardinalitaet der unifizierten Mengen an
|
//card gibt die Cardinalitaet der unifizierten Mengen an
|
||||||
Vector<Integer> card = vecunifyResult.stream().map(x -> x.size()).collect(Vector::new, Vector::add, Vector::addAll);
|
Vector<Integer> card = vecunifyResult.stream().map(x -> x.size()).collect(Vector::new, Vector::add, Vector::addAll);
|
||||||
|
@ -7,6 +7,7 @@ import java.util.Enumeration;
|
|||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import de.dhbwstuttgart.logger.Logger;
|
import de.dhbwstuttgart.logger.Logger;
|
||||||
import de.dhbwstuttgart.logger.Section;
|
import de.dhbwstuttgart.logger.Section;
|
||||||
@ -443,7 +444,25 @@ public class Unify
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//aus {ty <. ty'} {? extends ty <. ty'} erzeugen //angefuegt PL 15-03-03
|
||||||
|
Stream<Vector<Pair>> extergMenge1 =
|
||||||
|
ergMenge1.stream().map(v ->
|
||||||
|
v.stream().map(pa ->
|
||||||
|
new Pair(new ExtendsWildcardType(pa.getTA1Copy().getOffset(), pa.getTA1Copy()), pa.getTA2Copy(), pa.GetOperator(), pa.bSubst)
|
||||||
|
).collect(Vector::new, Vector::add, Vector::addAll));
|
||||||
|
|
||||||
cartProduktSets.add(ergMenge1);
|
cartProduktSets.add(ergMenge1);
|
||||||
|
cartProduktSets.add(extergMenge1.collect(Vector::new, Vector::add, Vector::addAll));
|
||||||
|
}
|
||||||
|
else if(p.OperatorSmaller() && p.TA2 instanceof GenericTypeVar)
|
||||||
|
{
|
||||||
|
//Paar unverändert lassen, wenn eine GenericTypeVar ist
|
||||||
|
Vector<Vector<Pair>> setofsetofpairs = new Vector<Vector<Pair>>();
|
||||||
|
Vector<Pair> vTmp = new Vector<Pair>();
|
||||||
|
vTmp.add(p);
|
||||||
|
setofsetofpairs.add(vTmp);
|
||||||
|
cartProduktSets.add(setofsetofpairs);
|
||||||
}
|
}
|
||||||
else if(p.OperatorSmallerExtends())
|
else if(p.OperatorSmallerExtends())
|
||||||
{
|
{
|
||||||
@ -582,6 +601,10 @@ public class Unify
|
|||||||
cartProduktSets.add(setofsetofpairs);
|
cartProduktSets.add(setofsetofpairs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
//kein programmierter Fall konnte angewandt werden. PL 15-03-05
|
||||||
|
return new Vector<Vector<Pair>>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (p.TA2 instanceof TypePlaceholder)
|
else if (p.TA2 instanceof TypePlaceholder)
|
||||||
{
|
{
|
||||||
@ -725,6 +748,10 @@ public class Unify
|
|||||||
cartProduktSets.add(generateSetOfSetOfPair(p.TA2,grErg));
|
cartProduktSets.add(generateSetOfSetOfPair(p.TA2,grErg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
//kein programmierter Fall konnte angewandt werden. PL 15-03-05
|
||||||
|
return new Vector<Vector<Pair>>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Schritt 4, Teil 2: Kartesisches Produkt bilden.
|
//Schritt 4, Teil 2: Kartesisches Produkt bilden.
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
class GenericParaListInsertTest{
|
class GenericParaListInsertTest{
|
||||||
methode(a){return a;}
|
<A, ABH extends A, C extends ABH, D, E extends D> A methode(a){return a;}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user