From f9119c001e6a4b3ff0d4de125854c827aac6b306 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 20 Mar 2019 18:04:53 +0300 Subject: [PATCH] JVM_IR: generate file class without members if it has metadata --- .../jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt | 2 +- .../ir/irText/declarations/fileWithTypeAliasesOnly.kt | 1 + .../ir/irText/declarations/fileWithTypeAliasesOnly.txt | 1 + .../org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java | 5 +++++ 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt create mode 100644 compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.txt diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt index 96d8fe94703..aefcd0149ac 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FileClassLowering.kt @@ -59,7 +59,7 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa fileClassMembers.add(it) } - if (fileClassMembers.isEmpty()) return + if (fileClassMembers.isEmpty() && irFile.metadata?.descriptors.isNullOrEmpty()) return val irFileClass = createFileClass(irFile, fileClassMembers) classes.add(irFileClass) diff --git a/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt b/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt new file mode 100644 index 00000000000..cb118c6fc94 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt @@ -0,0 +1 @@ +typealias Bar = (T) -> String \ No newline at end of file diff --git a/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.txt b/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.txt new file mode 100644 index 00000000000..8b10fc32485 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.txt @@ -0,0 +1 @@ +FILE fqName: fileName:/fileWithTypeAliasesOnly.kt diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index 688de667992..b2cf40867e0 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -264,6 +264,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { runTest("compiler/testData/ir/irText/declarations/fileWithAnnotations.kt"); } + @TestMetadata("fileWithTypeAliasesOnly.kt") + public void testFileWithTypeAliasesOnly() throws Exception { + runTest("compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt"); + } + @TestMetadata("interfaceProperties.kt") public void testInterfaceProperties() throws Exception { runTest("compiler/testData/ir/irText/declarations/interfaceProperties.kt");