fixed PY-6548 @type in class docstrings does not recognize class variables

This commit is contained in:
Ekaterina Tuzova
2012-06-21 12:21:03 +04:00
parent 97e563120e
commit 4d95db91ba
2 changed files with 22 additions and 9 deletions
@@ -38,17 +38,26 @@ public class DocStringParameterReference extends PsiReferenceBase<PsiElement> {
if (owner instanceof PyClass) {
final PyFunction init = ((PyClass)owner).findMethodByName(PyNames.INIT, false);
if (init != null) {
return resolveParameter(init);
PsiElement element = resolveParameter(init);
if (element == null)
element = resolveClassVariable(owner);
return element;
}
else {
final PyStatementList statementList = ((PyClass)owner).getStatementList();
for (PsiElement element : statementList.getChildren()) {
if (element instanceof PyAssignmentStatement) {
final PyExpression[] targets = ((PyAssignmentStatement)element).getTargets();
if (targets.length > 0 && targets[0].getText().equals(getCanonicalText()))
return targets[0];
}
}
return resolveClassVariable(owner);
}
}
return null;
}
@Nullable
private PsiElement resolveClassVariable(final PyDocStringOwner owner) {
final PyStatementList statementList = ((PyClass)owner).getStatementList();
for (PsiElement element : statementList.getChildren()) {
if (element instanceof PyAssignmentStatement) {
final PyExpression[] targets = ((PyAssignmentStatement)element).getTargets();
if (targets.length > 0 && targets[0].getText().equals(getCanonicalText()))
return targets[0];
}
}
return null;
@@ -5,6 +5,10 @@ class Test(object):
"""
some = 'hello'
def __init__(self):
self.some1 = 10
def q(self, another):
"""
@param another: another variable