diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index a7cc80e28ae..c32215fa850 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -63,6 +63,7 @@ public class NamespaceCodegen extends MemberCodegen { private final ClassBuilderOnDemand v; @NotNull private final FqName name; private final Collection files; + private final NamespaceDescriptor descriptor; public NamespaceCodegen( @NotNull ClassBuilderOnDemand v, @@ -77,6 +78,9 @@ public class NamespaceCodegen extends MemberCodegen { name = fqName; this.files = namespaceFiles; + descriptor = state.getBindingContext().get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, name); + assert descriptor != null : "No namespace found for FQ name " + name; + final PsiFile sourceFile = namespaceFiles.size() == 1 ? namespaceFiles.iterator().next().getContainingFile() : null; v.addOptionalDeclaration(new ClassBuilderOnDemand.ClassBuilderCallback() { @@ -178,8 +182,6 @@ public class NamespaceCodegen extends MemberCodegen { @Nullable private ClassBuilder generate(@NotNull JetFile file) { - NamespaceDescriptor descriptor = state.getBindingContext().get(BindingContext.FILE_TO_NAMESPACE, file); - assert descriptor != null : "No namespace found for file " + file + " declared package: " + file.getPackageName(); boolean generateSrcClass = false; for (JetDeclaration declaration : file.getDeclarations()) { if (declaration instanceof JetProperty || declaration instanceof JetNamedFunction) { @@ -187,7 +189,7 @@ public class NamespaceCodegen extends MemberCodegen { } else if (declaration instanceof JetClassOrObject) { if (state.isGenerateDeclaredClasses()) { - generateClassOrObject(descriptor, (JetClassOrObject) declaration); + generateClassOrObject((JetClassOrObject) declaration); } } else if (declaration instanceof JetScript) { @@ -221,14 +223,14 @@ public class NamespaceCodegen extends MemberCodegen { } } - generateStaticInitializers(descriptor, builder, file, nameSpaceContext); + generateStaticInitializers(builder, file, nameSpaceContext); builder.done(); return builder; } - public void generateClassOrObject(@NotNull NamespaceDescriptor descriptor, @NotNull JetClassOrObject classOrObject) { + public void generateClassOrObject(@NotNull JetClassOrObject classOrObject) { CodegenContext context = CodegenContext.STATIC.intoNamespace(descriptor); genClassOrObject(context, classOrObject); } @@ -268,12 +270,7 @@ public class NamespaceCodegen extends MemberCodegen { } } - private void generateStaticInitializers( - NamespaceDescriptor descriptor, - @NotNull ClassBuilder builder, - @NotNull JetFile file, - @NotNull FieldOwnerContext context - ) { + private void generateStaticInitializers(@NotNull ClassBuilder builder, @NotNull JetFile file, @NotNull FieldOwnerContext context) { List properties = collectPropertiesToInitialize(file); if (properties.isEmpty()) return; diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java index 18c4d825b3d..a52780709ac 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/KotlinJavaFileStubProvider.java @@ -42,11 +42,9 @@ import org.jetbrains.jet.codegen.CompilationErrorHandler; import org.jetbrains.jet.codegen.NamespaceCodegen; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.Progress; -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiUtil; -import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collection; @@ -86,9 +84,7 @@ public class KotlinJavaFileStubProvider implements CachedValueProvider files) { - FqName packageFqName = getPackageFqName(); - NamespaceCodegen namespaceCodegen = state.getFactory().forNamespace(packageFqName, files); - NamespaceDescriptor namespaceDescriptor = - state.getBindingContext().get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, packageFqName); - assert namespaceDescriptor != null : "No package descriptor for " + packageFqName + " for class " + classOrObject.getText(); - namespaceCodegen.generateClassOrObject(namespaceDescriptor, classOrObject); - + NamespaceCodegen namespaceCodegen = state.getFactory().forNamespace(getPackageFqName(), files); + namespaceCodegen.generateClassOrObject(classOrObject); state.getFactory().files(); } });