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 da71bfa3b4c..af318d4b0e5 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 @@ -39,7 +39,6 @@ import org.jetbrains.jet.lang.resolve.java.kt.PsiAnnotationWithFlags; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.NamePredicate; -import org.jetbrains.jet.lang.resolve.name.NamePredicateUtils; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.lang.JetStandardClasses; import org.jetbrains.jet.lang.types.lang.JetStandardLibrary; @@ -899,7 +898,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes Set descriptors = Sets.newHashSet(); - for (Map.Entry entry : getNamedMemberss(scopeData, predicate).entrySet()) { + for (Map.Entry entry : getNamedMemberss(scopeData, predicate)) { NamedMembers namedMembers = entry.getValue(); Name propertyName = entry.getKey(); @@ -1464,9 +1463,35 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } - private Map getNamedMemberss(@NotNull ResolverScopeData scopeData, @NotNull NamePredicate predicate) { + private Collection> getNamedMemberss(@NotNull ResolverScopeData scopeData, @NotNull NamePredicate predicate) { getResolverScopeData(scopeData); - return NamePredicateUtils.filterKeys(scopeData.namedMembersMap, predicate); + + Name exact = predicate.getExact(); + + if (predicate.isAll()) { + return scopeData.namedMembersMap.entrySet(); + } + else if (exact != null) { + NamedMembers namedMembers = scopeData.namedMembersMap.get(exact); + if (namedMembers != null) { + return Collections.>singletonList( + new AbstractMap.SimpleEntry(exact, namedMembers)); + } + else { + return Collections.emptyList(); + } + } + else { + Collection> r = Lists.newArrayList(); + for (Map.Entry e : scopeData.namedMembersMap.entrySet()) { + Name methodName = e.getKey(); + NamedMembers namedMembers = e.getValue(); + if (predicate.matches(methodName)) { + r.add(new AbstractMap.SimpleEntry(methodName, namedMembers)); + } + } + return r; + } } @@ -1477,7 +1502,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes List functions = new ArrayList(); - for (Map.Entry entry : getNamedMemberss(scopeData, predicate).entrySet()) { + for (Map.Entry entry : getNamedMemberss(scopeData, predicate)) { Name methodName = entry.getKey(); NamedMembers namedMembers = entry.getValue(); resolveNamedGroupFunctions( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/name/NamePredicateUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/name/NamePredicateUtils.java index a23497144ef..8e9fea0a516 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/name/NamePredicateUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/name/NamePredicateUtils.java @@ -17,13 +17,10 @@ package org.jetbrains.jet.lang.resolve.name; import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import java.util.Collection; -import java.util.Collections; -import java.util.Map; /** * @author Stepan Koltsov @@ -40,32 +37,4 @@ public class NamePredicateUtils { return Collections2.filter(descriptors, predicate.asGuavaDescriptorPredicate()); } } - - public static Map filterKeys( - @NotNull Map map, - @NotNull NamePredicate predicate) { - Name exact = predicate.getExact(); - - if (predicate.isAll()) { - return map; - } - else if (exact != null) { - B value = map.get(exact); - if (value != null) { - return Collections.singletonMap(exact, value); - } - else { - return Collections.emptyMap(); - } - } - else { - Map r = Maps.newHashMap(); - for (Map.Entry entry : map.entrySet()) { - if (predicate.matches(entry.getKey())) { - r.put(entry.getKey(), entry.getValue()); - } - } - return r; - } - } }