# KT-1642 Fixed kotlin subpackages hide Java's toplevel packages

This commit is contained in:
Svetlana Isakova
2012-03-27 15:16:56 +04:00
parent f7cfb36f62
commit bd5b84e697
6 changed files with 26 additions and 5 deletions
@@ -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<JetImportDirective> 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<JetImportDirective> importDirectives = file.getImportDirectives();
for (JetImportDirective importDirective : importDirectives) {
Collection<? extends DeclarationDescriptor> 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());
}
@@ -39,6 +39,7 @@ public class TopDownAnalysisContext {
private final Map<JetClass, MutableClassDescriptor> classes = Maps.newLinkedHashMap();
private final Map<JetObjectDeclaration, MutableClassDescriptor> objects = Maps.newLinkedHashMap();
protected final Map<JetFile, WritableScope> namespaceScopes = Maps.newHashMap();
private JetScope rootScope;
protected final Map<JetFile, NamespaceDescriptorImpl> namespaceDescriptors = Maps.newHashMap();
private final Map<JetDeclaration, JetScope> 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<JetFile, NamespaceDescriptorImpl> getNamespaceDescriptors() {
return namespaceDescriptors;
}
@@ -209,7 +209,7 @@ public class TopDownAnalyzer {
@NotNull final DeclarationDescriptor containingDeclaration,
@NotNull JetObjectDeclaration object) {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("<dummy for objec>");
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("<dummy for object>");
TopDownAnalysisParameters topDownAnalysisParameters =
new TopDownAnalysisParameters(Predicates.equalTo(object.getContainingFile()), false, true);
@@ -88,6 +88,7 @@ public class TypeHierarchyResolver {
public void process(@NotNull JetScope outerScope, @NotNull NamespaceLikeBuilder owner, @NotNull Collection<? extends PsiElement> declarations) {
context.setRootScope(outerScope);
collectNamespacesAndClassifiers(outerScope, outerScope, owner, declarations); // namespaceScopes, classes
importsResolver.processTypeImports();
@@ -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 {
@@ -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