diff --git a/packages/autofmt/src/writer.rs b/packages/autofmt/src/writer.rs index d9dfbd3ec..462a4ba83 100644 --- a/packages/autofmt/src/writer.rs +++ b/packages/autofmt/src/writer.rs @@ -426,7 +426,13 @@ impl<'a> Writer<'a> { { let comments = self.accumulate_full_line_comments(brace.span.span().end()); if !comments.is_empty() { + // Undo the tab from tabbed_line(). It positioned for the closing + // brace, but trailing comments need child-level indentation + let tab_width = self.out.indent.indent_str().len() * self.out.indent_level; + self.out.buf.truncate(self.out.buf.len() - tab_width); + self.out.indent_level += 1; self.apply_line_comments(comments)?; + self.out.indent_level -= 1; self.out.tab()?; } } diff --git a/packages/autofmt/tests/samples.rs b/packages/autofmt/tests/samples.rs index 7a8257f73..d38cfef93 100644 --- a/packages/autofmt/tests/samples.rs +++ b/packages/autofmt/tests/samples.rs @@ -69,6 +69,11 @@ twoway![ blank_lines, blank_lines_preserved, forloop_tuple, + commented_rsx_block, + commented_rsx_block_nested, + commented_rsx_block_only, + commented_rsx_block_between, + commented_rsx_block_deep, ]; fn assert_idempotent(src: &str) { diff --git a/packages/autofmt/tests/samples/commented_rsx_block.rsx b/packages/autofmt/tests/samples/commented_rsx_block.rsx new file mode 100644 index 000000000..5de4d232d --- /dev/null +++ b/packages/autofmt/tests/samples/commented_rsx_block.rsx @@ -0,0 +1,9 @@ +rsx! { + div { + h2 { "Title" } + // div { class: "wrapper", + // p { "A" } + // p { "B" } + // } + } +} diff --git a/packages/autofmt/tests/samples/commented_rsx_block_between.rsx b/packages/autofmt/tests/samples/commented_rsx_block_between.rsx new file mode 100644 index 000000000..a547417f5 --- /dev/null +++ b/packages/autofmt/tests/samples/commented_rsx_block_between.rsx @@ -0,0 +1,9 @@ +rsx! { + div { + h1 { "Before" } + // div { class: "commented", + // p { "A" } + // } + h2 { "After" } + } +} diff --git a/packages/autofmt/tests/samples/commented_rsx_block_deep.rsx b/packages/autofmt/tests/samples/commented_rsx_block_deep.rsx new file mode 100644 index 000000000..3affb9327 --- /dev/null +++ b/packages/autofmt/tests/samples/commented_rsx_block_deep.rsx @@ -0,0 +1,12 @@ +rsx! { + div { + div { + div { + h2 { "Title" } + // div { class: "deep", + // p { "A" } + // } + } + } + } +} diff --git a/packages/autofmt/tests/samples/commented_rsx_block_nested.rsx b/packages/autofmt/tests/samples/commented_rsx_block_nested.rsx new file mode 100644 index 000000000..1da97f33e --- /dev/null +++ b/packages/autofmt/tests/samples/commented_rsx_block_nested.rsx @@ -0,0 +1,13 @@ +rsx! { + Component { + field: rsx! { + div { + h2 { "Title" } + // div { class: "wrapper", + // // nested comment + // p { "A" } + // } + } + }, + } +} diff --git a/packages/autofmt/tests/samples/commented_rsx_block_only.rsx b/packages/autofmt/tests/samples/commented_rsx_block_only.rsx new file mode 100644 index 000000000..bbbc099f5 --- /dev/null +++ b/packages/autofmt/tests/samples/commented_rsx_block_only.rsx @@ -0,0 +1,6 @@ +rsx! { + div { + // p { "A" } + // p { "B" } + } +}