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;
|
protected final JavaSemanticServices semanticServices;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
protected final PsiDeclarationProvider resolverScopeData;
|
protected final PsiDeclarationProvider declarationProvider;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Map<Name, Set<FunctionDescriptor>> functionDescriptors = Maps.newHashMap();
|
private final Map<Name, Set<FunctionDescriptor>> functionDescriptors = Maps.newHashMap();
|
||||||
@@ -54,15 +54,15 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private Collection<DeclarationDescriptor> allDescriptors = null;
|
private Collection<DeclarationDescriptor> allDescriptors = null;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final ClassOrNamespaceDescriptor descriptor;
|
protected final ClassOrNamespaceDescriptor descriptor;
|
||||||
|
|
||||||
protected JavaBaseScope(
|
protected JavaBaseScope(
|
||||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||||
@NotNull JavaSemanticServices semanticServices,
|
@NotNull JavaSemanticServices semanticServices,
|
||||||
@NotNull PsiDeclarationProvider resolverScopeData
|
@NotNull PsiDeclarationProvider declarationProvider
|
||||||
) {
|
) {
|
||||||
this.semanticServices = semanticServices;
|
this.semanticServices = semanticServices;
|
||||||
this.resolverScopeData = resolverScopeData;
|
this.declarationProvider = declarationProvider;
|
||||||
this.descriptor = descriptor;
|
this.descriptor = descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Set<VariableDescriptor> computePropertyDescriptors(@NotNull Name name) {
|
private Set<VariableDescriptor> computePropertyDescriptors(@NotNull Name name) {
|
||||||
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData, descriptor);
|
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, declarationProvider, descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -108,13 +108,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
protected abstract Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name);
|
||||||
if (!(resolverScopeData instanceof ClassPsiDeclarationProvider)) {
|
|
||||||
return Collections.emptySet();
|
|
||||||
}
|
|
||||||
return semanticServices.getDescriptorResolver()
|
|
||||||
.resolveFunctionGroup(name, (ClassPsiDeclarationProvider) resolverScopeData, descriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
@@ -135,13 +129,13 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private Collection<DeclarationDescriptor> computeAllDescriptors() {
|
private Collection<DeclarationDescriptor> computeAllDescriptors() {
|
||||||
Collection<DeclarationDescriptor> result = Sets.newHashSet();
|
Collection<DeclarationDescriptor> result = Sets.newHashSet();
|
||||||
if (resolverScopeData instanceof ClassPsiDeclarationProvider) {
|
if (declarationProvider instanceof ClassPsiDeclarationProvider) {
|
||||||
PsiClass psiClass = ((ClassPsiDeclarationProvider) resolverScopeData).getPsiClass();
|
PsiClass psiClass = ((ClassPsiDeclarationProvider) declarationProvider).getPsiClass();
|
||||||
computeFieldAndFunctionDescriptors(result);
|
computeFieldAndFunctionDescriptors(result);
|
||||||
computeInnerClasses(psiClass, result);
|
computeInnerClasses(psiClass, result);
|
||||||
}
|
}
|
||||||
if (resolverScopeData instanceof PackagePsiDeclarationProvider) {
|
if (declarationProvider instanceof PackagePsiDeclarationProvider) {
|
||||||
PsiPackage psiPackage = ((PackagePsiDeclarationProvider) resolverScopeData).getPsiPackage();
|
PsiPackage psiPackage = ((PackagePsiDeclarationProvider) declarationProvider).getPsiPackage();
|
||||||
assert descriptor instanceof NamespaceDescriptor;
|
assert descriptor instanceof NamespaceDescriptor;
|
||||||
result.addAll(computeAllPackageDeclarations(psiPackage, semanticServices, DescriptorUtils.getFQName(descriptor).toSafe()));
|
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) {
|
private void computeFieldAndFunctionDescriptors(Collection<DeclarationDescriptor> result) {
|
||||||
for (NamedMembers members : resolverScopeData.getMembersCache().allMembers()) {
|
for (NamedMembers members : declarationProvider.getMembersCache().allMembers()) {
|
||||||
Name name = members.getName();
|
Name name = members.getName();
|
||||||
ProgressIndicatorProvider.checkCanceled();
|
ProgressIndicatorProvider.checkCanceled();
|
||||||
result.addAll(getFunctions(name));
|
result.addAll(getFunctions(name));
|
||||||
@@ -168,7 +162,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
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.PsiClass;
|
||||||
import com.intellij.psi.PsiModifier;
|
import com.intellij.psi.PsiModifier;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
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.resolve.java.DescriptorSearchRule;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
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.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class static of instance members.
|
* Class static of instance members.
|
||||||
@@ -84,4 +82,11 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
|
|||||||
}
|
}
|
||||||
return null;
|
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;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
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 {
|
public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
||||||
|
@NotNull
|
||||||
|
private final ClassPsiDeclarationProvider declarationProvider;
|
||||||
|
|
||||||
public JavaClassStaticMembersScope(
|
public JavaClassStaticMembersScope(
|
||||||
@NotNull NamespaceDescriptor descriptor,
|
@NotNull NamespaceDescriptor descriptor,
|
||||||
@NotNull ClassPsiDeclarationProvider declarationProvider,
|
@NotNull ClassPsiDeclarationProvider declarationProvider,
|
||||||
@@ -30,5 +37,13 @@ public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
|||||||
@NotNull JavaSemanticServices semanticServices
|
@NotNull JavaSemanticServices semanticServices
|
||||||
) {
|
) {
|
||||||
super(descriptor, declarationProvider, packageFQN, 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;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
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 final class JavaPackageScopeWithoutMembers extends JavaPackageScope {
|
||||||
public JavaPackageScopeWithoutMembers(
|
public JavaPackageScopeWithoutMembers(
|
||||||
@@ -31,4 +36,10 @@ public final class JavaPackageScopeWithoutMembers extends JavaPackageScope {
|
|||||||
) {
|
) {
|
||||||
super(descriptor, declarationProvider, packageFQN, semanticServices);
|
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;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.KotlinNamespacePsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.KotlinNamespacePsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
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 {
|
public final class JavaScopeForKotlinNamespace extends JavaPackageScope {
|
||||||
|
@NotNull
|
||||||
|
private final KotlinNamespacePsiDeclarationProvider declarationProvider;
|
||||||
|
|
||||||
public JavaScopeForKotlinNamespace(
|
public JavaScopeForKotlinNamespace(
|
||||||
@NotNull NamespaceDescriptor descriptor,
|
@NotNull NamespaceDescriptor descriptor,
|
||||||
@NotNull KotlinNamespacePsiDeclarationProvider declarationProvider,
|
@NotNull KotlinNamespacePsiDeclarationProvider declarationProvider,
|
||||||
@@ -30,5 +37,13 @@ public final class JavaScopeForKotlinNamespace extends JavaPackageScope {
|
|||||||
@NotNull JavaSemanticServices semanticServices
|
@NotNull JavaSemanticServices semanticServices
|
||||||
) {
|
) {
|
||||||
super(descriptor, declarationProvider, packageFQN, 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