Attach dangling comments to the comprehension instead of the if or iter nodes (#7693)

This commit is contained in:
Micha Reiser 2023-09-29 11:45:01 +02:00 committed by GitHub
parent e62e245c61
commit e2ec42539b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 124 additions and 22 deletions

View file

@ -20,10 +20,11 @@ impl FormatNodeRule<ExprCompare> for FormatExprCompare {
fn fmt_dangling_comments(
&self,
_dangling_comments: &[SourceComment],
dangling_comments: &[SourceComment],
_f: &mut PyFormatter,
) -> FormatResult<()> {
// Node can not have dangling comments
debug_assert!(dangling_comments.is_empty());
Ok(())
}
}

View file

@ -3,7 +3,7 @@ use ruff_python_ast::node::AnyNodeRef;
use ruff_python_ast::ExprDictComp;
use ruff_text_size::Ranged;
use crate::comments::dangling_comments;
use crate::comments::{dangling_comments, SourceComment};
use crate::expression::parentheses::{parenthesized, NeedsParentheses, OptionalParentheses};
use crate::prelude::*;
@ -58,6 +58,15 @@ impl FormatNodeRule<ExprDictComp> for FormatExprDictComp {
.with_dangling_comments(open_parenthesis_comments)]
)
}
fn fmt_dangling_comments(
&self,
_dangling_node_comments: &[SourceComment],
_f: &mut PyFormatter,
) -> FormatResult<()> {
// Handled as part of `fmt_fields`
Ok(())
}
}
impl NeedsParentheses for ExprDictComp {

View file

@ -1,5 +1,6 @@
use memchr::memchr2;
use crate::comments::SourceComment;
use ruff_formatter::FormatResult;
use ruff_python_ast::node::AnyNodeRef;
use ruff_python_ast::ExprFString;
@ -16,6 +17,15 @@ impl FormatNodeRule<ExprFString> for FormatExprFString {
fn fmt_fields(&self, item: &ExprFString, f: &mut PyFormatter) -> FormatResult<()> {
FormatString::new(&AnyString::FString(item)).fmt(f)
}
fn fmt_dangling_comments(
&self,
_dangling_node_comments: &[SourceComment],
_f: &mut PyFormatter,
) -> FormatResult<()> {
// Handled as part of `fmt_fields`
Ok(())
}
}
impl NeedsParentheses for ExprFString {

View file

@ -26,10 +26,11 @@ impl FormatNodeRule<ExprName> for FormatExprName {
fn fmt_dangling_comments(
&self,
_dangling_comments: &[SourceComment],
dangling_comments: &[SourceComment],
_f: &mut PyFormatter,
) -> FormatResult<()> {
// Node cannot have dangling comments
debug_assert!(dangling_comments.is_empty());
Ok(())
}
}

View file

@ -146,6 +146,15 @@ impl FormatNodeRule<ExprSlice> for FormatExprSlice {
}
Ok(())
}
fn fmt_dangling_comments(
&self,
_dangling_node_comments: &[SourceComment],
_f: &mut PyFormatter,
) -> FormatResult<()> {
// Handled as part of `fmt_fields`
Ok(())
}
}
/// We're in a slice, so we know there's a first colon, but with have to look into the source