mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
fixed PY-6548 @type in class docstrings does not recognize class variables
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user