Support interface delegation to inline class values (KT-27318)

This commit is contained in:
Dmitry Petrov
2018-10-01 14:15:44 +03:00
parent 5480bf69e8
commit 6fa436911a
7 changed files with 47 additions and 1 deletions
@@ -1582,10 +1582,13 @@ public class FunctionCodegen {
reg += argTypes[i].getSize();
}
String internalName = typeMapper.mapType(toClass).getInternalName();
String internalName = typeMapper.mapClass(toClass).getInternalName();
if (toClass.getKind() == ClassKind.INTERFACE) {
iv.invokeinterface(internalName, delegateToMethod.getName(), delegateToMethod.getDescriptor());
}
else if (toClass.isInline()) {
iv.invokestatic(internalName, delegateToMethod.getName(), delegateToMethod.getDescriptor(), false);
}
else {
iv.invokevirtual(internalName, delegateToMethod.getName(), delegateToMethod.getDescriptor(), false);
}