diff --git a/crates/ruff/resources/test/fixtures/flake8_raise/RSE102.py b/crates/ruff/resources/test/fixtures/flake8_raise/RSE102.py index aa80fa51452ac..4d6fe456ba831 100644 --- a/crates/ruff/resources/test/fixtures/flake8_raise/RSE102.py +++ b/crates/ruff/resources/test/fixtures/flake8_raise/RSE102.py @@ -32,3 +32,9 @@ raise AssertionError raise AttributeError("test message") + + +def return_error(): + return ValueError("Something") + +raise return_error() diff --git a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs index ee3b0d7e6960b..731731367abcf 100644 --- a/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs +++ b/crates/ruff/src/rules/flake8_raise/rules/unnecessary_paren_on_raise_exception.rs @@ -52,6 +52,18 @@ pub(crate) fn unnecessary_paren_on_raise_exception(checker: &mut Checker, expr: range: _, }) = expr { + let Expr::Name(ast::ExprName { id, .. }) = func.as_ref() else { + return; + }; + + let scope = checker.semantic().scope(); + if let Some(binding_id) = scope.get(id) { + let binding = checker.semantic().binding(binding_id); + if binding.kind.is_function_definition() { + return; + } + } + if args.is_empty() && keywords.is_empty() { let range = match_parens(func.end(), checker.locator) .expect("Expected call to include parentheses");