Support properties in compatibility mode
This commit is contained in:
@@ -757,6 +757,23 @@ public abstract class MemberCodegen<T extends KtPureElement/* TODO: & KtDeclarat
|
||||
|
||||
@Override
|
||||
public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) {
|
||||
if (accessorForCallableDescriptor.getAccessorKind() == AccessorKind.JVM_DEFAULT_COMPATIBILITY) {
|
||||
markLineNumberForElement(element.getPsiOrParent(), codegen.v);
|
||||
PropertyDescriptor descriptor = unwrapFakeOverrideToAnyDeclaration(original).getOriginal();
|
||||
if (descriptor != original) {
|
||||
descriptor = (PropertyDescriptor) descriptor
|
||||
.copy(original.getContainingDeclaration(), descriptor.getModality(), descriptor.getVisibility(),
|
||||
descriptor.getKind(), false);
|
||||
}
|
||||
boolean isGetter = callableDescriptor instanceof PropertyGetterDescriptor;
|
||||
PropertyAccessorDescriptor originalAccessor = isGetter ? descriptor.getGetter(): descriptor.getSetter();
|
||||
PropertyAccessorDescriptor accessorDescriptor = isGetter ? accessor.getGetter() : accessor.getSetter();
|
||||
generateMethodCallTo(originalAccessor, accessorDescriptor, codegen.v)
|
||||
.coerceTo(signature.getReturnType(), null, codegen.v);
|
||||
codegen.v.areturn(signature.getReturnType());
|
||||
return;
|
||||
}
|
||||
|
||||
AccessorKind fieldAccessorKind = accessor instanceof AccessorForPropertyBackingField
|
||||
? accessor.getAccessorKind() : null;
|
||||
boolean syntheticBackingField = fieldAccessorKind == AccessorKind.FIELD_FROM_LOCAL;
|
||||
|
||||
Reference in New Issue
Block a user