From 4d73e714bb1d352da7b9a8721b5c4f20c2e8d8ca Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 15 Oct 2012 17:04:59 +0400 Subject: [PATCH] Minor refactoring in JavaBaseScope --- .../resolve/java/scope/JavaBaseScope.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java index 14ded643dc7..738d5fde7b5 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java @@ -20,6 +20,7 @@ import com.google.common.collect.Sets; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.resolve.java.*; import org.jetbrains.jet.lang.resolve.java.data.ResolverScopeData; @@ -28,6 +29,9 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl; import java.util.Collection; +import static org.jetbrains.jet.lang.resolve.java.scope.ScopeUtils.computeAllClassDeclarations; +import static org.jetbrains.jet.lang.resolve.java.scope.ScopeUtils.computeAllPackageDeclarations; + public abstract class JavaBaseScope extends JetScopeImpl { @NotNull @@ -35,8 +39,8 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull protected final ResolverScopeData resolverScopeData; - // cache - private Collection allDescriptors; + @Nullable + private Collection allDescriptors = null; protected JavaBaseScope( @NotNull JavaSemanticServices semanticServices, @@ -71,19 +75,23 @@ public abstract class JavaBaseScope extends JetScopeImpl { return allDescriptors; } - allDescriptors = Sets.newHashSet(); + allDescriptors = computeAllDescriptors(); + return allDescriptors; + } + + @NotNull + private Collection computeAllDescriptors() { + Collection result = Sets.newHashSet(); PsiClass psiClass = resolverScopeData.getPsiClass(); if (psiClass != null) { - allDescriptors.addAll( - ScopeUtils.computeAllClassDeclarations(psiClass, semanticServices, resolverScopeData, getContainingDeclaration())); + result.addAll(computeAllClassDeclarations(psiClass, semanticServices, resolverScopeData, getContainingDeclaration())); } PsiPackage psiPackage = resolverScopeData.getPsiPackage(); if (psiPackage != null) { - allDescriptors.addAll(ScopeUtils.computeAllPackageDeclarations(psiPackage, semanticServices, resolverScopeData.getFqName())); + result.addAll(computeAllPackageDeclarations(psiPackage, semanticServices, resolverScopeData.getFqName())); } - - return allDescriptors; + return result; } }