Unnecessary creation of the default namespace eliminated

This commit is contained in:
Andrey Breslav
2012-03-12 16:21:27 +04:00
parent c6fae0c18f
commit 68698cb34a
2 changed files with 5 additions and 9 deletions
@@ -175,9 +175,6 @@ public class TopDownAnalyzer {
@Override
public NamespaceDescriptorImpl getNamespace(String name) {
if (name == "") {
return (NamespaceDescriptorImpl) trace.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, "");
}
throw new UnsupportedOperationException();
}
@@ -84,9 +84,6 @@ public class TypeHierarchyResolver {
public void process(@NotNull JetScope outerScope, @NotNull NamespaceLike owner, @NotNull Collection<? extends PsiElement> declarations) {
// Create the default package
createNamespaceDescriptorIfNeeded(null, owner, "");
collectNamespacesAndClassifiers(outerScope, outerScope, owner, declarations); // namespaceScopes, classes
importsResolver.processTypeImports();
@@ -231,9 +228,11 @@ public class TypeHierarchyResolver {
}
private NamespaceDescriptorImpl createNamespaceDescriptorPathIfNeeded(JetFile file, NamespaceLike owner, JetScope outerScope) {
JetNamespaceHeader namespaceHeader = file.getNamespaceHeader();
NamespaceLike currentOwner = owner;
for (JetSimpleNameExpression nameExpression : file.getNamespaceHeader().getParentNamespaceNames()) {
for (JetSimpleNameExpression nameExpression : namespaceHeader.getParentNamespaceNames()) {
String namespaceName = JetPsiUtil.safeName(nameExpression.getReferencedName());
NamespaceDescriptorImpl namespaceDescriptor = createNamespaceDescriptorIfNeeded(null, currentOwner, namespaceName);
@@ -246,8 +245,8 @@ public class TypeHierarchyResolver {
outerScope = namespaceDescriptor.getMemberScope();
}
String name = JetPsiUtil.safeName(file.getNamespaceHeader().getName());
context.getTrace().record(RESOLUTION_SCOPE, file.getNamespaceHeader(), outerScope);
String name = JetPsiUtil.safeName(namespaceHeader.getName());
context.getTrace().record(RESOLUTION_SCOPE, namespaceHeader, outerScope);
return createNamespaceDescriptorIfNeeded(file, currentOwner, name);
}