From ae8a90f7b4f0fb724e2dfae2822b43898916317c Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 21 Jan 2019 17:08:25 +0300 Subject: [PATCH] KT-29144 Interface companion object field should always be ACC_PUBLIC --- .../kotlin/codegen/ImplementationBodyCodegen.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index ebef33160d0..e635d9fda90 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -795,16 +795,14 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { !properVisibilityForCompanionObjectInstanceField && (hasPrivateOrProtectedProperVisibility || hasPackagePrivateProperVisibility || isNonIntrinsicPrivateCompanionObjectInInterface(companionObjectDescriptor)); - boolean doNotGeneratePublic = - properVisibilityForCompanionObjectInstanceField && hasPrivateOrProtectedProperVisibility; - int fieldAccessFlags; - if (doNotGeneratePublic) { - fieldAccessFlags = ACC_STATIC | ACC_FINAL; + boolean fieldIsForcedToBePublic = + JvmCodegenUtil.isJvmInterface(descriptor) || + !properVisibilityForCompanionObjectInstanceField; + int fieldAccessFlags = ACC_STATIC | ACC_FINAL; + if (fieldIsForcedToBePublic) { + fieldAccessFlags |= ACC_PUBLIC; } else { - fieldAccessFlags = ACC_PUBLIC | ACC_STATIC | ACC_FINAL; - } - if (properVisibilityForCompanionObjectInstanceField) { fieldAccessFlags |= properFieldVisibilityFlag; } if (fieldShouldBeDeprecated) {