diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt index b55ce53b082..e68dc688979 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyDeclarationBase.kt @@ -37,11 +37,13 @@ abstract class IrLazyDeclarationBase( } protected fun generateChildStubs(descriptors: Collection, declarations: MutableList) { - descriptors.mapTo(declarations) { generateMemberStub(it) } + descriptors.mapNotNullTo(declarations) { generateMemberStub(it) } } - private fun generateMemberStub(descriptor: DeclarationDescriptor): IrDeclaration = - stubGenerator.generateMemberStub(descriptor) + private fun generateMemberStub(descriptor: DeclarationDescriptor): IrDeclaration? { + if (descriptor is DeclarationDescriptorWithVisibility && Visibilities.isPrivate(descriptor.visibility)) return null + return stubGenerator.generateMemberStub(descriptor) + } override var parent: IrDeclarationParent by lazyVar { createLazyParent()!! diff --git a/compiler/testData/codegen/boxAgainstJava/enum/nameConflict.kt b/compiler/testData/codegen/boxAgainstJava/enum/nameConflict.kt new file mode 100644 index 00000000000..fad3605f1d5 --- /dev/null +++ b/compiler/testData/codegen/boxAgainstJava/enum/nameConflict.kt @@ -0,0 +1,19 @@ +// FILE: C.java +public enum C { + OK(0); + + private final int ordinal; + + C(int ordinal) { this.ordinal = ordinal; } + + public int getOrdinal() { return ordinal; } +} + +// FILE: 1.kt +fun box(): String { + val ok = C.OK + return when (ok) { + C.OK -> "OK" + else -> "fail" + } +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt index 1918b6cc8d6..898230fd653 100644 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt +++ b/compiler/testData/ir/irText/stubs/constFromBuiltins__kotlin.Int.txt @@ -1,6 +1,5 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:public superTypes:[; ; ] $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: type:kotlin.Int - CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:private <> () returnType:kotlin.Int [primary] FUN IR_EXTERNAL_DECLARATION_STUB name:and visibility:public modality:FINAL <> ($this:kotlin.Int, other:kotlin.Int) returnType:kotlin.Int $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: type:kotlin.Int VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:kotlin.Int @@ -239,7 +238,6 @@ CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Int modality:FINAL visibility:publ VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:other index:0 type:kotlin.Int CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[] $this: VALUE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name: type:kotlin.Int.Companion - CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:private <> () returnType:kotlin.Int.Companion [primary] PROPERTY IR_EXTERNAL_DECLARATION_STUB name:MAX_VALUE visibility:public modality:FINAL [const,val] FIELD IR_EXTERNAL_DECLARATION_STUB name:MAX_VALUE type:kotlin.Int visibility:public [final] EXPRESSION_BODY diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java index c58b9c5e7ed..6ee65c26c18 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java @@ -220,6 +220,11 @@ public class BlackBoxAgainstJavaCodegenTestGenerated extends AbstractBlackBoxAga KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxAgainstJava/enum"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("nameConflict.kt") + public void testNameConflict() throws Exception { + runTest("compiler/testData/codegen/boxAgainstJava/enum/nameConflict.kt"); + } + @TestMetadata("simpleJavaEnum.kt") public void testSimpleJavaEnum() throws Exception { runTest("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxAgainstJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxAgainstJavaCodegenTestGenerated.java index c187ca97012..7e042c1f95d 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxAgainstJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxAgainstJavaCodegenTestGenerated.java @@ -221,6 +221,11 @@ public class IrBlackBoxAgainstJavaCodegenTestGenerated extends AbstractIrBlackBo KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxAgainstJava/enum"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } + @TestMetadata("nameConflict.kt") + public void testNameConflict() throws Exception { + runTest("compiler/testData/codegen/boxAgainstJava/enum/nameConflict.kt"); + } + @TestMetadata("simpleJavaEnum.kt") public void testSimpleJavaEnum() throws Exception { runTest("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.kt");