diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/PyFileElementType.java b/python/python-psi-impl/src/com/jetbrains/python/psi/PyFileElementType.java index e2bb9369439b..9803f639bc8e 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/PyFileElementType.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/PyFileElementType.java @@ -60,7 +60,7 @@ public class PyFileElementType extends IStubFileElementType { @Override public int getStubVersion() { // Don't forget to update versions of indexes that use the updated stub-based elements - return 103; + return 104; } @Override diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.java b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.java index c4147dadf31d..08e169fbfb4b 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.java @@ -80,7 +80,7 @@ public final class PyTypingAliasStubType extends CustomTargetExpressionStubType< return null; } - if (isExplicitTypeAlias(target) || looksLikeTypeHint(value)) { + if (isExplicitTypeAlias(target) || (looksLikeTypeHint(value) && target.getAnnotation() == null)) { return value; } return null; diff --git a/python/testData/stubs/TypeAliasStubs.py b/python/testData/stubs/TypeAliasStubs.py index 2daddcb10f39..9d8ad740229e 100644 --- a/python/testData/stubs/TypeAliasStubs.py +++ b/python/testData/stubs/TypeAliasStubs.py @@ -22,6 +22,9 @@ bin3_ok = Union[str, bool] | None bin4_notOk = str & int list_notOk = [int, str] +bin5_notOk: int | str = "foo" +list_none_notOk: list[int] | None = None + callable_ok = Callable[[int, str], bool] explicit_alias1_ok: TypeAlias = 'Foo is bar.' diff --git a/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java index 06d9899459a3..5783b26ad9b4 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyTypeHintsInspectionTest.java @@ -3189,6 +3189,16 @@ public class PyTypeHintsInspectionTest extends PyInspectionTestCase { """); } + // PY-85120 + public void testTargetExpressionWithAnnotationNotConsideredTypeAlias() { + doTestByText(""" + a: list[int] | None = None # Not a type alias + + if a: + _ = a[1] # No error expected + """); + } + @NotNull @Override protected Class getInspectionClass() {