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));
}
@NotNull
@Override
public Collection<Name> getAllDescriptorNames() {
return semanticServices.getDescriptorResolver().resolveMemberNames(resolverScopeData);
}
@NotNull
@Override
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
@@ -1518,13 +1518,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
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) {
if (scope instanceof ResolverBinaryClassData) {
return ((ResolverBinaryClassData) scope).classDescriptor.getSupertypes();
@@ -20,12 +20,9 @@ import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiParameter;
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.PropertyParseResult;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.JetType;
import java.util.Collections;
import java.util.HashMap;
@@ -39,28 +36,23 @@ class JavaDescriptorResolverHelper {
}
private static class Builder {
@NotNull
private final JavaDescriptorResolver.ResolverScopeData scopeData;
@NotNull
private final PsiClassWrapper psiClass;
private final boolean staticMembers;
private final boolean kotlin;
private Map<Name, NamedMembers> namedMembersMap = new HashMap<Name, NamedMembers>();
private Builder(@NotNull JavaDescriptorResolver.ResolverScopeData scopeData) {
this.scopeData = scopeData;
this.psiClass = new PsiClassWrapper(scopeData.psiClass);
this.staticMembers = scopeData.staticMembers;
this.kotlin = scopeData.kotlin;
private Builder(PsiClassWrapper psiClass, boolean staticMembers, boolean kotlin) {
this.psiClass = psiClass;
this.staticMembers = staticMembers;
this.kotlin = kotlin;
}
public void run() {
createGroupsForMembersFromSupertypes();
processFields();
processMethods();
}
private NamedMembers getNamedMembers(Name name) {
NamedMembers r = namedMembersMap.get(name);
if (r == null) {
@@ -70,23 +62,6 @@ class JavaDescriptorResolverHelper {
}
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) {
if (member.isStatic() != staticMembers) {
@@ -124,6 +99,16 @@ class JavaDescriptorResolverHelper {
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()) {
PsiMethodWrapper method = new PsiMethodWrapper(method0);
@@ -231,7 +216,7 @@ class JavaDescriptorResolverHelper {
@NotNull
static Map<Name, NamedMembers> getNamedMembers(@NotNull JavaDescriptorResolver.ResolverScopeData resolverScopeData) {
if (resolverScopeData.psiClass != null) {
Builder builder = new Builder(resolverScopeData);
Builder builder = new Builder(new PsiClassWrapper(resolverScopeData.psiClass), resolverScopeData.staticMembers, resolverScopeData.kotlin);
builder.run();
return builder.namedMembersMap;
}