Revert "smarter JavaClassOrPackageScope#getAllDescriptors"
This reverts commit 010db0495b.
This commit is contained in:
+8
-27
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicateUtils;
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Stepan Koltsov
|
* @author Stepan Koltsov
|
||||||
@@ -73,28 +74,13 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
if (allDescriptors == null) {
|
if (allDescriptors == null) {
|
||||||
if (!predicate.includeAll()) {
|
allDescriptors = Sets.newHashSet();
|
||||||
return computeAllDescriptors(predicate);
|
|
||||||
}
|
|
||||||
|
|
||||||
allDescriptors = computeAllDescriptors(DescriptorPredicate.all());
|
if (resolverScopeData.psiClass != null) {
|
||||||
}
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveMethods(resolverScopeData, NamePredicate.all()));
|
||||||
|
|
||||||
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveFieldGroup(resolverScopeData, NamePredicate.all()));
|
||||||
}
|
|
||||||
|
|
||||||
private Collection<DeclarationDescriptor> computeAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
|
||||||
Collection<DeclarationDescriptor> allDescriptors = Sets.newHashSet();
|
|
||||||
|
|
||||||
if (resolverScopeData.psiClass != null) {
|
|
||||||
if (predicate.includeKind(DescriptorPredicate.DescriptorKind.CALLABLE_MEMBER)) {
|
|
||||||
// TODO: filter by extension here
|
|
||||||
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveMethods(resolverScopeData, predicate.asNamePredicate()));
|
|
||||||
|
|
||||||
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveFieldGroup(resolverScopeData, predicate.asNamePredicate()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (predicate.includeKind(DescriptorPredicate.DescriptorKind.CLASS)) {
|
|
||||||
// TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes
|
// TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes
|
||||||
if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) {
|
if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) {
|
||||||
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||||
@@ -106,13 +92,11 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
resolverScopeData.staticMembers));
|
resolverScopeData.staticMembers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (resolverScopeData.psiPackage != null) {
|
if (resolverScopeData.psiPackage != null) {
|
||||||
boolean isKotlinNamespace = semanticServices.getKotlinNamespaceDescriptor(resolverScopeData.fqName) != null;
|
boolean isKotlinNamespace = semanticServices.getKotlinNamespaceDescriptor(resolverScopeData.fqName) != null;
|
||||||
final JavaDescriptorResolver descriptorResolver = semanticServices.getDescriptorResolver();
|
final JavaDescriptorResolver descriptorResolver = semanticServices.getDescriptorResolver();
|
||||||
|
|
||||||
if (predicate.includeKind(DescriptorPredicate.DescriptorKind.NAMESPACE)) {
|
|
||||||
for (PsiPackage psiSubPackage : resolverScopeData.psiPackage.getSubPackages()) {
|
for (PsiPackage psiSubPackage : resolverScopeData.psiPackage.getSubPackages()) {
|
||||||
NamespaceDescriptor childNs = descriptorResolver.resolveNamespace(
|
NamespaceDescriptor childNs = descriptorResolver.resolveNamespace(
|
||||||
new FqName(psiSubPackage.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
new FqName(psiSubPackage.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||||
@@ -120,9 +104,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
allDescriptors.add(childNs);
|
allDescriptors.add(childNs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (predicate.includeKind(DescriptorPredicate.DescriptorKind.CLASS)) {
|
|
||||||
for (PsiClass psiClass : resolverScopeData.psiPackage.getClasses()) {
|
for (PsiClass psiClass : resolverScopeData.psiPackage.getClasses()) {
|
||||||
if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) {
|
if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) {
|
||||||
continue;
|
continue;
|
||||||
@@ -148,7 +130,6 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// filter again, because previously filter wasn't accurate
|
|
||||||
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1197,7 +1197,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void resolveNamedGroupFunctions(@NotNull ClassOrNamespaceDescriptor owner, PsiClass psiClass,
|
private void resolveNamedGroupFunctions(@NotNull ClassOrNamespaceDescriptor owner, PsiClass psiClass,
|
||||||
TypeSubstitutor typeSubstitutorForGenericSuperclasses, NamedMembers namedMembers, @NotNull Name methodName, ResolverScopeData scopeData) {
|
TypeSubstitutor typeSubstitutorForGenericSuperclasses, NamedMembers namedMembers, Name methodName, ResolverScopeData scopeData) {
|
||||||
if (namedMembers.functionDescriptors != null) {
|
if (namedMembers.functionDescriptors != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1237,7 +1237,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
namedMembers.functionDescriptors = functions;
|
namedMembers.functionDescriptors = functions;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, @NotNull Name methodName) {
|
private Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) {
|
||||||
Set<SimpleFunctionDescriptor> r = new HashSet<SimpleFunctionDescriptor>();
|
Set<SimpleFunctionDescriptor> r = new HashSet<SimpleFunctionDescriptor>();
|
||||||
for (JetType supertype : getSupertypes(scopeData)) {
|
for (JetType supertype : getSupertypes(scopeData)) {
|
||||||
for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) {
|
for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) {
|
||||||
@@ -1478,7 +1478,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
new AbstractMap.SimpleEntry<Name, NamedMembers>(exact, namedMembers));
|
new AbstractMap.SimpleEntry<Name, NamedMembers>(exact, namedMembers));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return Collections.emptyList();
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1487,7 +1487,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
Name methodName = e.getKey();
|
Name methodName = e.getKey();
|
||||||
NamedMembers namedMembers = e.getValue();
|
NamedMembers namedMembers = e.getValue();
|
||||||
if (predicate.matches(methodName)) {
|
if (predicate.matches(methodName)) {
|
||||||
r.add(new AbstractMap.SimpleEntry<Name, NamedMembers>(methodName, namedMembers));
|
r.add(new AbstractMap.SimpleEntry<Name, NamedMembers>(exact, namedMembers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.name.NamePredicate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Stepan Koltsov
|
* @author Stepan Koltsov
|
||||||
@@ -214,13 +213,4 @@ public abstract class DescriptorPredicate {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public NamePredicate asNamePredicate() {
|
|
||||||
return new NamePredicate() {
|
|
||||||
@Override
|
|
||||||
public boolean matches(@NotNull Name name) {
|
|
||||||
return includeName(name);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user