Namespace aliases fixed
This commit is contained in:
@@ -256,6 +256,9 @@ public class TypeHierarchyResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String aliasName = importDirective.getAliasName();
|
String aliasName = importDirective.getAliasName();
|
||||||
|
if (aliasName == null) {
|
||||||
|
aliasName = referenceExpression != null ? referenceExpression.getReferencedName() : null;
|
||||||
|
}
|
||||||
if (classifierDescriptor != null) {
|
if (classifierDescriptor != null) {
|
||||||
context.getTrace().record(BindingContext.REFERENCE_TARGET, referenceExpression, classifierDescriptor);
|
context.getTrace().record(BindingContext.REFERENCE_TARGET, referenceExpression, classifierDescriptor);
|
||||||
|
|
||||||
|
|||||||
@@ -27,9 +27,13 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private SetMultimap<String, FunctionDescriptor> functionGroups;
|
private SetMultimap<String, FunctionDescriptor> functionGroups;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors;
|
private Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private Map<String, NamespaceDescriptor> namespaceAliases;
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Map<String, List<DeclarationDescriptor>> labelsToDescriptors;
|
private Map<String, List<DeclarationDescriptor>> labelsToDescriptors;
|
||||||
|
|
||||||
@@ -129,6 +133,14 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
return variableClassOrNamespaceDescriptors;
|
return variableClassOrNamespaceDescriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private Map<String, NamespaceDescriptor> getNamespaceAliases() {
|
||||||
|
if (namespaceAliases == null) {
|
||||||
|
namespaceAliases = Maps.newHashMap();
|
||||||
|
}
|
||||||
|
return namespaceAliases;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addVariableDescriptor(@NotNull VariableDescriptor variableDescriptor) {
|
public void addVariableDescriptor(@NotNull VariableDescriptor variableDescriptor) {
|
||||||
Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
Map<String, DeclarationDescriptor> variableClassOrNamespaceDescriptors = getVariableClassOrNamespaceDescriptors();
|
||||||
@@ -203,7 +215,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
@Override
|
@Override
|
||||||
public void addNamespaceAlias(@NotNull String name, @NotNull NamespaceDescriptor namespaceDescriptor) {
|
public void addNamespaceAlias(@NotNull String name, @NotNull NamespaceDescriptor namespaceDescriptor) {
|
||||||
checkForRedeclaration(name, namespaceDescriptor);
|
checkForRedeclaration(name, namespaceDescriptor);
|
||||||
getVariableClassOrNamespaceDescriptors().put(name, namespaceDescriptor);
|
getNamespaceAliases().put(name, namespaceDescriptor);
|
||||||
allDescriptors.add(namespaceDescriptor);
|
allDescriptors.add(namespaceDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,6 +270,9 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
NamespaceDescriptor declaredNamespace = getDeclaredNamespace(name);
|
NamespaceDescriptor declaredNamespace = getDeclaredNamespace(name);
|
||||||
if (declaredNamespace != null) return declaredNamespace;
|
if (declaredNamespace != null) return declaredNamespace;
|
||||||
|
|
||||||
|
NamespaceDescriptor aliased = getNamespaceAliases().get(name);
|
||||||
|
if (aliased != null) return aliased;
|
||||||
|
|
||||||
NamespaceDescriptor namespace = getWorkerScope().getNamespace(name);
|
NamespaceDescriptor namespace = getWorkerScope().getNamespace(name);
|
||||||
if (namespace != null) return namespace;
|
if (namespace != null) return namespace;
|
||||||
return super.getNamespace(name);
|
return super.getNamespace(name);
|
||||||
|
|||||||
@@ -55,10 +55,10 @@ namespace null_safety {
|
|||||||
|
|
||||||
val command = parse("")
|
val command = parse("")
|
||||||
|
|
||||||
command<error>.</error>foo
|
command.foo
|
||||||
|
|
||||||
command.equals(null)
|
command.equals(null)
|
||||||
command<warning>?.</warning>equals(null)
|
command?.equals(null)
|
||||||
command.equals1(null)
|
command.equals1(null)
|
||||||
command<warning>?.</warning>equals1(null)
|
command<warning>?.</warning>equals1(null)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user