Refactor JavaNamespaceResolver#createNamespaceData

This commit is contained in:
Pavel V. Talanov
2012-11-05 14:18:46 +04:00
parent 9fbecf515e
commit d1057348da
@@ -132,7 +132,7 @@ public final class JavaNamespaceResolver {
@NotNull FqName fqName, @NotNull FqName fqName,
@NotNull NamespaceDescriptor namespaceDescriptor @NotNull NamespaceDescriptor namespaceDescriptor
) { ) {
PsiDeclarationProvider namespaceData = createNamespaceData(fqName, namespaceDescriptor); PsiDeclarationProvider namespaceData = createDeclarationProvider(fqName, namespaceDescriptor);
JavaPackageScope javaPackageScope; JavaPackageScope javaPackageScope;
if (namespaceData == null) { if (namespaceData == null) {
javaPackageScope = null; javaPackageScope = null;
@@ -148,32 +148,26 @@ public final class JavaNamespaceResolver {
} }
@Nullable @Nullable
private PsiDeclarationProvider createNamespaceData( private PsiDeclarationProvider createDeclarationProvider(
@NotNull FqName fqName, @NotNull FqName fqName,
@NotNull NamespaceDescriptor namespaceDescriptor @NotNull NamespaceDescriptor namespaceDescriptor
) { ) {
PsiPackage psiPackage; PsiClass psiClass = getPsiClassForJavaPackageScope(fqName);
PsiClass psiClass; PsiPackage psiPackage = psiClassFinder.findPsiPackage(fqName);
lookingForPsi:
{
psiClass = getPsiClassForJavaPackageScope(fqName);
psiPackage = psiClassFinder.findPsiPackage(fqName);
if (psiClass != null || psiPackage != null) { if (psiClass != null || psiPackage != null) {
trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.PROPER); trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.PROPER);
break lookingForPsi; return PsiDeclarationProviderFactory.createDeclarationProviderForPackage(psiPackage, psiClass, fqName);
} }
psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE); psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE);
if (psiClass != null && !psiClass.isEnum()) { if (psiClass != null && !psiClass.isEnum()) {
trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.CLASS_STATICS); trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.CLASS_STATICS);
break lookingForPsi;
}
return null;
}
return PsiDeclarationProviderFactory.createDeclarationProviderForPackage(psiPackage, psiClass, fqName); return PsiDeclarationProviderFactory.createDeclarationProviderForPackage(psiPackage, psiClass, fqName);
} }
return null;
}
private void cache(@NotNull FqName fqName, @Nullable JavaPackageScope packageScope) { private void cache(@NotNull FqName fqName, @Nullable JavaPackageScope packageScope) {
if (packageScope == null) { if (packageScope == null) {
unresolvedCache.add(fqName); unresolvedCache.add(fqName);