From fbab0b742cc33157a2eb205c2126e1754f275ab7 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Mon, 18 Jun 2012 20:49:55 +0400 Subject: [PATCH] Revert "smarter JavaClassOrPackageScope#getAllDescriptors" This reverts commit 010db0495b27b086908e92d8771a98491b05d266. --- .../resolve/java/JavaClassOrPackageScope.java | 35 +++++-------------- .../resolve/java/JavaDescriptorResolver.java | 8 ++--- .../resolve/scopes/DescriptorPredicate.java | 10 ------ 3 files changed, 12 insertions(+), 41 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java index 499f4519304..1653b88aea6 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassOrPackageScope.java @@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicateUtils; import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl; import java.util.Collection; +import java.util.Set; /** * @author Stepan Koltsov @@ -73,28 +74,13 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { @Override public Collection getAllDescriptors(@NotNull DescriptorPredicate predicate) { if (allDescriptors == null) { - if (!predicate.includeAll()) { - return computeAllDescriptors(predicate); - } + allDescriptors = Sets.newHashSet(); - 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 computeAllDescriptors(@NotNull DescriptorPredicate predicate) { - Collection 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 if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) { allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( @@ -106,13 +92,11 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { resolverScopeData.staticMembers)); } } - } - if (resolverScopeData.psiPackage != null) { - boolean isKotlinNamespace = semanticServices.getKotlinNamespaceDescriptor(resolverScopeData.fqName) != null; - final JavaDescriptorResolver descriptorResolver = semanticServices.getDescriptorResolver(); + if (resolverScopeData.psiPackage != null) { + boolean isKotlinNamespace = semanticServices.getKotlinNamespaceDescriptor(resolverScopeData.fqName) != null; + final JavaDescriptorResolver descriptorResolver = semanticServices.getDescriptorResolver(); - if (predicate.includeKind(DescriptorPredicate.DescriptorKind.NAMESPACE)) { for (PsiPackage psiSubPackage : resolverScopeData.psiPackage.getSubPackages()) { NamespaceDescriptor childNs = descriptorResolver.resolveNamespace( new FqName(psiSubPackage.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); @@ -120,9 +104,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { allDescriptors.add(childNs); } } - } - if (predicate.includeKind(DescriptorPredicate.DescriptorKind.CLASS)) { for (PsiClass psiClass : resolverScopeData.psiPackage.getClasses()) { if (isKotlinNamespace && JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) { continue; @@ -148,7 +130,6 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl { } } - // filter again, because previously filter wasn't accurate return DescriptorPredicateUtils.filter(allDescriptors, predicate); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 5bbdc73ba26..67cdff982ea 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -1197,7 +1197,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } 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) { return; } @@ -1237,7 +1237,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes namedMembers.functionDescriptors = functions; } - private Set getFunctionsFromSupertypes(ResolverScopeData scopeData, @NotNull Name methodName) { + private Set getFunctionsFromSupertypes(ResolverScopeData scopeData, Name methodName) { Set r = new HashSet(); for (JetType supertype : getSupertypes(scopeData)) { for (FunctionDescriptor function : supertype.getMemberScope().getFunctions(methodName)) { @@ -1478,7 +1478,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes new AbstractMap.SimpleEntry(exact, namedMembers)); } else { - return Collections.emptyList(); + return null; } } else { @@ -1487,7 +1487,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes Name methodName = e.getKey(); NamedMembers namedMembers = e.getValue(); if (predicate.matches(methodName)) { - r.add(new AbstractMap.SimpleEntry(methodName, namedMembers)); + r.add(new AbstractMap.SimpleEntry(exact, namedMembers)); } } return r; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/DescriptorPredicate.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/DescriptorPredicate.java index c1001099302..295d7ece967 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/DescriptorPredicate.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/DescriptorPredicate.java @@ -24,7 +24,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.lang.resolve.name.NamePredicate; /** * @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); - } - }; - } - }