From 62bd8bee5eee49edf4f83c1d15734aca4f0cdaf4 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Fri, 14 Nov 2014 20:01:51 +0300 Subject: [PATCH] Don't use Cython resolver for resolving references to __init__.py (PY-13554, PY-14102) Normal resolvers should do their job with __init__.py. Using the Cython resolver instead resulted in bypassing class type to instance type casting for docstring type references to classses in nested packages. --- .../DocstringTypeFromSubModule/a.py | 12 ++++++++++++ .../DocstringTypeFromSubModule/pkg1/__init__.py | 1 + .../DocstringTypeFromSubModule/pkg1/m1.py | 6 ++++++ .../PyUnresolvedReferencesInspectionTest.java | 5 +++++ 4 files changed, 24 insertions(+) create mode 100644 python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/a.py create mode 100644 python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/__init__.py create mode 100644 python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/m1.py diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/a.py new file mode 100644 index 000000000000..2078ac81e2e0 --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/a.py @@ -0,0 +1,12 @@ +from pkg1 import C + + +def foo(): + """ + :rtype: pkg1.C + """ + return C(0) + + +obj = foo() +obj.bar diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/__init__.py b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/__init__.py new file mode 100644 index 000000000000..10d1ffa6e8e7 --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/__init__.py @@ -0,0 +1 @@ +from m1 import * diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/m1.py b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/m1.py new file mode 100644 index 000000000000..33e89d716787 --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/DocstringTypeFromSubModule/pkg1/m1.py @@ -0,0 +1,6 @@ +class C(object): + def __init__(self, bar): + """ + :param int bar: Some parameter + """ + self.bar = bar diff --git a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java index 8971fb78dd55..88b036bac86e 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java @@ -410,6 +410,11 @@ public class PyUnresolvedReferencesInspectionTest extends PyInspectionTestCase { myFixture.checkHighlighting(isWarning(), isInfo(), isWeakWarning()); } + // PY-13554 + public void testDocstringTypeFromSubModule() { + doMultiFileTest(); + } + @NotNull @Override protected Class getInspectionClass() {