From bd5b84e6979fb14684cb6a32b882cffc7089f4ad Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 27 Mar 2012 15:16:56 +0400 Subject: [PATCH] # KT-1642 Fixed kotlin subpackages hide Java's toplevel packages --- .../jetbrains/jet/lang/resolve/ImportsResolver.java | 6 +++--- .../jet/lang/resolve/TopDownAnalysisContext.java | 11 +++++++++++ .../jetbrains/jet/lang/resolve/TopDownAnalyzer.java | 2 +- .../jet/lang/resolve/TypeHierarchyResolver.java | 1 + compiler/testData/diagnostics/tests/scopes/kt1579.jet | 2 +- compiler/testData/diagnostics/tests/scopes/kt1642.jet | 9 +++++++++ 6 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/scopes/kt1642.jet diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java index 225101cdb8c..7448b02c716 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ImportsResolver.java @@ -81,7 +81,7 @@ public class ImportsResolver { private void processImports(boolean onlyClasses) { TemporaryBindingTrace temporaryTrace = TemporaryBindingTrace.create(trace); //not to trace errors of default imports for (JetFile file : context.getNamespaceDescriptors().keySet()) { - //JetScope rootScope = context.getRootScope(); + JetScope rootScope = context.getRootScope(); WritableScope namespaceScope = context.getNamespaceScopes().get(file); Importer.DelayedImporter delayedImporter = new Importer.DelayedImporter(namespaceScope); if (!onlyClasses) { @@ -91,13 +91,13 @@ public class ImportsResolver { Collection defaultImportDirectives = Lists.newArrayList(); configuration.addDefaultImports(defaultImportDirectives); for (JetImportDirective defaultImportDirective : defaultImportDirectives) { - qualifiedExpressionResolver.processImportReference(defaultImportDirective, namespaceScope, delayedImporter, temporaryTrace, onlyClasses); + qualifiedExpressionResolver.processImportReference(defaultImportDirective, rootScope, delayedImporter, temporaryTrace, onlyClasses); } List importDirectives = file.getImportDirectives(); for (JetImportDirective importDirective : importDirectives) { Collection descriptors = - qualifiedExpressionResolver.processImportReference(importDirective, namespaceScope, delayedImporter, trace, onlyClasses); + qualifiedExpressionResolver.processImportReference(importDirective, rootScope, delayedImporter, trace, onlyClasses); if (descriptors.size() == 1) { resolvedDirectives.put(importDirective, descriptors.iterator().next()); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java index 8a2a4da12d6..ba63fb3ed5f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java @@ -39,6 +39,7 @@ public class TopDownAnalysisContext { private final Map classes = Maps.newLinkedHashMap(); private final Map objects = Maps.newLinkedHashMap(); protected final Map namespaceScopes = Maps.newHashMap(); + private JetScope rootScope; protected final Map namespaceDescriptors = Maps.newHashMap(); private final Map declaringScopes = Maps.newHashMap(); @@ -99,6 +100,16 @@ public class TopDownAnalysisContext { return namespaceScopes; } + public void setRootScope(@NotNull JetScope scope) { + assert rootScope == null; + rootScope = scope; + } + + @NotNull + public JetScope getRootScope() { + return rootScope; + } + public Map getNamespaceDescriptors() { return namespaceDescriptors; } 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 6ad9fd96e4b..41d724eb83c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -209,7 +209,7 @@ public class TopDownAnalyzer { @NotNull final DeclarationDescriptor containingDeclaration, @NotNull JetObjectDeclaration object) { - ModuleDescriptor moduleDescriptor = new ModuleDescriptor(""); + ModuleDescriptor moduleDescriptor = new ModuleDescriptor(""); TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(Predicates.equalTo(object.getContainingFile()), false, true); 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 d76dbb44db8..cc25426d69c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -88,6 +88,7 @@ public class TypeHierarchyResolver { public void process(@NotNull JetScope outerScope, @NotNull NamespaceLikeBuilder owner, @NotNull Collection declarations) { + context.setRootScope(outerScope); collectNamespacesAndClassifiers(outerScope, outerScope, owner, declarations); // namespaceScopes, classes importsResolver.processTypeImports(); diff --git a/compiler/testData/diagnostics/tests/scopes/kt1579.jet b/compiler/testData/diagnostics/tests/scopes/kt1579.jet index f85aa639504..bea21ba1abd 100644 --- a/compiler/testData/diagnostics/tests/scopes/kt1579.jet +++ b/compiler/testData/diagnostics/tests/scopes/kt1579.jet @@ -1,5 +1,5 @@ -//KT-1579 Can't import nested class/trait //FILE:a.kt +//KT-1579 Can't import nested class/trait package lib trait WithInner { trait Inner { diff --git a/compiler/testData/diagnostics/tests/scopes/kt1642.jet b/compiler/testData/diagnostics/tests/scopes/kt1642.jet new file mode 100644 index 00000000000..54819f5e0ae --- /dev/null +++ b/compiler/testData/diagnostics/tests/scopes/kt1642.jet @@ -0,0 +1,9 @@ +//FILE:a.kt +//KT-1642 kotlin subpackages hide Java's toplevel packages +package a.java + +//FILE:b.kt +//+JDK +package a + +import java.util.ArrayList \ No newline at end of file