Compare commits
2 Commits
0eb48ba425
...
31df7a65f0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31df7a65f0 | ||
|
|
185989ba62 |
@@ -1,13 +0,0 @@
|
||||
import java.lang.String;
|
||||
|
||||
public class Bug365a{
|
||||
swap(f){
|
||||
return x -> y -> f.apply(y).apply(x);
|
||||
}
|
||||
|
||||
|
||||
public ex2() {
|
||||
var func = x -> y -> x + y;
|
||||
return swap(func).apply("A").apply("B");
|
||||
}
|
||||
}
|
||||
@@ -1099,9 +1099,9 @@ public class StatementGenerator {
|
||||
block = lambdaGenerator.convert(expression.lambdaBody().block(), true);
|
||||
}
|
||||
List<RefTypeOrTPHOrWildcardOrGeneric> funNParams = new ArrayList<>();
|
||||
funNParams.add(TypePlaceholder.fresh(expression.getStart()));// ret-Type
|
||||
funNParams.add(TypePlaceholder.fresh(expression.getStart(), -1, false));// ret-Type
|
||||
params.getFormalparalist().forEach(formalParameter -> // Für jeden Parameter einen TPH anfügen:
|
||||
funNParams.add(TypePlaceholder.fresh(expression.getStart())));
|
||||
funNParams.add(TypePlaceholder.fresh(expression.getStart(), 1, false)));
|
||||
RefTypeOrTPHOrWildcardOrGeneric lambdaType = TypePlaceholder.fresh(expression.getStart());
|
||||
// RefType lambdaType = new
|
||||
// RefType(reg.getName("Fun"+params.getFormalparalist().size()),
|
||||
|
||||
@@ -73,7 +73,7 @@ public class TYPEStmt implements StatementVisitor {
|
||||
|
||||
@Override
|
||||
public void visit(LambdaExpression lambdaExpression) {
|
||||
TypePlaceholder tphRetType = TypePlaceholder.fresh(new NullToken());
|
||||
TypePlaceholder tphRetType = TypePlaceholder.fresh(new NullToken(), -1, false);
|
||||
List<RefTypeOrTPHOrWildcardOrGeneric> lambdaParams = lambdaExpression.params.getFormalparalist().stream().map((formalParameter -> formalParameter.getType())).collect(Collectors.toList());
|
||||
lambdaParams.add(tphRetType);
|
||||
// lambdaParams.add(0,tphRetType);
|
||||
@@ -635,18 +635,8 @@ public class TYPEStmt implements StatementVisitor {
|
||||
params.add(resolver.resolve(new GenericRefType(gtv.getName(), new NullToken())));
|
||||
}
|
||||
RefTypeOrTPHOrWildcardOrGeneric receiverType;
|
||||
//alle Variance auf COntravariant setzen
|
||||
|
||||
if (receiver instanceof FunNClass) {
|
||||
params.forEach(x -> {
|
||||
if (x instanceof TypePlaceholder) {
|
||||
((TypePlaceholder) x).setVariance(1);
|
||||
}}
|
||||
);
|
||||
//Returntyp auf Contravariance setzen.
|
||||
RefTypeOrTPHOrWildcardOrGeneric para;
|
||||
if ((para= params.getLast()) instanceof TypePlaceholder) {
|
||||
((TypePlaceholder) para).setVariance(-1);
|
||||
}
|
||||
receiverType = new RefType(new JavaClassName(receiver.getClassName().toString() + "$$"), params, new NullToken()); // new FunN(params);
|
||||
} else {
|
||||
receiverType = new RefType(receiver.getClassName(), params, new NullToken());
|
||||
|
||||
@@ -1445,16 +1445,6 @@ public class TestComplete {
|
||||
//assertEquals(0.0, ex2.invoke(instance));
|
||||
}
|
||||
@Test
|
||||
public void testBug365a() throws Exception {
|
||||
var classFiles = generateClassFiles(createClassLoader(), "Bug365a.jav");
|
||||
var clazz = classFiles.get("Bug365");
|
||||
var instance = clazz.getDeclaredConstructor().newInstance();
|
||||
var m = clazz.getDeclaredMethod("ex1");
|
||||
assertEquals("ABC", m.invoke(instance));
|
||||
//var ex2 = clazz.getDeclaredMethod("ex2");
|
||||
//assertEquals(0.0, ex2.invoke(instance));
|
||||
}
|
||||
@Test
|
||||
public void testBug366() throws Exception {
|
||||
var classFiles = generateClassFiles(createClassLoader(), "Bug366.jav");
|
||||
var clazz = classFiles.get("Bug366");
|
||||
|
||||
Reference in New Issue
Block a user