From 545bd30c7bdc50009cf931ad585884cdd2117535 Mon Sep 17 00:00:00 2001 From: Zanie Date: Thu, 9 Nov 2023 00:32:32 -0600 Subject: [PATCH] Fix match in `match_typing_call_path` --- ...er__rules__flake8_pyi__tests__PYI050_PYI050.py.snap | 9 +++++++++ ...r__rules__flake8_pyi__tests__PYI050_PYI050.pyi.snap | 10 ++++++++++ crates/ruff_python_semantic/src/model.rs | 9 ++++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.py.snap b/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.py.snap index 11b5d19b5ebd7..1f70291a11d98 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.py.snap +++ b/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.py.snap @@ -8,6 +8,15 @@ PYI050.py:13:24: PYI050 Prefer `typing.Never` over `NoReturn` for argument annot 14 | ... | +PYI050.py:18:10: PYI050 Prefer `typing.Never` over `NoReturn` for argument annotations + | +17 | def foo_no_return_typing_extensions( +18 | arg: typing_extensions.NoReturn, + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI050 +19 | ): +20 | ... + | + PYI050.py:23:44: PYI050 Prefer `typing.Never` over `NoReturn` for argument annotations | 23 | def foo_no_return_kwarg(arg: int, *, arg2: NoReturn): diff --git a/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.pyi.snap b/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.pyi.snap index a0cb503548fca..ee4be9d9f38bb 100644 --- a/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.pyi.snap +++ b/crates/ruff_linter/src/rules/flake8_pyi/snapshots/ruff_linter__rules__flake8_pyi__tests__PYI050_PYI050.pyi.snap @@ -11,6 +11,16 @@ PYI050.pyi:6:24: PYI050 Prefer `typing.Never` over `NoReturn` for argument annot 8 | arg: typing_extensions.NoReturn, | +PYI050.pyi:8:10: PYI050 Prefer `typing.Never` over `NoReturn` for argument annotations + | + 6 | def foo_no_return(arg: NoReturn): ... # Error: PYI050 + 7 | def foo_no_return_typing_extensions( + 8 | arg: typing_extensions.NoReturn, + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI050 + 9 | ): ... # Error: PYI050 +10 | def foo_no_return_kwarg(arg: int, *, arg2: NoReturn): ... # Error: PYI050 + | + PYI050.pyi:10:44: PYI050 Prefer `typing.Never` over `NoReturn` for argument annotations | 8 | arg: typing_extensions.NoReturn, diff --git a/crates/ruff_python_semantic/src/model.rs b/crates/ruff_python_semantic/src/model.rs index 00ac16729bfce..332cda194eb45 100644 --- a/crates/ruff_python_semantic/src/model.rs +++ b/crates/ruff_python_semantic/src/model.rs @@ -174,11 +174,10 @@ impl<'a> SemanticModel<'a> { /// Return `true` if the call path is a reference to `typing.${target}`. pub fn match_typing_call_path(&self, call_path: &CallPath, target: &str) -> bool { - if matches!( - call_path.as_slice(), - ["typing" | "_typeshed" | "typing_extensions", _target] - ) { - return true; + if let ["typing" | "_typeshed" | "typing_extensions", name] = call_path.as_slice() { + if *name == target { + return true; + } } if self.typing_modules.iter().any(|module| {