diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 24ce90bce0d..30fcfbcef1d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -142,9 +142,10 @@ public class PropertyCodegen { Annotations propertyAnnotations = annotationSplitter.getAnnotationsForTarget(AnnotationUseSiteTarget.PROPERTY); - // Fields and '$annotations' methods for const properties are generated in the multi-file facade - boolean isBackingFieldOwner = - descriptor.isConst() ? !(context instanceof MultifileClassPartContext) : CodegenContextUtil.isImplClassOwner(context); + // Fields and '$annotations' methods for non-private const properties are generated in the multi-file facade + boolean isBackingFieldOwner = descriptor.isConst() && !Visibilities.isPrivate(descriptor.getVisibility()) + ? !(context instanceof MultifileClassPartContext) + : CodegenContextUtil.isImplClassOwner(context); if (isBackingFieldOwner) { Annotations fieldAnnotations = annotationSplitter.getAnnotationsForTarget(AnnotationUseSiteTarget.FIELD); diff --git a/compiler/testData/codegen/box/multifileClasses/privateConstVal.kt b/compiler/testData/codegen/box/multifileClasses/privateConstVal.kt new file mode 100644 index 00000000000..8914fe538e2 --- /dev/null +++ b/compiler/testData/codegen/box/multifileClasses/privateConstVal.kt @@ -0,0 +1,23 @@ +// WITH_RUNTIME +// FILE: foo.kt +@file:JvmName("Util") +@file:JvmMultifileClass +package test + +private const val x = "O" + +fun foo() = x + +// FILE: bar.kt +@file:JvmName("Util") +@file:JvmMultifileClass +package test + +private const val x = "K" + +fun bar() = x + +// FILE: test.kt +package test + +fun box(): String = foo() + bar() \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index acbf6349a89..036f5d2d88b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -8482,6 +8482,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("privateConstVal.kt") + public void testPrivateConstVal() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/multifileClasses/privateConstVal.kt"); + doTest(fileName); + } + @TestMetadata("samePartNameDifferentFacades.kt") public void testSamePartNameDifferentFacades() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/multifileClasses/samePartNameDifferentFacades.kt");