diff --git a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java index 1d483019cae3..27673487d75a 100644 --- a/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/PyReferenceExpressionImpl.java @@ -29,6 +29,7 @@ import com.jetbrains.python.PyTokenTypes; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.types.PyModuleType; import com.jetbrains.python.psi.types.PyType; +import com.jetbrains.python.psi.types.PyClassType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -228,6 +229,9 @@ public class PyReferenceExpressionImpl extends PyElementImpl implements PyRefere if (target instanceof PyFile) { return new PyModuleType((PyFile) target); } + if (target instanceof PyClass) { + return new PyClassType((PyClass) target); + } return getReferenceTypeFromProviders(target); } diff --git a/python/testData/resolve/SuperField.py b/python/testData/resolve/SuperField.py new file mode 100644 index 000000000000..1da45156df17 --- /dev/null +++ b/python/testData/resolve/SuperField.py @@ -0,0 +1,7 @@ +class A(object): + def __init__(self): + self.qq = 1 + +class B(A): + def test(self): + print self.qq \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyResolveTest.java b/python/testSrc/com/jetbrains/python/PyResolveTest.java index aab30288dd67..a1373b8a1ac8 100644 --- a/python/testSrc/com/jetbrains/python/PyResolveTest.java +++ b/python/testSrc/com/jetbrains/python/PyResolveTest.java @@ -72,6 +72,11 @@ public class PyResolveTest extends ResolveTestCase { assertTrue(targetElement instanceof PyParameter); } + public void testSuperField() throws Exception { + PsiElement targetElement = resolve(); + assertTrue(targetElement instanceof PyTargetExpression); + } + @Override protected String getTestDataPath() { return PathManager.getHomePath() + "/plugins/python/testData/resolve/";