Compare commits

...

1 Commits

Author SHA1 Message Date
4048902442 Work on #378
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 2m45s
2025-09-25 17:24:32 +02:00
6 changed files with 36 additions and 4 deletions

View File

@@ -0,0 +1,3 @@
class Bug378Id {
id2 = x -> x;
}

View File

@@ -0,0 +1,8 @@
import Bug378Id;
import java.lang.Integer;
class Bug378Main {
static main(args) {
var hallo = (new Bug378Id<Integer>().id2).apply(1);
}
}

View File

@@ -161,7 +161,6 @@ public class StatementToTargetExpression implements ASTVisitor {
@Override @Override
public void visit(FieldVar fieldVar) { public void visit(FieldVar fieldVar) {
var isStatic = false;
var type = converter.convert(fieldVar.receiver.getType()); var type = converter.convert(fieldVar.receiver.getType());
var clazz = converter.compiler.getClass(new JavaClassName(type.name())); var clazz = converter.compiler.getClass(new JavaClassName(type.name()));
var field = clazz.getField(fieldVar.fieldVarName).orElseThrow(); var field = clazz.getField(fieldVar.fieldVarName).orElseThrow();

View File

@@ -33,4 +33,10 @@ public record TargetFunNType(String name, List<TargetType> funNParams, List<Targ
public String getInternalName() { public String getInternalName() {
return name; return name;
} }
@Override
public String toSignature() {
var args = FunNGenerator.getArguments(params);
return "LFun" + args.size() + "$$" + TargetSpecializedType.signatureParameters(params) + ";";
}
} }

View File

@@ -8,14 +8,20 @@ public sealed interface TargetSpecializedType extends TargetType permits TargetF
@Override @Override
default String toSignature() { default String toSignature() {
String ret = "L" + getInternalName(); String ret = "L" + getInternalName();
if (!params().isEmpty()) { ret += signatureParameters(params());
ret += ";";
return ret;
}
static String signatureParameters(List<TargetType> params) {
var ret = "";
if (!params.isEmpty()) {
ret += "<"; ret += "<";
for (var param : params()) { for (var param : params) {
ret += param.toSignature(); ret += param.toSignature();
} }
ret += ">"; ret += ">";
} }
ret += ";";
return ret; return ret;
} }

View File

@@ -1476,4 +1476,14 @@ public class TestComplete {
var m = clazz.getDeclaredMethod("main"); var m = clazz.getDeclaredMethod("main");
m.invoke(null); m.invoke(null);
} }
@Disabled("Doesn't work yet")
@Test
public void testBug378() throws Exception {
var classFiles = generateClassFiles(createClassLoader(), "Bug378Main.jav");
var clazz = classFiles.get("Bug378Main");
var main = clazz.getDeclaredMethod("main", List.class);
main.setAccessible(true);
main.invoke(null, List.of());
}
} }