diff --git a/crates/ruff_python_formatter/src/comments/mod.rs b/crates/ruff_python_formatter/src/comments/mod.rs index 9c137080e5..07fc789f34 100644 --- a/crates/ruff_python_formatter/src/comments/mod.rs +++ b/crates/ruff_python_formatter/src/comments/mod.rs @@ -101,7 +101,6 @@ use ruff_python_trivia::{CommentLinePosition, CommentRanges, SuppressionKind}; use ruff_text_size::{Ranged, TextRange}; pub(crate) use visitor::collect_comments; -use crate::PreviewMode; use crate::comments::debug::{DebugComment, DebugComments}; use crate::comments::map::{LeadingDanglingTrailing, MultiMap}; use crate::comments::node_key::NodeRefEqualityKey; @@ -249,19 +248,16 @@ impl<'a> Comments<'a> { root: impl Into>, source_code: SourceCode<'a>, comment_ranges: &'a CommentRanges, - preview: PreviewMode, ) -> Self { fn collect_comments<'a>( root: AnyNodeRef<'a>, source_code: SourceCode<'a>, comment_ranges: &'a CommentRanges, - preview: PreviewMode, ) -> Comments<'a> { let map = if comment_ranges.is_empty() { CommentsMap::new() } else { - let mut builder = - CommentsMapBuilder::new(source_code.as_str(), comment_ranges, preview); + let mut builder = CommentsMapBuilder::new(source_code.as_str(), comment_ranges); CommentsVisitor::new(source_code, comment_ranges, &mut builder).visit(root); builder.finish() }; @@ -269,7 +265,7 @@ impl<'a> Comments<'a> { Comments::new(map, comment_ranges) } - collect_comments(root.into(), source_code, comment_ranges, preview) + collect_comments(root.into(), source_code, comment_ranges) } /// Returns `true` if the given `node` has any comments. @@ -524,7 +520,7 @@ mod tests { use ruff_python_parser::{ParseOptions, Parsed, parse}; use ruff_python_trivia::CommentRanges; - use crate::{PreviewMode, comments::Comments}; + use crate::comments::Comments; struct CommentsTestCase<'a> { parsed: Parsed, @@ -548,12 +544,7 @@ mod tests { } fn to_comments(&self) -> Comments<'_> { - Comments::from_ast( - self.parsed.syntax(), - self.source_code, - &self.comment_ranges, - PreviewMode::Disabled, - ) + Comments::from_ast(self.parsed.syntax(), self.source_code, &self.comment_ranges) } } diff --git a/crates/ruff_python_formatter/src/comments/placement.rs b/crates/ruff_python_formatter/src/comments/placement.rs index dfcfbeb91b..76449285be 100644 --- a/crates/ruff_python_formatter/src/comments/placement.rs +++ b/crates/ruff_python_formatter/src/comments/placement.rs @@ -11,7 +11,6 @@ use ruff_source_file::LineRanges; use ruff_text_size::{Ranged, TextLen, TextRange, TextSize}; use std::cmp::Ordering; -use crate::PreviewMode; use crate::comments::visitor::{CommentPlacement, DecoratedComment}; use crate::expression::expr_slice::{ExprSliceCommentSection, assign_comment_in_slice}; use crate::expression::parentheses::is_expression_parenthesized; @@ -19,19 +18,17 @@ use crate::other::parameters::{ assign_argument_separator_comment_placement, find_parameter_separators, }; use crate::pattern::pattern_match_sequence::SequenceType; -use crate::preview::is_parenthesize_lambda_bodies_enabled_preview; /// Manually attach comments to nodes that the default placement gets wrong. pub(super) fn place_comment<'a>( comment: DecoratedComment<'a>, comment_ranges: &CommentRanges, source: &str, - preview: PreviewMode, ) -> CommentPlacement<'a> { handle_parenthesized_comment(comment, source) .or_else(|comment| handle_end_of_line_comment_around_body(comment, source)) .or_else(|comment| handle_own_line_comment_around_body(comment, source)) - .or_else(|comment| handle_enclosed_comment(comment, comment_ranges, source, preview)) + .or_else(|comment| handle_enclosed_comment(comment, comment_ranges, source)) } /// Handle parenthesized comments. A parenthesized comment is a comment that appears within a @@ -196,7 +193,6 @@ fn handle_enclosed_comment<'a>( comment: DecoratedComment<'a>, comment_ranges: &CommentRanges, source: &str, - preview: PreviewMode, ) -> CommentPlacement<'a> { match comment.enclosing_node() { AnyNodeRef::Parameters(parameters) => { @@ -235,7 +231,7 @@ fn handle_enclosed_comment<'a>( } AnyNodeRef::ExprUnaryOp(unary_op) => handle_unary_op_comment(comment, unary_op, source), AnyNodeRef::ExprNamed(_) => handle_named_expr_comment(comment, source), - AnyNodeRef::ExprLambda(lambda) => handle_lambda_comment(comment, lambda, source, preview), + AnyNodeRef::ExprLambda(lambda) => handle_lambda_comment(comment, lambda, source), AnyNodeRef::ExprDict(_) => handle_dict_unpacking_comment(comment, source) .or_else(|comment| handle_bracketed_end_of_line_comment(comment, source)) .or_else(|comment| handle_key_value_comment(comment, source)), @@ -1800,35 +1796,21 @@ fn handle_named_expr_comment<'a>( /// Handles comments around the `:` token in a lambda expression. /// -/// For parameterized lambdas, comments will have the following placements: +/// For parameterized lambdas, both the comments between the `lambda` and the parameters, and the +/// comments between the parameters and the body, are considered dangling, as is the case for all +/// of the following: /// /// ```python /// ( -/// lambda # dangling lambda -/// # leading parameters +/// lambda # 1 +/// # 2 /// x -/// : # dangling lambda -/// # dangling lambda +/// : # 3 +/// # 4 /// y /// ) /// ``` /// -/// In [preview](is_parenthesize_lambda_bodies_enabled_preview), the comment placement is instead: -/// -/// ```python -/// ( -/// lambda # dangling lambda -/// # leading parameters -/// x -/// : # leading body -/// # leading body -/// y -/// ) -/// ``` -/// -/// Note that the final two comments are now leading on the body expression instead of dangling on -/// the lambda, which allows them to be moved into the parenthesized body. -/// /// For non-parameterized lambdas, all comments before the body are considered dangling, as is the /// case for all of the following: /// @@ -1841,25 +1823,10 @@ fn handle_named_expr_comment<'a>( /// y /// ) /// ``` -/// -/// In [preview](is_parenthesize_lambda_bodies_enabled_preview), these all instead become leading -/// comments on the body, allowing this formatting: -/// -/// ```python -/// ( -/// lambda: ( # 1 -/// # 2 -/// # 3 -/// # 4 -/// y -/// ) -/// ) -/// ``` fn handle_lambda_comment<'a>( comment: DecoratedComment<'a>, lambda: &'a ast::ExprLambda, source: &str, - preview: PreviewMode, ) -> CommentPlacement<'a> { if let Some(parameters) = lambda.parameters.as_deref() { // End-of-line comments between the `lambda` and the parameters are dangling on the lambda: @@ -1895,32 +1862,26 @@ fn handle_lambda_comment<'a>( // y // ) // ``` - // Except in preview, where they become leading on the body instead, regardless of - // parenthesization. if parameters.end() < comment.start() && comment.start() < lambda.body.start() { - return if is_parenthesize_lambda_bodies_enabled_preview(preview) { - CommentPlacement::leading(&*lambda.body, comment) - } else { - // If the value is parenthesized, and the comment is within the parentheses, it should - // be a leading comment on the value, not a dangling comment in the lambda, as in: - // ```python - // ( - // lambda x: ( # comment - // y - // ) - // ) - // ``` - let tokenizer = - SimpleTokenizer::new(source, TextRange::new(parameters.end(), comment.start())); - if tokenizer - .skip_trivia() - .any(|token| token.kind == SimpleTokenKind::LParen) - { - return CommentPlacement::Default(comment); - } + // If the value is parenthesized, and the comment is within the parentheses, it should + // be a leading comment on the value, not a dangling comment in the lambda, as in: + // ```python + // ( + // lambda x: ( # comment + // y + // ) + // ) + // ``` + let tokenizer = + SimpleTokenizer::new(source, TextRange::new(parameters.end(), comment.start())); + if tokenizer + .skip_trivia() + .any(|token| token.kind == SimpleTokenKind::LParen) + { + return CommentPlacement::Default(comment); + } - CommentPlacement::dangling(comment.enclosing_node(), comment) - }; + return CommentPlacement::dangling(comment.enclosing_node(), comment); } } else { // Comments between the lambda and the body are dangling on the lambda: @@ -1930,32 +1891,26 @@ fn handle_lambda_comment<'a>( // y // ) // ``` - // Except in preview, where they become leading on the body instead, regardless of - // parenthesization. if comment.start() < lambda.body.start() { - return if is_parenthesize_lambda_bodies_enabled_preview(preview) { - CommentPlacement::leading(&*lambda.body, comment) - } else { - // If the value is parenthesized, and the comment is within the parentheses, it should - // be a leading comment on the value, not a dangling comment in the lambda, as in: - // ```python - // ( - // lambda: ( # comment - // y - // ) - // ) - // ``` - let tokenizer = - SimpleTokenizer::new(source, TextRange::new(lambda.start(), comment.start())); - if tokenizer - .skip_trivia() - .any(|token| token.kind == SimpleTokenKind::LParen) - { - return CommentPlacement::Default(comment); - } + // If the value is parenthesized, and the comment is within the parentheses, it should + // be a leading comment on the value, not a dangling comment in the lambda, as in: + // ```python + // ( + // lambda: ( # comment + // y + // ) + // ) + // ``` + let tokenizer = + SimpleTokenizer::new(source, TextRange::new(lambda.start(), comment.start())); + if tokenizer + .skip_trivia() + .any(|token| token.kind == SimpleTokenKind::LParen) + { + return CommentPlacement::Default(comment); + } - CommentPlacement::dangling(comment.enclosing_node(), comment) - }; + return CommentPlacement::dangling(comment.enclosing_node(), comment); } } diff --git a/crates/ruff_python_formatter/src/comments/visitor.rs b/crates/ruff_python_formatter/src/comments/visitor.rs index 42e10f4bba..b9670a3ee8 100644 --- a/crates/ruff_python_formatter/src/comments/visitor.rs +++ b/crates/ruff_python_formatter/src/comments/visitor.rs @@ -11,7 +11,6 @@ use ruff_python_ast::visitor::source_order::*; use ruff_python_trivia::{CommentLinePosition, CommentRanges}; use ruff_text_size::{Ranged, TextRange, TextSize}; -use crate::PreviewMode; use crate::comments::node_key::NodeRefEqualityKey; use crate::comments::placement::place_comment; use crate::comments::{CommentsMap, SourceComment}; @@ -536,12 +535,11 @@ pub(super) struct CommentsMapBuilder<'a> { /// We need those for backwards lexing comment_ranges: &'a CommentRanges, source: &'a str, - preview: PreviewMode, } impl<'a> PushComment<'a> for CommentsMapBuilder<'a> { fn push_comment(&mut self, placement: DecoratedComment<'a>) { - let placement = place_comment(placement, self.comment_ranges, self.source, self.preview); + let placement = place_comment(placement, self.comment_ranges, self.source); match placement { CommentPlacement::Leading { node, comment } => { self.push_leading_comment(node, comment); @@ -603,16 +601,11 @@ impl<'a> PushComment<'a> for CommentsMapBuilder<'a> { } impl<'a> CommentsMapBuilder<'a> { - pub(crate) fn new( - source: &'a str, - comment_ranges: &'a CommentRanges, - preview: PreviewMode, - ) -> Self { + pub(crate) fn new(source: &'a str, comment_ranges: &'a CommentRanges) -> Self { Self { comments: CommentsMap::default(), comment_ranges, source, - preview, } } diff --git a/crates/ruff_python_formatter/src/expression/expr_lambda.rs b/crates/ruff_python_formatter/src/expression/expr_lambda.rs index baadc0c630..9e23f2212a 100644 --- a/crates/ruff_python_formatter/src/expression/expr_lambda.rs +++ b/crates/ruff_python_formatter/src/expression/expr_lambda.rs @@ -127,6 +127,51 @@ impl FormatNodeRule for FormatExprLambda { if dangling_after_parameters.is_empty() { write!(f, [space()])?; + } + // In preview, always parenthesize the body if there are dangling comments. + else if preview { + // Can't use partition_point because there can be additional end of line comments + // after the initial set. All of these comments are dangling, for example: + // + // ```python + // ( + // lambda # 1 + // # 2 + // : # 3 + // # 4 + // y + // ) + // ``` + // + // and alternate between own line and end of line. + let (after_parameters_end_of_line, leading_body_comments) = + dangling_after_parameters.split_at( + dangling_after_parameters + .iter() + .position(|comment| comment.line_position().is_own_line()) + .unwrap_or(dangling_after_parameters.len()), + ); + + let fmt_body = format_with(|f: &mut PyFormatter| { + write!( + f, + [ + space(), + token("("), + trailing_comments(after_parameters_end_of_line), + block_indent(&format_args!( + leading_comments(leading_body_comments), + body.format().with_options(Parentheses::Never) + )), + token(")") + ] + ) + }); + + return match self.layout { + ExprLambdaLayout::Assignment => fits_expanded(&fmt_body).fmt(f), + ExprLambdaLayout::Default => fmt_body.fmt(f), + }; } else { write!(f, [dangling_comments(dangling_after_parameters)])?; } @@ -136,6 +181,36 @@ impl FormatNodeRule for FormatExprLambda { // In this context, a dangling comment is a comment between the `lambda` and the body. if dangling.is_empty() { write!(f, [space()])?; + } + // In preview, always parenthesize the body if there are dangling comments. + else if preview { + let (dangling_end_of_line, dangling_own_line) = dangling.split_at( + dangling + .iter() + .position(|comment| comment.line_position().is_own_line()) + .unwrap_or(dangling.len()), + ); + + let fmt_body = format_with(|f: &mut PyFormatter| { + write!( + f, + [ + space(), + token("("), + trailing_comments(dangling_end_of_line), + block_indent(&format_args!( + leading_comments(dangling_own_line), + body.format().with_options(Parentheses::Never) + )), + token(")") + ] + ) + }); + + return match self.layout { + ExprLambdaLayout::Assignment => fits_expanded(&fmt_body).fmt(f), + ExprLambdaLayout::Default => fmt_body.fmt(f), + }; } else { write!(f, [dangling_comments(dangling)])?; } @@ -148,25 +223,7 @@ impl FormatNodeRule for FormatExprLambda { // ensures that we correctly handle parenthesized comments, and don't need to worry // about them in the implementation below. if body_comments.has_leading() || body_comments.has_trailing_own_line() { - let (leading_end_of_line, leading_own_line) = body_comments.leading.split_at( - body_comments - .leading - .iter() - .position(|comment| comment.line_position().is_own_line()) - .unwrap_or(body_comments.leading.len()), - ); - write!( - f, - [ - token("("), - trailing_comments(leading_end_of_line), - block_indent(&format_args!( - leading_comments(leading_own_line), - body.format().with_options(Parentheses::Never) - )), - token(")") - ] - ) + body.format().with_options(Parentheses::Always).fmt(f) } // Calls and subscripts require special formatting because they have their own // parentheses, but they can also have an arbitrary amount of text before the diff --git a/crates/ruff_python_formatter/src/lib.rs b/crates/ruff_python_formatter/src/lib.rs index c797b67018..bf68598e13 100644 --- a/crates/ruff_python_formatter/src/lib.rs +++ b/crates/ruff_python_formatter/src/lib.rs @@ -177,12 +177,7 @@ where &'a N: Into>, { let source_code = SourceCode::new(source); - let comments = Comments::from_ast( - parsed.syntax(), - source_code, - comment_ranges, - options.preview(), - ); + let comments = Comments::from_ast(parsed.syntax(), source_code, comment_ranges); let formatted = format!( PyFormatContext::new(options, source, comments, parsed.tokens()), @@ -218,14 +213,9 @@ pub fn formatted_file(db: &dyn Db, file: File) -> Result, FormatM } /// Public function for generating a printable string of the debug comments. -pub fn pretty_comments( - module: &Mod, - comment_ranges: &CommentRanges, - source: &str, - preview: PreviewMode, -) -> String { +pub fn pretty_comments(module: &Mod, comment_ranges: &CommentRanges, source: &str) -> String { let source_code = SourceCode::new(source); - let comments = Comments::from_ast(module, source_code, comment_ranges, preview); + let comments = Comments::from_ast(module, source_code, comment_ranges); std::format!("{comments:#?}", comments = comments.debug(source_code)) } diff --git a/crates/ruff_python_formatter/src/preview.rs b/crates/ruff_python_formatter/src/preview.rs index 86738daa1a..62b6b90033 100644 --- a/crates/ruff_python_formatter/src/preview.rs +++ b/crates/ruff_python_formatter/src/preview.rs @@ -5,7 +5,7 @@ //! for which specific feature this preview check is for. Having named functions simplifies the promotion: //! Simply delete the function and let Rust tell you which checks you have to remove. -use crate::{PreviewMode, PyFormatContext}; +use crate::PyFormatContext; /// Returns `true` if the [`hug_parens_with_braces_and_square_brackets`](https://github.com/astral-sh/ruff/issues/8279) preview style is enabled. pub(crate) const fn is_hug_parens_with_braces_and_square_brackets_enabled( @@ -59,6 +59,3 @@ pub(crate) const fn is_avoid_parens_for_long_as_captures_enabled( pub(crate) const fn is_parenthesize_lambda_bodies_enabled(context: &PyFormatContext) -> bool { context.is_preview() } -pub(crate) const fn is_parenthesize_lambda_bodies_enabled_preview(preview: PreviewMode) -> bool { - preview.is_enabled() -} diff --git a/crates/ruff_python_formatter/src/range.rs b/crates/ruff_python_formatter/src/range.rs index fdbfb64e81..436c1a12c2 100644 --- a/crates/ruff_python_formatter/src/range.rs +++ b/crates/ruff_python_formatter/src/range.rs @@ -76,12 +76,7 @@ pub fn format_range( let parsed = parse(source, ParseOptions::from(options.source_type()))?; let source_code = SourceCode::new(source); let comment_ranges = CommentRanges::from(parsed.tokens()); - let comments = Comments::from_ast( - parsed.syntax(), - source_code, - &comment_ranges, - options.preview(), - ); + let comments = Comments::from_ast(parsed.syntax(), source_code, &comment_ranges); let mut context = PyFormatContext::new( options.with_source_map_generation(SourceMapGeneration::Enabled), diff --git a/crates/ruff_python_formatter/src/string/docstring.rs b/crates/ruff_python_formatter/src/string/docstring.rs index e0cb398c48..ad357fc65e 100644 --- a/crates/ruff_python_formatter/src/string/docstring.rs +++ b/crates/ruff_python_formatter/src/string/docstring.rs @@ -1584,12 +1584,7 @@ fn docstring_format_source( let parsed = ruff_python_parser::parse(source, ParseOptions::from(source_type))?; let comment_ranges = CommentRanges::from(parsed.tokens()); let source_code = ruff_formatter::SourceCode::new(source); - let comments = crate::Comments::from_ast( - parsed.syntax(), - source_code, - &comment_ranges, - options.preview(), - ); + let comments = crate::Comments::from_ast(parsed.syntax(), source_code, &comment_ranges); let ctx = PyFormatContext::new(options, source, comments, parsed.tokens()) .in_docstring(docstring_quote_style); diff --git a/crates/ruff_python_formatter/tests/snapshots/format@expression__lambda.py.snap b/crates/ruff_python_formatter/tests/snapshots/format@expression__lambda.py.snap index 1db85689da..bb69b55e95 100644 --- a/crates/ruff_python_formatter/tests/snapshots/format@expression__lambda.py.snap +++ b/crates/ruff_python_formatter/tests/snapshots/format@expression__lambda.py.snap @@ -668,7 +668,7 @@ x = ( ) ( - lambda * # comemnt 1 + lambda * # comment 1 ergs, ** # comment 2 kwargs # comment 3 @@ -1496,7 +1496,7 @@ x = ( ( lambda - # comemnt 1 + # comment 1 *ergs, # comment 2 **kwargs: # comment 3 @@ -1738,7 +1738,7 @@ transform = ( ) lambda *x: x -@@ -161,30 +147,33 @@ +@@ -161,30 +147,34 @@ ) ( @@ -1780,11 +1780,12 @@ transform = ( ( - lambda: # comment - ( # comment -+ lambda: ( # comment # comment ++ lambda: ( # comment ++ # comment x ) ) -@@ -192,11 +181,12 @@ +@@ -192,11 +182,12 @@ ( lambda # 1 # 2 @@ -1802,7 +1803,7 @@ transform = ( ) ( -@@ -204,9 +194,10 @@ +@@ -204,9 +195,10 @@ # 2 x, # 3 # 4 @@ -1816,7 +1817,7 @@ transform = ( ) ( -@@ -218,71 +209,79 @@ +@@ -218,71 +210,79 @@ # Leading lambda x: ( @@ -1955,7 +1956,7 @@ transform = ( # Regression tests for https://github.com/astral-sh/ruff/issues/8179 -@@ -291,9 +290,9 @@ +@@ -291,9 +291,9 @@ c, d, e, @@ -1968,7 +1969,7 @@ transform = ( ) -@@ -302,15 +301,9 @@ +@@ -302,15 +302,9 @@ c, d, e, @@ -1987,7 +1988,7 @@ transform = ( g=10, ) -@@ -320,9 +313,9 @@ +@@ -320,9 +314,9 @@ c, d, e, @@ -2000,7 +2001,7 @@ transform = ( ) -@@ -338,9 +331,9 @@ +@@ -338,9 +332,9 @@ class C: function_dict: Dict[Text, Callable[[CRFToken], Any]] = { @@ -2013,7 +2014,7 @@ transform = ( } -@@ -352,42 +345,40 @@ +@@ -352,42 +346,40 @@ def foo(): if True: if True: @@ -2072,7 +2073,7 @@ transform = ( CREATE TABLE {table} AS SELECT ROW_NUMBER() OVER () AS id, {var} FROM ( -@@ -401,18 +392,19 @@ +@@ -401,18 +393,19 @@ long_assignment_target.with_attribute.and_a_slice[with_an_index] = ( # 1 # 2 @@ -2099,7 +2100,7 @@ transform = ( ) very_long_variable_name_x, very_long_variable_name_y = ( -@@ -420,8 +412,8 @@ +@@ -420,8 +413,8 @@ lambda b: b * another_very_long_expression_here, ) @@ -2110,7 +2111,7 @@ transform = ( x, more_args, additional_parameters ) ) -@@ -457,12 +449,12 @@ +@@ -457,12 +450,12 @@ [ # Not fluent param( @@ -2125,7 +2126,7 @@ transform = ( ), param( lambda left, right: ( -@@ -471,9 +463,9 @@ +@@ -471,9 +464,9 @@ ), param(lambda left, right: ibis.timestamp("2017-04-01").cast(dt.date)), param( @@ -2138,7 +2139,7 @@ transform = ( ), # This is too long on one line in the lambda body and gets wrapped # inside the body. -@@ -507,16 +499,18 @@ +@@ -507,16 +500,18 @@ ] # adds parentheses around the body @@ -2160,7 +2161,7 @@ transform = ( lambda x, y, z: ( x + y + z -@@ -527,7 +521,7 @@ +@@ -527,7 +522,7 @@ x + y + z # trailing eol body ) @@ -2169,7 +2170,7 @@ transform = ( lambda x, y, z: ( # leading body -@@ -539,21 +533,23 @@ +@@ -539,21 +534,23 @@ ) ( @@ -2203,7 +2204,7 @@ transform = ( # dangling header comment source_bucket if name == source_bucket_name -@@ -561,8 +557,7 @@ +@@ -561,8 +558,7 @@ ) ( @@ -2213,7 +2214,7 @@ transform = ( source_bucket if name == source_bucket_name else storage.Bucket(mock_service, destination_bucket_name) -@@ -570,61 +565,70 @@ +@@ -570,61 +566,70 @@ ) ( @@ -2316,7 +2317,7 @@ transform = ( ) ( -@@ -637,33 +641,37 @@ +@@ -637,33 +642,37 @@ ( lambda # comment @@ -2365,7 +2366,7 @@ transform = ( # comment 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(*args, **kwargs) + 1 # comment 4 -@@ -672,25 +680,28 @@ +@@ -672,25 +681,28 @@ ) ( @@ -2406,8 +2407,8 @@ transform = ( ) ( -@@ -698,9 +709,9 @@ - # comemnt 1 +@@ -698,9 +710,9 @@ + # comment 1 *ergs, # comment 2 - **kwargs: # comment 3 @@ -2419,7 +2420,7 @@ transform = ( ) ( -@@ -708,19 +719,20 @@ +@@ -708,19 +720,20 @@ # 2 left, # 3 # 4 @@ -2450,7 +2451,7 @@ transform = ( ) ) ) -@@ -738,48 +750,52 @@ +@@ -738,48 +751,52 @@ foo( lambda from_ts, # but still wrap the body if it gets too long to_ts, diff --git a/crates/ruff_wasm/src/lib.rs b/crates/ruff_wasm/src/lib.rs index c23a510ab3..6dd49a15bf 100644 --- a/crates/ruff_wasm/src/lib.rs +++ b/crates/ruff_wasm/src/lib.rs @@ -289,12 +289,7 @@ impl Workspace { pub fn comments(&self, contents: &str) -> Result { let parsed = ParsedModule::from_source(contents)?; let comment_ranges = CommentRanges::from(parsed.parsed.tokens()); - let comments = pretty_comments( - parsed.parsed.syntax(), - &comment_ranges, - contents, - self.settings.formatter.preview, - ); + let comments = pretty_comments(parsed.parsed.syntax(), &comment_ranges, contents); Ok(comments) }