Minor refactorings in JavaNamespaceResolver

This commit is contained in:
Pavel V. Talanov
2012-10-15 15:23:29 +04:00
parent 9398bb7026
commit 2aaafc4569
@@ -74,7 +74,7 @@ public final class JavaNamespaceResolver {
return searchRule.processFoundInKotlin(kotlinNamespaceDescriptor); return searchRule.processFoundInKotlin(kotlinNamespaceDescriptor);
} }
ResolverNamespaceData namespaceData = namespaceDescriptorCacheByFqn.get(qualifiedName); ResolverNamespaceData namespaceData = lookUpCache(qualifiedName);
if (namespaceData != null) { if (namespaceData != null) {
return namespaceData.getNamespaceDescriptor(); return namespaceData.getNamespaceDescriptor();
} }
@@ -102,13 +102,17 @@ public final class JavaNamespaceResolver {
return scopeData.getNamespaceDescriptor(); return scopeData.getNamespaceDescriptor();
} }
private ResolverNamespaceData lookUpCache(FqName qualifiedName) {
return namespaceDescriptorCacheByFqn.get(qualifiedName);
}
@Nullable @Nullable
public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName) { public NamespaceDescriptor resolveNamespace(@NotNull FqName qualifiedName) {
return resolveNamespace(qualifiedName, DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN); return resolveNamespace(qualifiedName, DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN);
} }
@Nullable @Nullable
private NamespaceDescriptorParent resolveParentNamespace(FqName fqName) { private NamespaceDescriptorParent resolveParentNamespace(@NotNull FqName fqName) {
if (fqName.isRoot()) { if (fqName.isRoot()) {
return FAKE_ROOT_MODULE; return FAKE_ROOT_MODULE;
} }
@@ -140,31 +144,29 @@ public final class JavaNamespaceResolver {
break lookingForPsi; break lookingForPsi;
} }
ResolverNamespaceData oldValue = cache(fqName, ResolverNamespaceData.NEGATIVE);
namespaceDescriptorCacheByFqn.put(fqName, ResolverNamespaceData.NEGATIVE);
if (oldValue != null) {
throw new IllegalStateException("rewrite at " + fqName);
}
return null; return null;
} }
ResolverNamespaceData namespaceData = ResolverNamespaceData namespaceData = new ResolverNamespaceData(psiClass, psiPackage, fqName, ns);
new ResolverNamespaceData(psiClass, psiPackage, fqName, ns);
namespaceData.setMemberScope(new JavaPackageScope(fqName, javaSemanticServices, namespaceData)); namespaceData.setMemberScope(new JavaPackageScope(fqName, javaSemanticServices, namespaceData));
ResolverNamespaceData oldValue = cache(fqName, namespaceData);
namespaceDescriptorCacheByFqn.put(fqName, namespaceData);
if (oldValue != null) {
throw new IllegalStateException("rewrite at " + fqName);
}
return namespaceData; return namespaceData;
} }
private void cache(@NotNull FqName fqName, @NotNull ResolverNamespaceData namespaceData) {
ResolverNamespaceData oldValue = namespaceDescriptorCacheByFqn.put(fqName, namespaceData);
if (oldValue != null) {
throw new IllegalStateException("rewrite at " + fqName);
}
}
@Nullable @Nullable
public JavaPackageScope getJavaPackageScope(@NotNull FqName fqName, @NotNull NamespaceDescriptor ns) { public JavaPackageScope getJavaPackageScope(@NotNull FqName fqName, @NotNull NamespaceDescriptor ns) {
ResolverNamespaceData resolverNamespaceData = namespaceDescriptorCacheByFqn.get(fqName); ResolverNamespaceData resolverNamespaceData = lookUpCache(fqName);
if (resolverNamespaceData == null) { if (resolverNamespaceData == null) {
resolverNamespaceData = createNamespaceResolverScopeData(fqName, ns); resolverNamespaceData = createNamespaceResolverScopeData(fqName, ns);
} }