Namespace aliases fixed

This commit is contained in:
Andrey Breslav
2011-10-13 15:06:12 +04:00
parent a1be8afd61
commit d0c2c82197
4 changed files with 21 additions and 3 deletions
@@ -256,6 +256,9 @@ public class TypeHierarchyResolver {
}
String aliasName = importDirective.getAliasName();
if (aliasName == null) {
aliasName = referenceExpression != null ? referenceExpression.getReferencedName() : null;
}
if (classifierDescriptor != null) {
context.getTrace().record(BindingContext.REFERENCE_TARGET, referenceExpression, classifierDescriptor);
@@ -27,9 +27,13 @@ public class WritableScopeImpl extends WritableScopeWithImports {
@Nullable
private SetMultimap<String, FunctionDescriptor> functionGroups;
@Nullable
private Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors;
@Nullable
private Map<String, NamespaceDescriptor> namespaceAliases;
@Nullable
private Map<String, List<DeclarationDescriptor>> labelsToDescriptors;
@@ -129,6 +133,14 @@ public class WritableScopeImpl extends WritableScopeWithImports {
return variableClassOrNamespaceDescriptors;
}
@NotNull
private Map<String, NamespaceDescriptor> getNamespaceAliases() {
if (namespaceAliases == null) {
namespaceAliases = Maps.newHashMap();
}
return namespaceAliases;
}
@Override
public void addVariableDescriptor(@NotNull VariableDescriptor variableDescriptor) {
Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
@@ -203,7 +215,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
@Override
public void addNamespaceAlias(@NotNull String name, @NotNull NamespaceDescriptor namespaceDescriptor) {
checkForRedeclaration(name, namespaceDescriptor);
getVariableClassOrNamespaceDescriptors().put(name, namespaceDescriptor);
getNamespaceAliases().put(name, namespaceDescriptor);
allDescriptors.add(namespaceDescriptor);
}
@@ -258,6 +270,9 @@ public class WritableScopeImpl extends WritableScopeWithImports {
NamespaceDescriptor declaredNamespace = getDeclaredNamespace(name);
if (declaredNamespace != null) return declaredNamespace;
NamespaceDescriptor aliased = getNamespaceAliases().get(name);
if (aliased != null) return aliased;
NamespaceDescriptor namespace = getWorkerScope().getNamespace(name);
if (namespace != null) return namespace;
return super.getNamespace(name);
+2 -2
View File
@@ -55,10 +55,10 @@ namespace null_safety {
val command = parse("")
command<error>.</error>foo
command.foo
command.equals(null)
command<warning>?.</warning>equals(null)
command?.equals(null)
command.equals1(null)
command<warning>?.</warning>equals1(null)