retrolambda icon indicating copy to clipboard operation
retrolambda copied to clipboard

Cannot explicitly call default method in an interface on Android

Open sriharshachilakapati opened this issue 8 years ago • 3 comments

I have a default method in an interface, and I tried to call it explicitly from the same method in the implementing class and it is generating an exception:

@Override
public void glDrawArrays(int primitive, int offset, int vertexCount)
{
    IGraphicsDevice.super.glDrawArrays(primitive, offset, vertexCount);
    GLES30.glDrawArrays(primitive, offset, vertexCount);
}

This is the code that I'm having and it works fine under standard Java 8. But when doing the same code (back ported to Java 1.6 on android) generates the following error:

Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstInterfaceMethodRef cannot be cast to com.android.dx.rop.cst.CstMethodRef

I'm using this with latest gradle-retrolambda and retrolambda. I'm not even using Progaurd, so I'm not sure why this is being caused. All the original default method does is that it increments a static variable from a final inner class of the same interface.

sriharshachilakapati avatar Jun 29 '16 16:06 sriharshachilakapati

@orfjackal Sorry for pinging directly, but do you need any more information regarding this issue?

sriharshachilakapati avatar Jul 02 '16 11:07 sriharshachilakapati

It would help to have a SSCCE for reproducing it. I haven't yet had time to look into this issue, but that would help to make it faster to fix.

luontola avatar Jul 02 '16 22:07 luontola

The error message about CstInterfaceMethodRef and CstMethodRef sounds like it can be something similar to #119

luontola avatar Jan 17 '17 19:01 luontola