PyClass.processDeclarations() is its own method, not inherited from PsiElement

This commit is contained in:
Dmitry Jemerov
2010-07-06 16:29:35 +04:00
parent 9a9ac3dd5f
commit fc19442b48
2 changed files with 8 additions and 13 deletions
@@ -720,19 +720,14 @@ public class PyClassImpl extends PyPresentableElementImpl<PyClassStub> implement
return false;
}
@Override
public boolean processDeclarations(@NotNull PsiScopeProcessor processor,
@NotNull ResolveState substitutor,
PsiElement lastParent,
@NotNull PsiElement place)
{
public void processDeclarations(@NotNull PsiScopeProcessor processor) {
// class level
final PyClassStub stub = getStub();
if (stub != null) {
final List<StubElement> children = stub.getChildrenStubs();
for (StubElement child : children) {
if (!processor.execute(child.getPsi(), ResolveState.initial())) {
return false;
return;
}
}
}
@@ -743,14 +738,13 @@ public class PyClassImpl extends PyPresentableElementImpl<PyClassStub> implement
// instance level
for(PyTargetExpression expr: getInstanceAttributes()) {
if (expr == lastParent) continue;
if (!processor.execute(expr, substitutor)) return false;
if (!processor.execute(expr, ResolveState.initial())) return;
}
//
if (processor instanceof VariantsProcessor) {
return true;
return;
}
return processor.execute(this, substitutor);
processor.execute(this, ResolveState.initial());
}
public int getTextOffset() {
@@ -12,6 +12,7 @@ import com.intellij.util.SmartList;
import com.jetbrains.python.codeInsight.PyDynamicMember;
import com.jetbrains.python.psi.*;
import com.jetbrains.python.psi.impl.PyBuiltinCache;
import com.jetbrains.python.psi.impl.PyClassImpl;
import com.jetbrains.python.psi.patterns.ParentMatcher;
import com.jetbrains.python.psi.resolve.PyResolveUtil;
import com.jetbrains.python.psi.resolve.ResolveProcessor;
@@ -134,7 +135,7 @@ public class PyClassType implements PyType {
@Nullable
private static PsiElement resolveInner(PyClass aClass, String name) {
ResolveProcessor processor = new ResolveProcessor(name);
aClass.processDeclarations(processor, ResolveState.initial(), null, aClass); // our members are strictly within us.
((PyClassImpl) aClass).processDeclarations(processor); // our members are strictly within us.
final PsiElement resolveResult = processor.getResult();
//final PsiElement resolveResult = PyResolveUtil.treeWalkUp(new PyResolveUtil.ResolveProcessor(name), myClass, null, null);
if (resolveResult != null && resolveResult != aClass) {
@@ -162,7 +163,7 @@ public class PyClassType implements PyType {
final VariantsProcessor processor = new VariantsProcessor(
referenceExpression, new PyResolveUtil.FilterNotInstance(myClass), underscoreFilter
);
myClass.processDeclarations(processor, ResolveState.initial(), null, referenceExpression);
((PyClassImpl) myClass).processDeclarations(processor);
if (namesAlready != null) {
for (LookupElement le : processor.getResultList()) {
String name = le.getLookupString();