diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForPropertyBackingField.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForPropertyBackingField.kt index 1491ca4f951..37f68270f92 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForPropertyBackingField.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForPropertyBackingField.kt @@ -28,7 +28,7 @@ class AccessorForPropertyBackingField( extensionReceiverParameter: ReceiverParameterDescriptor?, dispatchReceiverParameter: ReceiverParameterDescriptor?, nameSuffix: String, - val fieldAccessorKind: FieldAccessorKind + val fieldAccessorKind: AccessorKind ) : AccessorForPropertyDescriptor( property, delegateType ?: property.type, diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java index 34e86d1c6d0..a59f5a854db 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ExpressionCodegen.java @@ -1942,7 +1942,7 @@ public class ExpressionCodegen extends KtVisitor impleme } private CodegenContext getBackingFieldContext( - @NotNull FieldAccessorKind accessorKind, + @NotNull AccessorKind accessorKind, @NotNull DeclarationDescriptor containingDeclaration ) { switch (accessorKind) { @@ -1992,22 +1992,22 @@ public class ExpressionCodegen extends KtVisitor impleme DeclarationDescriptor containingDeclaration = propertyDescriptor.getContainingDeclaration(); boolean isBackingFieldInClassCompanion = JvmAbi.isPropertyWithBackingFieldInOuterClass(propertyDescriptor); - FieldAccessorKind fieldAccessorKind; + AccessorKind fieldAccessorKind; if (skipLateinitAssertion) { - fieldAccessorKind = FieldAccessorKind.LATEINIT_INTRINSIC; + fieldAccessorKind = AccessorKind.LATEINIT_INTRINSIC; } else if (isBackingFieldInClassCompanion && (forceField || (Visibilities.isPrivate(propertyDescriptor.getVisibility()) && isDefaultAccessor(propertyDescriptor.getGetter()) && isDefaultAccessor(propertyDescriptor.getSetter())))) { - fieldAccessorKind = FieldAccessorKind.IN_CLASS_COMPANION; + fieldAccessorKind = AccessorKind.IN_CLASS_COMPANION; } else if ((syntheticBackingField && context.getFirstCrossInlineOrNonInlineContext().getParentContext().getContextDescriptor() != containingDeclaration)) { - fieldAccessorKind = FieldAccessorKind.FIELD_FROM_LOCAL; + fieldAccessorKind = AccessorKind.FIELD_FROM_LOCAL; } else { - fieldAccessorKind = FieldAccessorKind.NORMAL; + fieldAccessorKind = AccessorKind.NORMAL; } boolean isStaticBackingField = DescriptorUtils.isStaticDeclaration(propertyDescriptor) || AsmUtil.isInstancePropertyWithStaticBackingField(propertyDescriptor); @@ -2022,7 +2022,7 @@ public class ExpressionCodegen extends KtVisitor impleme CodegenContext backingFieldContext = getBackingFieldContext(fieldAccessorKind, containingDeclaration); boolean isPrivateProperty = - fieldAccessorKind != FieldAccessorKind.NORMAL && + fieldAccessorKind != AccessorKind.NORMAL && (AsmUtil.getVisibilityForBackingField(propertyDescriptor, isDelegatedProperty) & ACC_PRIVATE) != 0; DeclarationDescriptor ownerDescriptor; boolean skipPropertyAccessors; @@ -2033,7 +2033,7 @@ public class ExpressionCodegen extends KtVisitor impleme boolean directAccessToSetter = couldUseDirectAccessToProperty(propertyDescriptor, false, isDelegatedProperty, context, state.getShouldInlineConstVals()); - if (fieldAccessorKind == FieldAccessorKind.LATEINIT_INTRINSIC) { + if (fieldAccessorKind == AccessorKind.LATEINIT_INTRINSIC) { skipPropertyAccessors = !isPrivateProperty || context.getClassOrPackageParentContext() == backingFieldContext; if (!skipPropertyAccessors) { @@ -2042,7 +2042,7 @@ public class ExpressionCodegen extends KtVisitor impleme } ownerDescriptor = propertyDescriptor; } - else if (fieldAccessorKind == FieldAccessorKind.IN_CLASS_COMPANION || fieldAccessorKind == FieldAccessorKind.FIELD_FROM_LOCAL) { + else if (fieldAccessorKind == AccessorKind.IN_CLASS_COMPANION || fieldAccessorKind == AccessorKind.FIELD_FROM_LOCAL) { // Do not use accessor 'access$cp' when the property can be accessed directly by its backing field. skipPropertyAccessors = skipAccessorsForPrivateFieldInOuterClass || (directAccessToGetter && (!propertyDescriptor.isVar() || directAccessToSetter)); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java index a441599de4d..4ae083724b0 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java @@ -42,7 +42,6 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; import org.jetbrains.kotlin.resolve.constants.ConstantValue; import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.jvm.AsmTypes; -import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKt; import org.jetbrains.kotlin.resolve.jvm.jvmSignature.JvmMethodSignature; import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt; @@ -726,7 +725,7 @@ public abstract class MemberCodegen { private static class AccessorKey { public final DeclarationDescriptor descriptor; public final ClassDescriptor superCallLabelTarget; - public final FieldAccessorKind fieldAccessorKind; + public final AccessorKind accessorKind; public AccessorKey( @NotNull DeclarationDescriptor descriptor, @Nullable ClassDescriptor superCallLabelTarget, - @NotNull FieldAccessorKind fieldAccessorKind + @NotNull AccessorKind accessorKind ) { this.descriptor = descriptor; this.superCallLabelTarget = superCallLabelTarget; - this.fieldAccessorKind = fieldAccessorKind; + this.accessorKind = accessorKind; } @Override @@ -65,7 +65,7 @@ public abstract class CodegenContext { if (!(obj instanceof AccessorKey)) return false; AccessorKey other = (AccessorKey) obj; return descriptor.equals(other.descriptor) && - fieldAccessorKind == other.fieldAccessorKind && + accessorKind == other.accessorKind && (superCallLabelTarget == null ? other.superCallLabelTarget == null : superCallLabelTarget.equals(other.superCallLabelTarget)); } @@ -73,7 +73,7 @@ public abstract class CodegenContext { @Override public int hashCode() { return 31 * descriptor.hashCode() + - fieldAccessorKind.hashCode() + + accessorKind.hashCode() + (superCallLabelTarget == null ? 0 : superCallLabelTarget.hashCode()); } @@ -402,18 +402,18 @@ public abstract class CodegenContext { boolean getterAccessorRequired, boolean setterAccessorRequired ) { - return getAccessor(propertyDescriptor, FieldAccessorKind.NORMAL, null, superCallTarget, getterAccessorRequired, setterAccessorRequired); + return getAccessor(propertyDescriptor, AccessorKind.NORMAL, null, superCallTarget, getterAccessorRequired, setterAccessorRequired); } public D getAccessorForJvmDefaultCompatibility(@NotNull D descriptor) { - return getAccessor(descriptor, FieldAccessorKind.JVM_DEFAULT_COMPATIBILITY, null, + return getAccessor(descriptor, AccessorKind.JVM_DEFAULT_COMPATIBILITY, null, (ClassDescriptor) descriptor.getContainingDeclaration()); } @NotNull private D getAccessor(@NotNull D descriptor, @Nullable ClassDescriptor superCallTarget) { - return getAccessor(descriptor, FieldAccessorKind.NORMAL, null, superCallTarget); + return getAccessor(descriptor, AccessorKind.NORMAL, null, superCallTarget); } @SuppressWarnings("unchecked") @@ -436,7 +436,7 @@ public abstract class CodegenContext { @NotNull public D getAccessor( @NotNull D possiblySubstitutedDescriptor, - @NotNull FieldAccessorKind accessorKind, + @NotNull AccessorKind accessorKind, @Nullable KotlinType delegateType, @Nullable ClassDescriptor superCallTarget ) { @@ -451,7 +451,7 @@ public abstract class CodegenContext { @NotNull private D getAccessor( @NotNull D possiblySubstitutedDescriptor, - @NotNull FieldAccessorKind accessorKind, + @NotNull AccessorKind accessorKind, @Nullable KotlinType delegateType, @Nullable ClassDescriptor superCallTarget, boolean getterAccessorRequired, @@ -474,7 +474,7 @@ public abstract class CodegenContext { if (accessors.containsKey(key)) { AccessorForCallableDescriptor accessor = accessors.get(key); - assert accessorKind == FieldAccessorKind.NORMAL || + assert accessorKind == AccessorKind.NORMAL || accessor instanceof AccessorForPropertyBackingField : "There is already exists accessor with isForBackingField = false in this context"; return (D) accessor; } @@ -489,7 +489,7 @@ public abstract class CodegenContext { } else if (descriptor instanceof PropertyDescriptor) { PropertyDescriptor propertyDescriptor = (PropertyDescriptor) descriptor; - if (accessorKind == FieldAccessorKind.NORMAL) { + if (accessorKind == AccessorKind.NORMAL) { AccessorForPropertyDescriptorFactory factory = new AccessorForPropertyDescriptorFactory(propertyDescriptor, contextDescriptor, superCallTarget, nameSuffix); propertyAccessorFactories.put(key, factory); @@ -502,8 +502,8 @@ public abstract class CodegenContext { accessor = new AccessorForPropertyBackingField( propertyDescriptor, contextDescriptor, delegateType, - accessorKind == FieldAccessorKind.IN_CLASS_COMPANION ? null : propertyDescriptor.getExtensionReceiverParameter(), - accessorKind == FieldAccessorKind.IN_CLASS_COMPANION ? null : propertyDescriptor.getDispatchReceiverParameter(), + accessorKind == AccessorKind.IN_CLASS_COMPANION ? null : propertyDescriptor.getExtensionReceiverParameter(), + accessorKind == AccessorKind.IN_CLASS_COMPANION ? null : propertyDescriptor.getDispatchReceiverParameter(), nameSuffix, accessorKind ); } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/syntheticAccessorUtil.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/syntheticAccessorUtil.kt index 4b922883110..bfa0b2658c6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/syntheticAccessorUtil.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/syntheticAccessorUtil.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.resolve.DescriptorUtils -enum class FieldAccessorKind(val suffix: String) { +enum class AccessorKind(val suffix: String) { NORMAL("p"), IN_CLASS_COMPANION("cp"), FIELD_FROM_LOCAL("lp"), @@ -31,7 +31,7 @@ private fun CallableMemberDescriptor.getJvmName() = DescriptorUtils.getJvmName(this) ?: name.asString() fun getAccessorNameSuffix( - descriptor: CallableMemberDescriptor, superCallDescriptor: ClassDescriptor?, accessorKind: FieldAccessorKind + descriptor: CallableMemberDescriptor, superCallDescriptor: ClassDescriptor?, accessorKind: AccessorKind ): String { val suffix = when (descriptor) { is ConstructorDescriptor -> @@ -43,6 +43,6 @@ fun getAccessorNameSuffix( else -> throw UnsupportedOperationException("Do not know how to create accessor for descriptor $descriptor") } - if (accessorKind == FieldAccessorKind.JVM_DEFAULT_COMPATIBILITY) return suffix + "$" + FieldAccessorKind.JVM_DEFAULT_COMPATIBILITY.suffix + if (accessorKind == AccessorKind.JVM_DEFAULT_COMPATIBILITY) return suffix + "$" + AccessorKind.JVM_DEFAULT_COMPATIBILITY.suffix return if (superCallDescriptor == null) suffix else "$suffix\$s${superCallDescriptor.name.asString().hashCode()}" }