mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-03 07:04:53 +00:00
Introduce ExpressionRef
(#6637)
## Summary This PR revives the `ExpressionRef` concept introduced in https://github.com/astral-sh/ruff/pull/5644, motivated by the change we want to make in https://github.com/astral-sh/ruff/pull/6575 to narrow the type of the expression that can be passed to `parenthesized_range`. ## Test Plan `cargo test`
This commit is contained in:
parent
fa7442da2f
commit
1334232168
6 changed files with 317 additions and 29 deletions
|
@ -1,7 +1,7 @@
|
|||
use ruff_formatter::prelude::tag::Condition;
|
||||
use ruff_formatter::{format_args, write, Argument, Arguments};
|
||||
use ruff_python_ast::node::AnyNodeRef;
|
||||
use ruff_python_ast::Ranged;
|
||||
use ruff_python_ast::{ExpressionRef, Ranged};
|
||||
use ruff_python_trivia::{first_non_trivia_token, SimpleToken, SimpleTokenKind, SimpleTokenizer};
|
||||
|
||||
use crate::comments::{
|
||||
|
@ -80,7 +80,7 @@ pub enum Parentheses {
|
|||
Never,
|
||||
}
|
||||
|
||||
pub(crate) fn is_expression_parenthesized(expr: AnyNodeRef, contents: &str) -> bool {
|
||||
pub(crate) fn is_expression_parenthesized(expr: ExpressionRef, contents: &str) -> bool {
|
||||
// First test if there's a closing parentheses because it tends to be cheaper.
|
||||
if matches!(
|
||||
first_non_trivia_token(expr.end(), contents),
|
||||
|
@ -378,7 +378,7 @@ impl Format<PyFormatContext<'_>> for FormatEmptyParenthesized<'_> {
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use ruff_python_ast::node::AnyNodeRef;
|
||||
use ruff_python_ast::ExpressionRef;
|
||||
use ruff_python_parser::parse_expression;
|
||||
|
||||
use crate::expression::parentheses::is_expression_parenthesized;
|
||||
|
@ -388,7 +388,7 @@ mod tests {
|
|||
let expression = r#"(b().c("")).d()"#;
|
||||
let expr = parse_expression(expression, "<filename>").unwrap();
|
||||
assert!(!is_expression_parenthesized(
|
||||
AnyNodeRef::from(&expr),
|
||||
ExpressionRef::from(&expr),
|
||||
expression
|
||||
));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue