diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt index daf75d6f849..3d7291a0594 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt @@ -116,8 +116,6 @@ public class MultifileClassCodegen( tasks: Map Unit>, partFqNames: List ) { - if (files.size() == 1 && state.classBuilderMode == ClassBuilderMode.LIGHT_CLASSES) return - generateKotlinPackageReflectionField() MemberCodegen.generateModuleNameField(state, classBuilder) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassPartCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassPartCodegen.kt index f947f0d7ea1..42e6beff50b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassPartCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassPartCodegen.kt @@ -43,6 +43,10 @@ public class MultifileClassPartCodegen( partContext: FieldOwnerContext<*>, state: GenerationState ) : MemberCodegen(state, null, partContext, file, v) { + override fun generate() { + if (state.classBuilderMode == ClassBuilderMode.LIGHT_CLASSES) return + super.generate() + } override fun generateDeclaration() { v.defineClass(element, Opcodes.V1_6, diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java index 0dbb988fdb1..920376c61ef 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java @@ -47,6 +47,8 @@ import org.jetbrains.kotlin.codegen.PackageCodegen; import org.jetbrains.kotlin.codegen.binding.CodegenBinding; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.descriptors.ClassDescriptor; +import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; +import org.jetbrains.kotlin.fileClasses.NoResolveFileClassesProvider; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetClassOrObject; import org.jetbrains.kotlin.psi.JetFile; @@ -215,6 +217,17 @@ public class KotlinJavaFileStubProvider files) { + if (!files.isEmpty()) { + JetFile representativeFile = files.iterator().next(); + JvmFileClassInfo fileClassInfo = NoResolveFileClassesProvider.INSTANCE$.getFileClassInfo(representativeFile); + if (!fileClassInfo.getIsMultifileClass()) { + PackageCodegen codegen = state.getFactory().forPackage(representativeFile.getPackageFqName(), files); + codegen.generate(CompilationErrorHandler.THROW_EXCEPTION); + state.getFactory().asList(); + return; + } + } + MultifileClassCodegen codegen = state.getFactory().forMultifileClass(facadeFqName, files); codegen.generate(CompilationErrorHandler.THROW_EXCEPTION); state.getFactory().asList();