Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
4048902442 |
3
resources/bytecode/javFiles/Bug378Id.jav
Normal file
3
resources/bytecode/javFiles/Bug378Id.jav
Normal file
@@ -0,0 +1,3 @@
|
||||
class Bug378Id {
|
||||
id2 = x -> x;
|
||||
}
|
8
resources/bytecode/javFiles/Bug378Main.jav
Normal file
8
resources/bytecode/javFiles/Bug378Main.jav
Normal file
@@ -0,0 +1,8 @@
|
||||
import Bug378Id;
|
||||
import java.lang.Integer;
|
||||
|
||||
class Bug378Main {
|
||||
static main(args) {
|
||||
var hallo = (new Bug378Id<Integer>().id2).apply(1);
|
||||
}
|
||||
}
|
@@ -161,7 +161,6 @@ public class StatementToTargetExpression implements ASTVisitor {
|
||||
|
||||
@Override
|
||||
public void visit(FieldVar fieldVar) {
|
||||
var isStatic = false;
|
||||
var type = converter.convert(fieldVar.receiver.getType());
|
||||
var clazz = converter.compiler.getClass(new JavaClassName(type.name()));
|
||||
var field = clazz.getField(fieldVar.fieldVarName).orElseThrow();
|
||||
|
@@ -33,4 +33,10 @@ public record TargetFunNType(String name, List<TargetType> funNParams, List<Targ
|
||||
public String getInternalName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toSignature() {
|
||||
var args = FunNGenerator.getArguments(params);
|
||||
return "LFun" + args.size() + "$$" + TargetSpecializedType.signatureParameters(params) + ";";
|
||||
}
|
||||
}
|
||||
|
@@ -8,14 +8,20 @@ public sealed interface TargetSpecializedType extends TargetType permits TargetF
|
||||
@Override
|
||||
default String toSignature() {
|
||||
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 += "<";
|
||||
for (var param : params()) {
|
||||
for (var param : params) {
|
||||
ret += param.toSignature();
|
||||
}
|
||||
ret += ">";
|
||||
}
|
||||
ret += ";";
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -1476,4 +1476,14 @@ public class TestComplete {
|
||||
var m = clazz.getDeclaredMethod("main");
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user