From 4d95db91ba7f90cd3cebd40082e6e40880ab383f Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 21 Jun 2012 12:21:03 +0400 Subject: [PATCH] fixed PY-6548 @type in class docstrings does not recognize class variables --- .../DocStringParameterReference.java | 27 ++++++++++++------- .../docstring.py | 4 +++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/python/src/com/jetbrains/python/documentation/DocStringParameterReference.java b/python/src/com/jetbrains/python/documentation/DocStringParameterReference.java index 450e55dc2d4b..b5228f4a0531 100644 --- a/python/src/com/jetbrains/python/documentation/DocStringParameterReference.java +++ b/python/src/com/jetbrains/python/documentation/DocStringParameterReference.java @@ -38,17 +38,26 @@ public class DocStringParameterReference extends PsiReferenceBase { 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; diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/docstring.py b/python/testData/inspections/PyUnresolvedReferencesInspection/docstring.py index d7439be62056..efcecd34b78b 100644 --- a/python/testData/inspections/PyUnresolvedReferencesInspection/docstring.py +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/docstring.py @@ -5,6 +5,10 @@ class Test(object): """ some = 'hello' + def __init__(self): + self.some1 = 10 + + def q(self, another): """ @param another: another variable