diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt index 9841a1b23b4..93bef5d8bcc 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt @@ -113,7 +113,7 @@ class MultifileClassCodegen( generateDelegatesToPreviouslyCompiledParts(generateCallableMemberTasks, partFqNames) - if (!generateCallableMemberTasks.isEmpty()) { + if (!partFqNames.isEmpty()) { generateMultifileFacadeClass(generateCallableMemberTasks, partFqNames) } } diff --git a/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt b/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt new file mode 100644 index 00000000000..943eb8ac939 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt @@ -0,0 +1,5 @@ +@file:[JvmName("Foo") JvmMultifileClass] +package test + +// This test checks that we generate empty multi-file facade even if there is no delegates within it (only private functions in packages) +private fun privateOnly() {} diff --git a/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.txt b/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.txt new file mode 100644 index 00000000000..5d93f6222f6 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.txt @@ -0,0 +1,9 @@ +@kotlin.Metadata +@kotlin.jvm.internal.KotlinMultifileClass +public final class test/Foo + +@kotlin.Metadata +@kotlin.jvm.internal.KotlinMultifileClassPart +synthetic final class test/Foo__EmptyMultifileFacadeKt { + private final static method privateOnly(): void +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java index 0273127a4ff..a9bb4387c44 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java @@ -41,6 +41,12 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { doTest(fileName); } + @TestMetadata("emptyMultifileFacade.kt") + public void testEmptyMultifileFacade() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt"); + doTest(fileName); + } + @TestMetadata("inlineOnly.kt") public void testInlineOnly() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/bytecodeListing/inlineOnly.kt");