diff --git a/crates/ruff_linter/resources/test/fixtures/pyupgrade/UP045_py39.py b/crates/ruff_linter/resources/test/fixtures/pyupgrade/UP045_py39.py index 3a5aab983d..e1af45d99c 100644 --- a/crates/ruff_linter/resources/test/fixtures/pyupgrade/UP045_py39.py +++ b/crates/ruff_linter/resources/test/fixtures/pyupgrade/UP045_py39.py @@ -4,10 +4,12 @@ Regression test for https://github.com/astral-sh/ruff/issues/20096 from __future__ import annotations -from typing import Optional, cast +from typing import Optional, cast, TypeAlias x: Optional[str] # UP045 x: "Optional[str]" # UP045 cast("Optional[str]", None) # UP045 cast(Optional[str], None) # okay, str | None is a runtime error +x: TypeAlias = "Optional[str]" # UP045 +x: TypeAlias = Optional[str] # okay diff --git a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__up045_future_annotations_py39.snap b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__up045_future_annotations_py39.snap index d2270601ee..b109a463ae 100644 --- a/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__up045_future_annotations_py39.snap +++ b/crates/ruff_linter/src/rules/pyupgrade/snapshots/ruff_linter__rules__pyupgrade__tests__up045_future_annotations_py39.snap @@ -10,7 +10,7 @@ UP045 [*] Use `X | None` for type annotations 12 | cast("Optional[str]", None) # UP045 | help: Convert to `X | None` -7 | from typing import Optional, cast +7 | from typing import Optional, cast, TypeAlias 8 | 9 | - x: Optional[str] # UP045 @@ -37,6 +37,7 @@ help: Convert to `X | None` 11 + x: "str | None" # UP045 12 | cast("Optional[str]", None) # UP045 13 | cast(Optional[str], None) # okay, str | None is a runtime error +14 | x: TypeAlias = "Optional[str]" # UP045 note: This is an unsafe fix and may change runtime behavior UP045 [*] Use `X | None` for type annotations @@ -47,6 +48,7 @@ UP045 [*] Use `X | None` for type annotations 12 | cast("Optional[str]", None) # UP045 | ^^^^^^^^^^^^^ 13 | cast(Optional[str], None) # okay, str | None is a runtime error +14 | x: TypeAlias = "Optional[str]" # UP045 | help: Convert to `X | None` 9 | @@ -55,4 +57,24 @@ help: Convert to `X | None` - cast("Optional[str]", None) # UP045 12 + cast("str | None", None) # UP045 13 | cast(Optional[str], None) # okay, str | None is a runtime error +14 | x: TypeAlias = "Optional[str]" # UP045 +15 | x: TypeAlias = Optional[str] # okay +note: This is an unsafe fix and may change runtime behavior + +UP045 [*] Use `X | None` for type annotations + --> UP045_py39.py:14:17 + | +12 | cast("Optional[str]", None) # UP045 +13 | cast(Optional[str], None) # okay, str | None is a runtime error +14 | x: TypeAlias = "Optional[str]" # UP045 + | ^^^^^^^^^^^^^ +15 | x: TypeAlias = Optional[str] # okay + | +help: Convert to `X | None` +11 | x: "Optional[str]" # UP045 +12 | cast("Optional[str]", None) # UP045 +13 | cast(Optional[str], None) # okay, str | None is a runtime error + - x: TypeAlias = "Optional[str]" # UP045 +14 + x: TypeAlias = "str | None" # UP045 +15 | x: TypeAlias = Optional[str] # okay note: This is an unsafe fix and may change runtime behavior