From 3734499d0852ffb699b5dc5faa8e4c74e89eece0 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Thu, 30 Jan 2025 11:55:25 +0100 Subject: [PATCH] Revert "Allow single empty line between JSX expressions (#7246)" This reverts commit 3750ca3665454f1c948a6bf9d3db14fbbd60be71. --- CHANGELOG.md | 1 - compiler/syntax/src/res_printer.ml | 67 ++++++++----------- .../printer/comments/expected/jsx.res.txt | 1 - .../data/printer/expr/expected/jsx.res.txt | 47 ------------- tests/syntax_tests/data/printer/expr/jsx.res | 49 -------------- 5 files changed, 27 insertions(+), 138 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a46f94759a..3fe07dfdbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,6 @@ - AST cleanup: represent concatenation (`++`) and (dis)equality operators (`==`, `===`, `!=`, `!==`) just like in the syntax. https://github.com/rescript-lang/rescript/pull/7248 - AST cleanup: use inline record for `Ptyp_arrow`. https://github.com/rescript-lang/rescript/pull/7250 - Playground: Bundle stdlib runtime so that the playground can execute functions from Core/Belt/Js. (#7255) -- Allow single newline in JSX. https://github.com/rescript-lang/rescript/pull/7246 #### :nail_care: Polish diff --git a/compiler/syntax/src/res_printer.ml b/compiler/syntax/src/res_printer.ml index 674e75139a..1f48309c24 100644 --- a/compiler/syntax/src/res_printer.ml +++ b/compiler/syntax/src/res_printer.ml @@ -4435,46 +4435,33 @@ and print_jsx_children ~state (children_expr : Parsetree.expression) ~sep match children_expr.pexp_desc with | Pexp_construct ({txt = Longident.Lident "::"}, _) -> let children, _ = ParsetreeViewer.collect_list_expressions children_expr in - let print_expr (expr : Parsetree.expression) = - let leading_line_comment_present = - has_leading_line_comment cmt_tbl expr.pexp_loc - in - let expr_doc = print_expression_with_comments ~state expr cmt_tbl in - let add_parens_or_braces expr_doc = - (* {(20: int)} make sure that we also protect the expression inside *) - let inner_doc = - if Parens.braced_expr expr then add_parens expr_doc else expr_doc - in - if leading_line_comment_present then add_braces inner_doc - else Doc.concat [Doc.lbrace; inner_doc; Doc.rbrace] - in - match Parens.jsx_child_expr expr with - | Nothing -> expr_doc - | Parenthesized -> add_parens_or_braces expr_doc - | Braced braces_loc -> - print_comments (add_parens_or_braces expr_doc) cmt_tbl braces_loc - in - let get_loc expr = - match ParsetreeViewer.process_braces_attr expr with - | None, _ -> expr.pexp_loc - | Some ({loc}, _), _ -> loc - in - let rec loop prev acc exprs = - match exprs with - | [] -> List.rev acc - | expr :: tails -> - let start_loc = (get_loc expr).loc_start.pos_lnum in - let end_loc = (get_loc prev).loc_end.pos_lnum in - let expr_doc = print_expr expr in - let docs = - if start_loc - end_loc > 1 then - Doc.concat [Doc.hard_line; expr_doc] :: acc - else expr_doc :: acc - in - loop expr docs tails - in - let docs = loop children_expr [] children in - Doc.group (Doc.join ~sep docs) + Doc.group + (Doc.join ~sep + (List.map + (fun (expr : Parsetree.expression) -> + let leading_line_comment_present = + has_leading_line_comment cmt_tbl expr.pexp_loc + in + let expr_doc = + print_expression_with_comments ~state expr cmt_tbl + in + let add_parens_or_braces expr_doc = + (* {(20: int)} make sure that we also protect the expression inside *) + let inner_doc = + if Parens.braced_expr expr then add_parens expr_doc + else expr_doc + in + if leading_line_comment_present then add_braces inner_doc + else Doc.concat [Doc.lbrace; inner_doc; Doc.rbrace] + in + match Parens.jsx_child_expr expr with + | Nothing -> expr_doc + | Parenthesized -> add_parens_or_braces expr_doc + | Braced braces_loc -> + print_comments + (add_parens_or_braces expr_doc) + cmt_tbl braces_loc) + children)) | _ -> let leading_line_comment_present = has_leading_line_comment cmt_tbl children_expr.pexp_loc diff --git a/tests/syntax_tests/data/printer/comments/expected/jsx.res.txt b/tests/syntax_tests/data/printer/comments/expected/jsx.res.txt index a6b84d48d1..98f1bf3ee3 100644 --- a/tests/syntax_tests/data/printer/comments/expected/jsx.res.txt +++ b/tests/syntax_tests/data/printer/comments/expected/jsx.res.txt @@ -69,7 +69,6 @@ let x = <> // before a {a} // after a - // before b {b} // after b diff --git a/tests/syntax_tests/data/printer/expr/expected/jsx.res.txt b/tests/syntax_tests/data/printer/expr/expected/jsx.res.txt index 4c59e0f619..2384f5ecb6 100644 --- a/tests/syntax_tests/data/printer/expr/expected/jsx.res.txt +++ b/tests/syntax_tests/data/printer/expr/expected/jsx.res.txt @@ -351,7 +351,6 @@ module App = { // comment content } - { // comment if condition() { @@ -461,49 +460,3 @@ let x = { let _ = {children} msg->React.string } - -let x = -
- { - () - }} - /> - - // Comment 2 - - { - () - }}> - { - () - }} - /> - - // Comment - { - () - }} - /> - - - - { - () - }} - /> -
diff --git a/tests/syntax_tests/data/printer/expr/jsx.res b/tests/syntax_tests/data/printer/expr/jsx.res index b3d76d081c..2745f5974f 100644 --- a/tests/syntax_tests/data/printer/expr/jsx.res +++ b/tests/syntax_tests/data/printer/expr/jsx.res @@ -443,52 +443,3 @@ let x = { let _ = {children} msg->React.string } - -let x = -
- { - () - }} - /> - - // Comment 2 - - { - () - }} - > - { - () - }} - /> - - - // Comment - { - () - }} - /> - - - - { - () - }} - /> -