This commit is contained in:
Micha Reiser 2023-09-16 16:50:36 +02:00 committed by GitHub
parent 916dd5b7fa
commit c907317199
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 10 deletions

View file

@ -305,15 +305,15 @@ pub(crate) struct Comments<'a> {
/// }
/// ```
data: Rc<CommentsData<'a>>,
/// We need those for backwards lexing
comment_ranges: &'a CommentRanges,
}
impl<'a> Comments<'a> {
fn new(comments: CommentsMap<'a>, comment_ranges: &'a CommentRanges) -> Self {
Self {
data: Rc::new(CommentsData { comments }),
comment_ranges,
data: Rc::new(CommentsData {
comments,
comment_ranges,
}),
}
}
@ -321,13 +321,15 @@ impl<'a> Comments<'a> {
#[cfg(test)]
pub(crate) fn from_ranges(comment_ranges: &'a CommentRanges) -> Self {
Self {
data: Rc::new(CommentsData::default()),
comment_ranges,
data: Rc::new(CommentsData {
comments: CommentsMap::default(),
comment_ranges,
}),
}
}
pub(crate) fn ranges(&self) -> &'a CommentRanges {
self.comment_ranges
self.data.comment_ranges
}
/// Extracts the comments from the AST.
@ -521,9 +523,12 @@ impl LeadingDanglingTrailingComments<'_> {
}
}
#[derive(Debug, Default)]
#[derive(Debug)]
struct CommentsData<'a> {
comments: CommentsMap<'a>,
/// We need those for backwards lexing
comment_ranges: &'a CommentRanges,
}
struct MarkVerbatimCommentsAsFormattedVisitor<'a>(&'a Comments<'a>);

View file

@ -38,7 +38,11 @@ impl FormatNodeRule<ExprCall> for FormatExprCall {
let fmt_func = format_with(|f: &mut PyFormatter| {
// Format the function expression.
if is_expression_parenthesized(func.into(), f.context().source()) {
if is_expression_parenthesized(
func.into(),
f.context().comments().ranges(),
f.context().source(),
) {
func.format().with_options(Parentheses::Always).fmt(f)
} else {
match func.as_ref() {

View file

@ -43,7 +43,11 @@ impl FormatNodeRule<ExprSubscript> for FormatExprSubscript {
);
let format_inner = format_with(|f: &mut PyFormatter| {
if is_expression_parenthesized(value.into(), f.context().source()) {
if is_expression_parenthesized(
value.into(),
f.context().comments().ranges(),
f.context().source(),
) {
value.format().with_options(Parentheses::Always).fmt(f)
} else {
match value.as_ref() {