diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaBridgeConfiguration.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaBridgeConfiguration.java index 10f6b61ae37..c41515e932c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaBridgeConfiguration.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaBridgeConfiguration.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.resolve.java; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.ModuleConfiguration; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.JetImportDirective; @@ -72,24 +71,4 @@ public class JavaBridgeConfiguration implements ModuleConfiguration { } - @Override - public NamespaceDescriptor getTopLevelNamespace(@NotNull String shortName) { - NamespaceDescriptor namespaceDescriptor = javaSemanticServices.getDescriptorResolver().resolveNamespace(FqName.topLevel(shortName)); - if (namespaceDescriptor != null) { - return namespaceDescriptor; - } - return delegateConfiguration.getTopLevelNamespace(shortName); - } - - @Override - public void addAllTopLevelNamespacesTo(@NotNull Collection topLevelNamespaces) { - NamespaceDescriptor defaultPackage = javaSemanticServices.getDescriptorResolver().resolveNamespace(FqName.ROOT); - assert defaultPackage != null : "Cannot resolve Java's default package"; - for (DeclarationDescriptor declarationDescriptor : defaultPackage.getMemberScope().getAllDescriptors()) { - if (declarationDescriptor instanceof NamespaceDescriptor) { - NamespaceDescriptor namespaceDescriptor = (NamespaceDescriptor) declarationDescriptor; - topLevelNamespaces.add(namespaceDescriptor); - } - } - } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java b/compiler/frontend/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java index 790b1b184ee..82bf46581b5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/DefaultModuleConfiguration.java @@ -53,13 +53,4 @@ public class DefaultModuleConfiguration implements ModuleConfiguration { public void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) { } - @Override - public NamespaceDescriptor getTopLevelNamespace(@NotNull String shortName) { - return null; - } - - @Override - public void addAllTopLevelNamespacesTo(@NotNull Collection topLevelNamespaces) { - } - } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/ModuleConfiguration.java b/compiler/frontend/src/org/jetbrains/jet/lang/ModuleConfiguration.java index 0ed59fcb038..5c9c34bedb3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/ModuleConfiguration.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/ModuleConfiguration.java @@ -17,8 +17,6 @@ package org.jetbrains.jet.lang; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.psi.JetImportDirective; import org.jetbrains.jet.lang.resolve.BindingTrace; @@ -39,14 +37,6 @@ public interface ModuleConfiguration { public void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope) { } - @Override - public NamespaceDescriptor getTopLevelNamespace(@NotNull String shortName) { - return null; - } - - @Override - public void addAllTopLevelNamespacesTo(@NotNull Collection topLevelNamespaces) { - } }; void addDefaultImports(@NotNull WritableScope rootScope, @NotNull Collection directives); @@ -57,10 +47,4 @@ public interface ModuleConfiguration { */ void extendNamespaceScope(@NotNull BindingTrace trace, @NotNull NamespaceDescriptor namespaceDescriptor, @NotNull WritableScope namespaceMemberScope); - /** This method is called only if no namespace with the same short name is declared in the module itself, or to merge namespaces */ - @Nullable - NamespaceDescriptor getTopLevelNamespace(@NotNull String shortName); - - /** Add all the top-level namespaces from the dependencies of this module into the given collection */ - void addAllTopLevelNamespacesTo(@NotNull Collection topLevelNamespaces); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 408fc93b1b5..1b6e1b055d7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -288,28 +288,11 @@ public class TopDownAnalyzer { // Import the lang package scope.importScope(JetStandardLibrary.getInstance().getLibraryScope()); + NamespaceDescriptorImpl rootNs = typeHierarchyResolver.createNamespaceDescriptorIfNeeded(null, moduleDescriptor, "", true); + // Import a scope that contains all top-level namespaces that come from dependencies // This makes the namespaces visible at all, does not import themselves - scope.importScope(new JetScopeAdapter(JetScope.EMPTY) { - @Override - public NamespaceDescriptor getNamespace(@NotNull String name) { - // Is it a top-level namespace coming from the dependencies? - NamespaceDescriptor topLevelNamespaceFromConfiguration = configuration.getTopLevelNamespace(name); - if (topLevelNamespaceFromConfiguration != null) { - return topLevelNamespaceFromConfiguration; - } - // Should be null, we are delegating to EMPTY - return super.getNamespace(name); - } - - @NotNull - @Override - public Collection getAllDescriptors() { - List allDescriptors = Lists.newArrayList(); - configuration.addAllTopLevelNamespacesTo(allDescriptors); - return allDescriptors; - } - }); + scope.importScope(rootNs.getMemberScope()); // dummy builder is used because "root" is module descriptor, // namespaces added to module explicitly in diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index da814eeaa06..63a49dd6785 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -263,7 +263,7 @@ public class TypeHierarchyResolver { } @NotNull - private NamespaceDescriptorImpl createNamespaceDescriptorIfNeeded(@Nullable JetFile file, @NotNull NamespaceDescriptorParent owner, @NotNull String name, boolean root) { + public NamespaceDescriptorImpl createNamespaceDescriptorIfNeeded(@Nullable JetFile file, @NotNull NamespaceDescriptorParent owner, @NotNull String name, boolean root) { FqName fqName; NamespaceDescriptorImpl namespaceDescriptor; diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index a001856ead0..76209a93f71 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -129,13 +129,5 @@ public final class AnalyzerFacadeForJS { @NotNull WritableScope namespaceMemberScope) { } - @Override - public NamespaceDescriptor getTopLevelNamespace(@NotNull String shortName) { - return null; - } - - @Override - public void addAllTopLevelNamespacesTo(@NotNull Collection topLevelNamespaces) { - } } }