Add Name parameter to NamedMembers class

Rename: MembersByNameCache#entrySet() -> AllMembers(), logic simplified
This commit is contained in:
Pavel V. Talanov
2012-10-17 15:59:43 +04:00
parent 3a830a3499
commit 29de78f594
4 changed files with 25 additions and 15 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.resolve.java.prop.PropertyParseResult;
import org.jetbrains.jet.lang.resolve.java.wrapper.*; import org.jetbrains.jet.lang.resolve.java.wrapper.*;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -39,15 +40,16 @@ public final class MembersByNameCache {
return namedMembersMap.get(name); return namedMembersMap.get(name);
} }
public Iterable<? extends Map.Entry<Name, NamedMembers>> entrySet() { @NotNull
return namedMembersMap.entrySet(); public Collection<NamedMembers> allMembers() {
return namedMembersMap.values();
} }
@NotNull @NotNull
private NamedMembers getOrCreateEmpty(@NotNull Name name) { private NamedMembers getOrCreateEmpty(@NotNull Name name) {
NamedMembers r = namedMembersMap.get(name); NamedMembers r = namedMembersMap.get(name);
if (r == null) { if (r == null) {
r = new NamedMembers(); r = new NamedMembers(name);
namedMembersMap.put(name, r); namedMembersMap.put(name, r);
} }
return r; return r;
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper; import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper;
import org.jetbrains.jet.lang.resolve.name.Name;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -31,6 +32,13 @@ import java.util.Set;
*/ */
public class NamedMembers { public class NamedMembers {
public NamedMembers(@NotNull Name name) {
this.name = name;
}
@NotNull
private final Name name;
@NotNull @NotNull
private final List<PsiMethodWrapper> methods = Lists.newArrayList(); private final List<PsiMethodWrapper> methods = Lists.newArrayList();
@@ -55,6 +63,11 @@ public class NamedMembers {
return methods; return methods;
} }
@NotNull
public Name getName() {
return name;
}
@NotNull @NotNull
public List<PropertyAccessorData> getPropertyAccessors() { public List<PropertyAccessorData> getPropertyAccessors() {
return propertyAccessors; return propertyAccessors;
@@ -265,7 +265,7 @@ public final class JavaFunctionResolver {
} }
} }
public static Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes( private static Set<SimpleFunctionDescriptor> getFunctionsFromSupertypes(
ResolverScopeData scopeData, ResolverScopeData scopeData,
Name methodName Name methodName
) { ) {
@@ -281,14 +281,12 @@ public final class JavaFunctionResolver {
public List<FunctionDescriptor> resolveMethods(@NotNull ResolverScopeData scopeData) { public List<FunctionDescriptor> resolveMethods(@NotNull ResolverScopeData scopeData) {
List<FunctionDescriptor> functions = new ArrayList<FunctionDescriptor>(); List<FunctionDescriptor> functions = new ArrayList<FunctionDescriptor>();
for (Map.Entry<Name, NamedMembers> entry : scopeData.getMembersCache().entrySet()) { for (NamedMembers member : scopeData.getMembersCache().allMembers()) {
Name methodName = entry.getKey();
NamedMembers namedMembers = entry.getValue();
PsiClass psiClass = scopeData.getPsiClass(); PsiClass psiClass = scopeData.getPsiClass();
assert psiClass != null; assert psiClass != null;
resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), psiClass, resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), psiClass,
namedMembers, methodName, scopeData); member, member.getName(), scopeData);
functions.addAll(namedMembers.getFunctionDescriptors()); functions.addAll(member.getFunctionDescriptors());
} }
return functions; return functions;
@@ -108,14 +108,11 @@ public final class JavaPropertiesResolver {
Set<VariableDescriptor> descriptors = Sets.newHashSet(); Set<VariableDescriptor> descriptors = Sets.newHashSet();
MembersByNameCache membersForProperties = scopeData.getMembersCache(); MembersByNameCache membersForProperties = scopeData.getMembersCache();
for (Map.Entry<Name, NamedMembers> entry : membersForProperties.entrySet()) { for (NamedMembers members : membersForProperties.allMembers()) {
NamedMembers namedMembers = entry.getValue();
Name propertyName = entry.getKey();
resolveNamedGroupProperties( resolveNamedGroupProperties(
scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, propertyName, scopeData.getClassOrNamespaceDescriptor(), scopeData, members, members.getName(),
"class or namespace " + psiClass.getQualifiedName()); "class or namespace " + psiClass.getQualifiedName());
descriptors.addAll(namedMembers.getPropertyDescriptors()); descriptors.addAll(members.getPropertyDescriptors());
} }
return descriptors; return descriptors;