modified: src/de/dhbwstuttgart/core/JavaTXCompiler.java
LogAusgabe FC modified: src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java fresh TV in unifyCase1 auf alle cs ausgedehnt modified: test/javFiles/Matrix.jav
This commit is contained in:
parent
78db0f0177
commit
f4bc057aff
@ -98,6 +98,8 @@ public class JavaTXCompiler {
|
|||||||
Set<Set<UnifyPair>> results = new HashSet<>();
|
Set<Set<UnifyPair>> results = new HashSet<>();
|
||||||
try {
|
try {
|
||||||
FileWriter logFile = new FileWriter(new File(System.getProperty("user.dir")+"/test/logFiles/"+"log"));
|
FileWriter logFile = new FileWriter(new File(System.getProperty("user.dir")+"/test/logFiles/"+"log"));
|
||||||
|
logFile.write("FC:\\" + finiteClosure.toString()+"\n");
|
||||||
|
logFile.flush();
|
||||||
for (List<Constraint<UnifyPair>> xCons : unifyCons.cartesianProduct()) {
|
for (List<Constraint<UnifyPair>> xCons : unifyCons.cartesianProduct()) {
|
||||||
Set<UnifyPair> xConsSet = new HashSet<>();
|
Set<UnifyPair> xConsSet = new HashSet<>();
|
||||||
for (Constraint<UnifyPair> constraint : xCons) {
|
for (Constraint<UnifyPair> constraint : xCons) {
|
||||||
|
@ -719,7 +719,17 @@ public class TypeUnifyTask extends RecursiveTask<Set<Set<UnifyPair>>> {
|
|||||||
//cs.add(thetaPrime);
|
//cs.add(thetaPrime);
|
||||||
//PL 18-02-06 entfernt
|
//PL 18-02-06 entfernt
|
||||||
|
|
||||||
for(UnifyType c : cs) {
|
//cs muessen fresh Typvars gesetzt werden PL 2018-03-18
|
||||||
|
Set<UnifyType> csPHRenamed = cs.stream().map(x -> {
|
||||||
|
BinaryOperator<HashMap<PlaceholderType,PlaceholderType>> combiner = (aa,b) -> { aa.putAll(b); return aa;};
|
||||||
|
HashMap<PlaceholderType,PlaceholderType> hm = x.getInvolvedPlaceholderTypes().stream()
|
||||||
|
.reduce(new HashMap<PlaceholderType,PlaceholderType>(),
|
||||||
|
(aa, b)-> { aa.put(b,PlaceholderType.freshPlaceholder()); return aa; }, combiner);
|
||||||
|
return x.accept(new freshPlaceholder(), hm);
|
||||||
|
}).collect(Collectors.toCollection(HashSet::new));
|
||||||
|
|
||||||
|
|
||||||
|
for(UnifyType c : csPHRenamed) {
|
||||||
//PL 18-02-05 getChildren durch smaller ersetzt in getChildren werden die Varianlen nicht ersetzt.
|
//PL 18-02-05 getChildren durch smaller ersetzt in getChildren werden die Varianlen nicht ersetzt.
|
||||||
Set<UnifyType> thetaQs = fc.smaller(c).stream().collect(Collectors.toCollection(HashSet::new));
|
Set<UnifyType> thetaQs = fc.smaller(c).stream().collect(Collectors.toCollection(HashSet::new));
|
||||||
//Set<UnifyType> thetaQs = fc.getChildren(c).stream().collect(Collectors.toCollection(HashSet::new));
|
//Set<UnifyType> thetaQs = fc.getChildren(c).stream().collect(Collectors.toCollection(HashSet::new));
|
||||||
@ -746,18 +756,8 @@ public class TypeUnifyTask extends RecursiveTask<Set<Set<UnifyPair>>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(UnifyType tqp : thetaQPrimes) {
|
for(UnifyType tqp : thetaQPrimes) {
|
||||||
//System.out.println(tqp.toString());
|
Optional<Unifier> opt = stdUnify.unify(tqp, thetaPrime);
|
||||||
//i++;
|
if (!opt.isPresent()) {
|
||||||
//System.out.println(i);
|
|
||||||
//if (i == 62)
|
|
||||||
// System.out.println(tqp.toString());
|
|
||||||
BinaryOperator<HashMap<PlaceholderType,PlaceholderType>> combiner = (x,y) -> { x.putAll(y); return x;};
|
|
||||||
HashMap<PlaceholderType,PlaceholderType> hm = tqp.getInvolvedPlaceholderTypes().stream()
|
|
||||||
.reduce(new HashMap<PlaceholderType,PlaceholderType>(),
|
|
||||||
(x, y)-> { x.put(y,PlaceholderType.freshPlaceholder()); return x; }, combiner);
|
|
||||||
Optional<Unifier> opt = stdUnify.unify(
|
|
||||||
tqp.accept(new freshPlaceholder(), hm), thetaPrime);
|
|
||||||
if (!opt.isPresent()) { //tqp muesse fresh Typvars gesetzt werden PL 2018-03-16
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -765,9 +765,6 @@ public class TypeUnifyTask extends RecursiveTask<Set<Set<UnifyPair>>> {
|
|||||||
unifier.swapPlaceholderSubstitutions(thetaPrime.getTypeParams());
|
unifier.swapPlaceholderSubstitutions(thetaPrime.getTypeParams());
|
||||||
Set<UnifyPair> substitutionSet = new HashSet<>();
|
Set<UnifyPair> substitutionSet = new HashSet<>();
|
||||||
for (Entry<PlaceholderType, UnifyType> sigma : unifier) {
|
for (Entry<PlaceholderType, UnifyType> sigma : unifier) {
|
||||||
if (tqp.getInvolvedPlaceholderTypes().contains(sigma.getKey())) { //PL eingefuegt 2018-03-16
|
|
||||||
break; //TypePalceHolder aus dem FC nicht in das substitutionSet }
|
|
||||||
}
|
|
||||||
substitutionSet.add(new UnifyPair(sigma.getKey(), sigma.getValue(), PairOperator.EQUALSDOT));
|
substitutionSet.add(new UnifyPair(sigma.getKey(), sigma.getValue(), PairOperator.EQUALSDOT));
|
||||||
}
|
}
|
||||||
//List<UnifyType> freshTphs = new ArrayList<>(); PL 18-02-06 in die For-Schleife verschoben
|
//List<UnifyType> freshTphs = new ArrayList<>(); PL 18-02-06 in die For-Schleife verschoben
|
||||||
|
@ -17,7 +17,7 @@ class Matrix extends Vector<Vector<Integer>> {
|
|||||||
var k = 0;
|
var k = 0;
|
||||||
while(k < v1.size()) {
|
while(k < v1.size()) {
|
||||||
//erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j);
|
//erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j);
|
||||||
erg = add(erg, mul1(v1.elementAt(k),
|
erg = add1(erg, mul1(v1.elementAt(k),
|
||||||
m.elementAt(k).elementAt(j)));
|
m.elementAt(k).elementAt(j)));
|
||||||
k++; }
|
k++; }
|
||||||
v2.addElement(new Integer(erg));
|
v2.addElement(new Integer(erg));
|
||||||
|
Loading…
Reference in New Issue
Block a user