Revert "jdr: properly fetch supertype member names"

This reverts commit 9b13a308f8.
This commit is contained in:
Stepan Koltsov
2012-06-18 20:42:33 +04:00
parent a1dfcfc55d
commit 5e1e685d69
5 changed files with 16 additions and 61 deletions
@@ -69,12 +69,6 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
return semanticServices.getDescriptorResolver().resolveMethods(resolverScopeData, NamePredicate.exact(name)); return semanticServices.getDescriptorResolver().resolveMethods(resolverScopeData, NamePredicate.exact(name));
} }
@NotNull
@Override
public Collection<Name> getAllDescriptorNames() {
return semanticServices.getDescriptorResolver().resolveMemberNames(resolverScopeData);
}
@NotNull @NotNull
@Override @Override
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) { public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
@@ -1518,13 +1518,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return functions; return functions;
} }
@NotNull
public Collection<Name> resolveMemberNames(@NotNull ResolverScopeData scopeData) {
getResolverScopeData(scopeData);
// TODO: inner classes are not added
return scopeData.namedMembersMap.keySet();
}
private Collection<JetType> getSupertypes(ResolverScopeData scope) { private Collection<JetType> getSupertypes(ResolverScopeData scope) {
if (scope instanceof ResolverBinaryClassData) { if (scope instanceof ResolverBinaryClassData) {
return ((ResolverBinaryClassData) scope).classDescriptor.getSupertypes(); return ((ResolverBinaryClassData) scope).classDescriptor.getSupertypes();
@@ -20,12 +20,9 @@ import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiParameter; import com.intellij.psi.PsiParameter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.resolve.java.prop.PropertyNameUtils; import org.jetbrains.jet.lang.resolve.java.prop.PropertyNameUtils;
import org.jetbrains.jet.lang.resolve.java.prop.PropertyParseResult; import org.jetbrains.jet.lang.resolve.java.prop.PropertyParseResult;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@@ -39,24 +36,19 @@ class JavaDescriptorResolverHelper {
} }
private static class Builder { private static class Builder {
@NotNull
private final JavaDescriptorResolver.ResolverScopeData scopeData;
@NotNull
private final PsiClassWrapper psiClass; private final PsiClassWrapper psiClass;
private final boolean staticMembers; private final boolean staticMembers;
private final boolean kotlin; private final boolean kotlin;
private Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>(); private Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>();
private Builder(@NotNull JavaDescriptorResolver.ResolverScopeData scopeData) { private Builder(PsiClassWrapper psiClass, boolean staticMembers, boolean kotlin) {
this.scopeData = scopeData; this.psiClass = psiClass;
this.psiClass = new PsiClassWrapper(scopeData.psiClass); this.staticMembers = staticMembers;
this.staticMembers = scopeData.staticMembers; this.kotlin = kotlin;
this.kotlin = scopeData.kotlin;
} }
public void run() { public void run() {
createGroupsForMembersFromSupertypes();
processFields(); processFields();
processMethods(); processMethods();
} }
@@ -71,23 +63,6 @@ class JavaDescriptorResolverHelper {
return r; return r;
} }
private void createGroupsForMembersFromSupertypes() {
if (scopeData.classOrNamespaceDescriptor instanceof ClassDescriptor) {
ClassDescriptor clazz = (ClassDescriptor) scopeData.classOrNamespaceDescriptor;
for (JetType supertype : clazz.getTypeConstructor().getSupertypes()) {
for (Name name : supertype.getMemberScope().getAllDescriptorNames()) {
getNamedMembers(name);
}
}
}
else if (scopeData.classOrNamespaceDescriptor instanceof NamespaceDescriptor) {
}
else {
throw new IllegalStateException("unknown descriptor: " + scopeData.classOrNamespaceDescriptor);
}
}
private boolean includeMember(PsiMemberWrapper member) { private boolean includeMember(PsiMemberWrapper member) {
if (member.isStatic() != staticMembers) { if (member.isStatic() != staticMembers) {
return false; return false;
@@ -124,6 +99,16 @@ class JavaDescriptorResolverHelper {
private void processMethods() { private void processMethods() {
for (PsiMethod method : psiClass.getPsiClass().getAllMethods()) {
getNamedMembers(Name.identifier(method.getName()));
PropertyParseResult propertyParseResult = PropertyNameUtils.parseMethodToProperty(method.getName());
if (propertyParseResult != null) {
getNamedMembers(Name.identifier(propertyParseResult.getPropertyName()));
}
}
for (PsiMethod method0 : psiClass.getPsiClass().getMethods()) { for (PsiMethod method0 : psiClass.getPsiClass().getMethods()) {
PsiMethodWrapper method = new PsiMethodWrapper(method0); PsiMethodWrapper method = new PsiMethodWrapper(method0);
@@ -231,7 +216,7 @@ class JavaDescriptorResolverHelper {
@NotNull @NotNull
static Map<Name, NamedMembers> getNamedMembers(@NotNull JavaDescriptorResolver.ResolverScopeData resolverScopeData) { static Map<Name, NamedMembers> getNamedMembers(@NotNull JavaDescriptorResolver.ResolverScopeData resolverScopeData) {
if (resolverScopeData.psiClass != null) { if (resolverScopeData.psiClass != null) {
Builder builder = new Builder(resolverScopeData); Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin);
builder.run(); builder.run();
return builder.namedMembersMap; return builder.namedMembersMap;
} }
@@ -88,9 +88,6 @@ public interface JetScope {
Collection<DeclarationDescriptor> getAllDescriptors(); Collection<DeclarationDescriptor> getAllDescriptors();
@NotNull
Collection<Name> getAllDescriptorNames();
/** /**
* @return EFFECTIVE implicit receiver at this point (may be corresponding to an outer scope) * @return EFFECTIVE implicit receiver at this point (may be corresponding to an outer scope)
*/ */
@@ -16,13 +16,9 @@
package org.jetbrains.jet.lang.resolve.scopes; package org.jetbrains.jet.lang.resolve.scopes;
import com.google.common.collect.Sets;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.resolve.name.Name;
import java.util.Collection; import java.util.Collection;
import java.util.Set;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
@@ -34,14 +30,4 @@ public abstract class JetScopeBase implements JetScope {
return getAllDescriptors(DescriptorPredicate.all()); return getAllDescriptors(DescriptorPredicate.all());
} }
@NotNull
@Override
public Collection<Name> getAllDescriptorNames() {
// dummy implementation
Set<Name> r = Sets.newHashSet();
for (DeclarationDescriptor descriptor : getAllDescriptors()) {
r.add(descriptor.getName());
}
return r;
}
} }