Skip to content

Commit ba8fadc

Browse files
committed
Fix lambda interfaces not generating correct bytecode
1 parent dbb6686 commit ba8fadc

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/JavaBytecodeContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,10 @@ public void register(String name, byte[] bytecode) {
5858
}
5959

6060
private void createLambdaInterface(JavaSynthesizedFunction function) {
61+
String signature = "<" + new JavaTypeGenericVisitor(this).getGenericSignature(function.typeParameters) + ">Ljava/lang/Object;";
6162
ClassWriter ifaceWriter = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
62-
ifaceWriter.visitAnnotation("java/lang/FunctionalInterface", true).visitEnd();
63-
ifaceWriter.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_INTERFACE | Opcodes.ACC_ABSTRACT, function.cls.internalName, null, "java/lang/Object", null);
63+
ifaceWriter.visitAnnotation("Ljava/lang/FunctionalInterface;", true).visitEnd();
64+
ifaceWriter.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC | Opcodes.ACC_INTERFACE | Opcodes.ACC_ABSTRACT, function.cls.internalName, signature, "java/lang/Object", null);
6465

6566
ifaceWriter
6667
.visitMethod(

0 commit comments

Comments
 (0)