Don't use methods from super interface if call was on inline class type
Some methods (like `size` from kotlin.collections.Collection) have special rules for mapping and overriding. For example, when we call `size`, normally there will be `INVOKEVIRTUAL size()` in the bytecode, but for inline classes it should be `INVOKESTATIC ...$Erased.getSize()`
This commit is contained in:
@@ -881,7 +881,7 @@ public class KotlinTypeMapper {
|
||||
|
||||
FunctionDescriptor overriddenSpecialBuiltinFunction =
|
||||
SpecialBuiltinMembers.getOverriddenBuiltinReflectingJvmDescriptor(functionDescriptor.getOriginal());
|
||||
FunctionDescriptor functionToCall = overriddenSpecialBuiltinFunction != null && !superCall
|
||||
FunctionDescriptor functionToCall = overriddenSpecialBuiltinFunction != null && !superCall && !toInlinedErasedClass
|
||||
? overriddenSpecialBuiltinFunction.getOriginal()
|
||||
: functionDescriptor.getOriginal();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user