# KT-1642 Fixed kotlin subpackages hide Java's toplevel packages
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user