diff --git a/python/python-common-tests/com/jetbrains/python/PyCommonResolveTest.java b/python/python-common-tests/com/jetbrains/python/PyCommonResolveTest.java index 5b6336ed8895..77b126b38aad 100644 --- a/python/python-common-tests/com/jetbrains/python/PyCommonResolveTest.java +++ b/python/python-common-tests/com/jetbrains/python/PyCommonResolveTest.java @@ -1374,7 +1374,23 @@ public abstract class PyCommonResolveTest extends PyCommonResolveTestCase { } // PY-28228 - public void testReturnAnnotationForwardReference() { + public void testMethodReturnAnnotationForwardReferenceBefore314() { + runWithLanguageLevel( + LanguageLevel.PYTHON37, + () -> assertUnresolved() + ); + } + + // PY-28228 + public void testFunctionReturnAnnotationForwardReferenceBefore314() { + runWithLanguageLevel( + LanguageLevel.PYTHON37, + () -> assertUnresolved() + ); + } + + // PY-28228 + public void testMethodReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations() { runWithLanguageLevel( LanguageLevel.PYTHON37, () -> assertResolvesTo(PyClass.class, "A") @@ -1382,13 +1398,37 @@ public abstract class PyCommonResolveTest extends PyCommonResolveTestCase { } // PY-28228 - public void testParameterAnnotationForwardReference() { + public void testFunctionReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations() { runWithLanguageLevel( LanguageLevel.PYTHON37, () -> assertResolvesTo(PyClass.class, "A") ); } + // PY-28228 + public void testMethodParameterAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations() { + runWithLanguageLevel( + LanguageLevel.PYTHON37, + () -> assertResolvesTo(PyClass.class, "A") + ); + } + + // PY-80002 + public void testMethodReturnAnnotationForwardReference() { + runWithLanguageLevel( + LanguageLevel.getLatest(), + () -> assertResolvesTo(PyClass.class, "A") + ); + } + + // PY-80002 + public void testFunctionReturnAnnotationForwardReference() { + runWithLanguageLevel( + LanguageLevel.getLatest(), + () -> assertResolvesTo(PyClass.class, "A") + ); + } + // PY-19890 public void testUnboundVariableOnClassLevelDeclaredBelowAsTarget() { final PyTargetExpression foo = assertResolvesTo(PyTargetExpression.class, "foo"); diff --git a/python/testData/resolve/FunctionReturnAnnotationForwardReference.py b/python/testData/resolve/FunctionReturnAnnotationForwardReference.py new file mode 100644 index 000000000000..1e345ff61224 --- /dev/null +++ b/python/testData/resolve/FunctionReturnAnnotationForwardReference.py @@ -0,0 +1,6 @@ +def create() -> A: + # + pass + +class A: + pass diff --git a/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314.py b/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314.py new file mode 100644 index 000000000000..1e345ff61224 --- /dev/null +++ b/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314.py @@ -0,0 +1,6 @@ +def create() -> A: + # + pass + +class A: + pass diff --git a/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py b/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py new file mode 100644 index 000000000000..352fcec620db --- /dev/null +++ b/python/testData/resolve/FunctionReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py @@ -0,0 +1,8 @@ +from __future__ import annotations + +def create() -> A: + # + pass + +class A: + pass diff --git a/python/testData/resolve/ParameterAnnotationForwardReference.py b/python/testData/resolve/MethodParameterAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py similarity index 100% rename from python/testData/resolve/ParameterAnnotationForwardReference.py rename to python/testData/resolve/MethodParameterAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py diff --git a/python/testData/resolve/MethodReturnAnnotationForwardReference.py b/python/testData/resolve/MethodReturnAnnotationForwardReference.py new file mode 100644 index 000000000000..48372475e8fa --- /dev/null +++ b/python/testData/resolve/MethodReturnAnnotationForwardReference.py @@ -0,0 +1,7 @@ +class B: + def create(self) -> A: + # + pass + +class A: + pass \ No newline at end of file diff --git a/python/testData/resolve/MethodReturnAnnotationForwardReferenceBefore314.py b/python/testData/resolve/MethodReturnAnnotationForwardReferenceBefore314.py new file mode 100644 index 000000000000..48372475e8fa --- /dev/null +++ b/python/testData/resolve/MethodReturnAnnotationForwardReferenceBefore314.py @@ -0,0 +1,7 @@ +class B: + def create(self) -> A: + # + pass + +class A: + pass \ No newline at end of file diff --git a/python/testData/resolve/ReturnAnnotationForwardReference.py b/python/testData/resolve/MethodReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py similarity index 100% rename from python/testData/resolve/ReturnAnnotationForwardReference.py rename to python/testData/resolve/MethodReturnAnnotationForwardReferenceBefore314WithFromFutureImportAnnotations.py