KT-29144 Interface companion object field should always be ACC_PUBLIC

This commit is contained in:
Dmitry Petrov
2019-01-21 17:08:25 +03:00
parent 129ea49d64
commit ae8a90f7b4
@@ -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) {