Make JavaBaseScope#computeFunctionDescriptor() abstract and provide implementation in subclasses
This commit is contained in:
+12
-18
@@ -44,7 +44,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
protected final JavaSemanticServices semanticServices;
|
||||
|
||||
@NotNull
|
||||
protected final PsiDeclarationProvider resolverScopeData;
|
||||
protected final PsiDeclarationProvider declarationProvider;
|
||||
|
||||
@NotNull
|
||||
private final Map<Name, Set<FunctionDescriptor>> functionDescriptors = Maps.newHashMap();
|
||||
@@ -54,15 +54,15 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
@Nullable
|
||||
private Collection<DeclarationDescriptor> allDescriptors = null;
|
||||
@NotNull
|
||||
private final ClassOrNamespaceDescriptor descriptor;
|
||||
protected final ClassOrNamespaceDescriptor descriptor;
|
||||
|
||||
protected JavaBaseScope(
|
||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||
@NotNull JavaSemanticServices semanticServices,
|
||||
@NotNull PsiDeclarationProvider resolverScopeData
|
||||
@NotNull PsiDeclarationProvider declarationProvider
|
||||
) {
|
||||
this.semanticServices = semanticServices;
|
||||
this.resolverScopeData = resolverScopeData;
|
||||
this.declarationProvider = declarationProvider;
|
||||
this.descriptor = descriptor;
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
|
||||
@NotNull
|
||||
private Set<VariableDescriptor> computePropertyDescriptors(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData, descriptor);
|
||||
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, declarationProvider, descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -108,13 +108,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
if (!(resolverScopeData instanceof ClassPsiDeclarationProvider)) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return semanticServices.getDescriptorResolver()
|
||||
.resolveFunctionGroup(name, (ClassPsiDeclarationProvider) resolverScopeData, descriptor);
|
||||
}
|
||||
protected abstract Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name);
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
@@ -135,13 +129,13 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
@NotNull
|
||||
private Collection<DeclarationDescriptor> computeAllDescriptors() {
|
||||
Collection<DeclarationDescriptor> result = Sets.newHashSet();
|
||||
if (resolverScopeData instanceof ClassPsiDeclarationProvider) {
|
||||
PsiClass psiClass = ((ClassPsiDeclarationProvider) resolverScopeData).getPsiClass();
|
||||
if (declarationProvider instanceof ClassPsiDeclarationProvider) {
|
||||
PsiClass psiClass = ((ClassPsiDeclarationProvider) declarationProvider).getPsiClass();
|
||||
computeFieldAndFunctionDescriptors(result);
|
||||
computeInnerClasses(psiClass, result);
|
||||
}
|
||||
if (resolverScopeData instanceof PackagePsiDeclarationProvider) {
|
||||
PsiPackage psiPackage = ((PackagePsiDeclarationProvider) resolverScopeData).getPsiPackage();
|
||||
if (declarationProvider instanceof PackagePsiDeclarationProvider) {
|
||||
PsiPackage psiPackage = ((PackagePsiDeclarationProvider) declarationProvider).getPsiPackage();
|
||||
assert descriptor instanceof NamespaceDescriptor;
|
||||
result.addAll(computeAllPackageDeclarations(psiPackage, semanticServices, DescriptorUtils.getFQName(descriptor).toSafe()));
|
||||
}
|
||||
@@ -149,7 +143,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
}
|
||||
|
||||
private void computeFieldAndFunctionDescriptors(Collection<DeclarationDescriptor> result) {
|
||||
for (NamedMembers members : resolverScopeData.getMembersCache().allMembers()) {
|
||||
for (NamedMembers members : declarationProvider.getMembersCache().allMembers()) {
|
||||
Name name = members.getName();
|
||||
ProgressIndicatorProvider.checkCanceled();
|
||||
result.addAll(getFunctions(name));
|
||||
@@ -168,7 +162,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
}
|
||||
else {
|
||||
result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||
descriptor, psiClass, ((ClassPsiDeclarationProviderImpl) resolverScopeData).isStaticMembers()));
|
||||
descriptor, psiClass, ((ClassPsiDeclarationProviderImpl) declarationProvider).isStaticMembers()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-4
@@ -20,10 +20,7 @@ import com.google.common.collect.Maps;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
||||
@@ -33,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Class static of instance members.
|
||||
@@ -84,4 +82,11 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver()
|
||||
.resolveFunctionGroup(name, classPsiDeclarationProvider, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -17,12 +17,19 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
||||
@NotNull
|
||||
private final ClassPsiDeclarationProvider declarationProvider;
|
||||
|
||||
public JavaClassStaticMembersScope(
|
||||
@NotNull NamespaceDescriptor descriptor,
|
||||
@NotNull ClassPsiDeclarationProvider declarationProvider,
|
||||
@@ -30,5 +37,13 @@ public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
||||
@NotNull JavaSemanticServices semanticServices
|
||||
) {
|
||||
super(descriptor, declarationProvider, packageFQN, semanticServices);
|
||||
this.declarationProvider = declarationProvider;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver()
|
||||
.resolveFunctionGroup(name, declarationProvider, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -17,10 +17,15 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
public final class JavaPackageScopeWithoutMembers extends JavaPackageScope {
|
||||
public JavaPackageScopeWithoutMembers(
|
||||
@@ -31,4 +36,10 @@ public final class JavaPackageScopeWithoutMembers extends JavaPackageScope {
|
||||
) {
|
||||
super(descriptor, declarationProvider, packageFQN, semanticServices);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
}
|
||||
|
||||
+15
@@ -17,12 +17,19 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.KotlinNamespacePsiDeclarationProvider;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public final class JavaScopeForKotlinNamespace extends JavaPackageScope {
|
||||
@NotNull
|
||||
private final KotlinNamespacePsiDeclarationProvider declarationProvider;
|
||||
|
||||
public JavaScopeForKotlinNamespace(
|
||||
@NotNull NamespaceDescriptor descriptor,
|
||||
@NotNull KotlinNamespacePsiDeclarationProvider declarationProvider,
|
||||
@@ -30,5 +37,13 @@ public final class JavaScopeForKotlinNamespace extends JavaPackageScope {
|
||||
@NotNull JavaSemanticServices semanticServices
|
||||
) {
|
||||
super(descriptor, declarationProvider, packageFQN, semanticServices);
|
||||
this.declarationProvider = declarationProvider;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver()
|
||||
.resolveFunctionGroup(name, declarationProvider, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user