forked from JavaTX/JavaCompilerCore
modified: src/de/dhbwstuttgart/typeinference/unify/TypeUnifyTask.java
modified: test/javFiles/Matrix.jav Fehler entdeckt, in unifyCase1 fuer die Typen aus FC keine fresh TV getsetzt werden.
This commit is contained in:
parent
bd98bed5ca
commit
3638edfa73
@ -393,7 +393,7 @@ public class TypeUnifyTask extends RecursiveTask<Set<Set<UnifyPair>>> {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nextSetasList.size() == 0 && isUndefinedPairSetSet(result)) {
|
||||
if (nextSetasList.size() == 0 && isUndefinedPairSetSet(result) && nextSet.size() > 1) {
|
||||
return result;
|
||||
}
|
||||
//else result.stream().filter(y -> !isUndefinedPairSet(y));
|
||||
@ -749,16 +749,19 @@ public class TypeUnifyTask extends RecursiveTask<Set<Set<UnifyPair>>> {
|
||||
//System.out.println(i);
|
||||
//if (i == 62)
|
||||
// System.out.println(tqp.toString());
|
||||
Optional<Unifier> opt = stdUnify.unify(tqp, thetaPrime);
|
||||
if (!opt.isPresent())
|
||||
Optional<Unifier> opt = stdUnify.unify(tqp.setTypeParams(newTp), thetaPrime);
|
||||
if (!opt.isPresent()) tpq muesse freshtv gesetzt werden PL 2018-03-16
|
||||
continue;
|
||||
|
||||
Unifier unifier = opt.get();
|
||||
unifier.swapPlaceholderSubstitutions(thetaPrime.getTypeParams());
|
||||
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));
|
||||
|
||||
}
|
||||
//List<UnifyType> freshTphs = new ArrayList<>(); PL 18-02-06 in die For-Schleife verschoben
|
||||
for (UnifyType tq : thetaQs) {
|
||||
Set<UnifyType> smaller = fc.smaller(unifier.apply(tq));
|
||||
|
@ -17,8 +17,8 @@ class Matrix extends Vector<Vector<Integer>> {
|
||||
var k = 0;
|
||||
while(k < v1.size()) {
|
||||
//erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j);
|
||||
//erg = add1(erg, mul1(v1.elementAt(k),
|
||||
// m.elementAt(k).elementAt(j)));
|
||||
erg = add1(erg, mul1(v1.elementAt(k),
|
||||
m.elementAt(k).elementAt(j)));
|
||||
k++; }
|
||||
v2.addElement(new Integer(erg));
|
||||
j++; }
|
||||
|
Loading…
Reference in New Issue
Block a user