diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt index 27030654b83..92ce445e405 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt @@ -147,11 +147,8 @@ public class MultifileClassCodegen( writeKotlinMultifileFacadeAnnotationIfNeeded(partFqNames) } - public fun generateClassOrObject(classOrObject: JetClassOrObject) { - val file = classOrObject.getContainingJetFile() - val partType = state.fileClassesProvider.getFileClassType(file) - val context = state.rootContext.intoMultifileClassPart(packageFragment!!, facadeClassType, partType) - MemberCodegen.genClassOrObject(context, classOrObject, state, null) + public fun generateClassOrObject(classOrObject: JetClassOrObject, packagePartContext: FieldOwnerContext) { + MemberCodegen.genClassOrObject(packagePartContext, classOrObject, state, null) } private fun generatePart( @@ -173,7 +170,7 @@ public class MultifileClassCodegen( } else if (declaration is JetClassOrObject) { if (state.generateDeclaredClassFilter.shouldGenerateClass(declaration)) { - generateClassOrObject(declaration) + generateClassOrObject(declaration, partContext) } } else if (declaration is JetScript) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java index fbdcd370767..20afa0faeaf 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java @@ -316,7 +316,7 @@ public class PackageCodegen { else if (declaration instanceof JetClassOrObject) { JetClassOrObject classOrObject = (JetClassOrObject) declaration; if (state.getGenerateDeclaredClassFilter().shouldGenerateClass(classOrObject)) { - generateClassOrObject(classOrObject); + generateClassOrObject(classOrObject, packagePartContext); } } else if (declaration instanceof JetScript) { @@ -415,11 +415,8 @@ public class PackageCodegen { return fragments.get(0); } - public void generateClassOrObject(@NotNull JetClassOrObject classOrObject) { - JetFile file = classOrObject.getContainingJetFile(); - Type packagePartType = FileClasses.getFileClassType(state.getFileClassesProvider(), file); - CodegenContext context = state.getRootContext().intoPackagePart(packageFragment, packagePartType); - MemberCodegen.genClassOrObject(context, classOrObject, state, null); + public void generateClassOrObject(@NotNull JetClassOrObject classOrObject, @NotNull PackageContext packagePartContext) { + MemberCodegen.genClassOrObject(packagePartContext, classOrObject, state, null); } public void done() { @@ -433,4 +430,8 @@ public class PackageCodegen { public Collection getFiles() { return files; } + + public PackageFragmentDescriptor getPackageFragment() { + return packageFragment; + } } 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 1721e6fb03b..c2dce00c01f 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinJavaFileStubProvider.java @@ -45,8 +45,10 @@ import org.jetbrains.kotlin.codegen.KotlinCodegenFacade; import org.jetbrains.kotlin.codegen.MultifileClassCodegen; import org.jetbrains.kotlin.codegen.PackageCodegen; import org.jetbrains.kotlin.codegen.binding.CodegenBinding; +import org.jetbrains.kotlin.codegen.context.PackageContext; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.descriptors.ClassDescriptor; +import org.jetbrains.kotlin.fileClasses.FileClasses; import org.jetbrains.kotlin.fileClasses.JvmFileClassInfo; import org.jetbrains.kotlin.fileClasses.NoResolveFileClassesProvider; import org.jetbrains.kotlin.name.FqName; @@ -374,7 +376,10 @@ public class KotlinJavaFileStubProvider files) { PackageCodegen packageCodegen = state.getFactory().forPackage(getPackageFqName(), files); - packageCodegen.generateClassOrObject(classOrObject); + JetFile file = classOrObject.getContainingJetFile(); + Type packagePartType = FileClasses.getFileClassType(state.getFileClassesProvider(), file); + PackageContext context = state.getRootContext().intoPackagePart(packageCodegen.getPackageFragment(), packagePartType); + packageCodegen.generateClassOrObject(classOrObject, context); state.getFactory().asList(); }