fix(autofmt): add support for handling comments in various expression types (#5461)
* fix(autofmt): add support for handling comments in various expression types * fmt
This commit is contained in:
1 parent
689e39b3f6
commit
c73dc43233
6 files changed
+164
-4
No files matched your search
@@ -28,7 +28,11 @@ twoway![
|
||||
attributes,
|
||||
basic_expr,
|
||||
collapse_expr,
|
||||
comments_attr_expr_blocks,
|
||||
comments,
|
||||
comments_async_closure,
|
||||
comments_expr_with_strings,
|
||||
comments_nested_closures,
|
||||
commentshard,
|
||||
complex,
|
||||
docsite,
|
||||
@@ -66,3 +70,37 @@ twoway![
|
||||
blank_lines_preserved,
|
||||
forloop_tuple,
|
||||
];
|
||||
|
||||
fn assert_idempotent(src: &str) {
|
||||
let src = src.replace("\r", "");
|
||||
|
||||
let once =
|
||||
dioxus_autofmt::apply_formats(&src, dioxus_autofmt::fmt_file(&src, Default::default()))
|
||||
.replace("\r", "");
|
||||
let twice =
|
||||
dioxus_autofmt::apply_formats(&once, dioxus_autofmt::fmt_file(&once, Default::default()))
|
||||
.replace("\r", "");
|
||||
|
||||
pretty_assertions::assert_eq!(src, once);
|
||||
pretty_assertions::assert_eq!(once, twice);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn comments_async_closure_is_idempotent() {
|
||||
assert_idempotent(include_str!("./samples/comments_async_closure.rsx"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn comments_nested_closures_is_idempotent() {
|
||||
assert_idempotent(include_str!("./samples/comments_nested_closures.rsx"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn comments_attr_expr_blocks_is_idempotent() {
|
||||
assert_idempotent(include_str!("./samples/comments_attr_expr_blocks.rsx"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn comments_expr_with_strings_is_idempotent() {
|
||||
assert_idempotent(include_str!("./samples/comments_expr_with_strings.rsx"));
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
rsx! {
|
||||
button {
|
||||
class: "control-button",
|
||||
onclick: move |_| async move {
|
||||
// comment
|
||||
()
|
||||
},
|
||||
"print content"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
rsx! {
|
||||
Component {
|
||||
label: {
|
||||
let url = "https://example.com";
|
||||
|
||||
// comment before formatted tail expr
|
||||
format!("{url}/docs")
|
||||
},
|
||||
}
|
||||
|
||||
Component {
|
||||
status: {
|
||||
// comment before branch
|
||||
if is_ready() {
|
||||
"ready"
|
||||
} else {
|
||||
"waiting"
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
div {
|
||||
data_mode: {
|
||||
// comment before block expr
|
||||
if is_ready() {
|
||||
"ready"
|
||||
} else {
|
||||
"waiting"
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
rsx! {
|
||||
button {
|
||||
onclick: move |_| async move {
|
||||
let url = "https://example.com";
|
||||
|
||||
// keep this comment with the block, not the string literal
|
||||
println!("{url}");
|
||||
},
|
||||
"strings"
|
||||
}
|
||||
|
||||
Component {
|
||||
message: {
|
||||
let prefix = "value://";
|
||||
|
||||
// comment before final expression that contains //
|
||||
format!("{prefix}done")
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
rsx! {
|
||||
button {
|
||||
onclick: move |_| async move {
|
||||
let nested = move || {
|
||||
// nested closure comment
|
||||
()
|
||||
};
|
||||
|
||||
nested();
|
||||
},
|
||||
"nested closure"
|
||||
}
|
||||
|
||||
button {
|
||||
onclick: move |_| async move {
|
||||
let nested = move || async move {
|
||||
// nested async closure comment
|
||||
()
|
||||
};
|
||||
|
||||
nested().await;
|
||||
},
|
||||
"nested async closure"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user