fix: use prettier-please just in tests - no custom wrapper (#2767)
* fix: use prettier-please just in tests - no custom wrapper
This commit is contained in:
1 parent
e5e578d27b
commit
ae4a2464b3
12 files changed
+377
-368
No files matched your search
@@ -21,7 +21,6 @@ serde = { workspace = true, features = ["derive"], optional = true }
|
||||
internment = { version = "0.7.0", optional = true }
|
||||
tracing = { workspace = true }
|
||||
proc-macro2-diagnostics = { version = "0.10", default-features = false }
|
||||
prettier-please = { version = "*" }
|
||||
|
||||
[features]
|
||||
default = ["hot_reload"]
|
||||
@@ -31,6 +30,7 @@ serde = ["dep:serde", "dioxus-core/serialize"]
|
||||
|
||||
[dev-dependencies]
|
||||
prettyplease = { workspace = true }
|
||||
prettier-please = { workspace = true }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
||||
+122
-116
@@ -341,139 +341,145 @@ fn normalize_path(name: &mut syn::Path) -> Option<AngleBracketedGenericArguments
|
||||
generics
|
||||
}
|
||||
|
||||
/// Ensure we can parse a component
|
||||
#[test]
|
||||
fn parses() {
|
||||
let input = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
..props,
|
||||
div {
|
||||
"Hello, world!"
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
/// Ensure we can parse a component
|
||||
#[test]
|
||||
fn parses() {
|
||||
let input = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
..props,
|
||||
div {
|
||||
"Hello, world!"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
|
||||
dbg!(component);
|
||||
dbg!(component);
|
||||
|
||||
let input_without_manual_props = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
};
|
||||
|
||||
let component: Component = syn::parse2(input_without_manual_props).unwrap();
|
||||
dbg!(component);
|
||||
}
|
||||
|
||||
/// Ensure we reject invalid forms
|
||||
///
|
||||
/// Maybe want to snapshot the errors?
|
||||
#[test]
|
||||
fn rejects() {
|
||||
let input = quote! {
|
||||
myComponent {
|
||||
key: "value",
|
||||
prop: "value",
|
||||
prop: "other",
|
||||
..props,
|
||||
..other_props,
|
||||
div {
|
||||
"Hello, world!"
|
||||
let input_without_manual_props = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
dbg!(component.diagnostics);
|
||||
}
|
||||
let component: Component = syn::parse2(input_without_manual_props).unwrap();
|
||||
dbg!(component);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_properly() {
|
||||
let input = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: 123,
|
||||
..props,
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
};
|
||||
/// Ensure we reject invalid forms
|
||||
///
|
||||
/// Maybe want to snapshot the errors?
|
||||
#[test]
|
||||
fn rejects() {
|
||||
let input = quote! {
|
||||
myComponent {
|
||||
key: "value",
|
||||
prop: "value",
|
||||
prop: "other",
|
||||
..props,
|
||||
..other_props,
|
||||
div {
|
||||
"Hello, world!"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
println!("{}", component.to_token_stream());
|
||||
}
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
dbg!(component.diagnostics);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_no_manual_props() {
|
||||
let input_without_manual_props = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
named: "value {something}",
|
||||
prop: "value",
|
||||
count: 1,
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
};
|
||||
let component: Component = syn::parse2(input_without_manual_props).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
#[test]
|
||||
fn to_tokens_properly() {
|
||||
let input = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: "value",
|
||||
prop: 123,
|
||||
..props,
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn generics_params() {
|
||||
let input_without_children = quote! {
|
||||
Outlet::<R> {}
|
||||
};
|
||||
let component: crate::CallBody = syn::parse2(input_without_children).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
println!("{}", component.to_token_stream());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generics_no_fish() {
|
||||
let name = quote! { Outlet<R> };
|
||||
let mut p = syn::parse2::<syn::Path>(name).unwrap();
|
||||
let generics = normalize_path(&mut p);
|
||||
assert!(generics.is_some());
|
||||
#[test]
|
||||
fn to_tokens_no_manual_props() {
|
||||
let input_without_manual_props = quote! {
|
||||
MyComponent {
|
||||
key: "value {something}",
|
||||
named: "value {something}",
|
||||
prop: "value",
|
||||
count: 1,
|
||||
div { "Hello, world!" }
|
||||
}
|
||||
};
|
||||
let component: Component = syn::parse2(input_without_manual_props).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
let input_without_children = quote! {
|
||||
div {
|
||||
Component<Generic> {}
|
||||
}
|
||||
};
|
||||
let component: BodyNode = syn::parse2(input_without_children).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
#[test]
|
||||
fn generics_params() {
|
||||
let input_without_children = quote! {
|
||||
Outlet::<R> {}
|
||||
};
|
||||
let component: crate::CallBody = syn::parse2(input_without_children).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fmt_passes_properly() {
|
||||
let input = quote! {
|
||||
Link { to: Route::List, class: "pure-button", "Go back" }
|
||||
};
|
||||
#[test]
|
||||
fn generics_no_fish() {
|
||||
let name = quote! { Outlet<R> };
|
||||
let mut p = syn::parse2::<syn::Path>(name).unwrap();
|
||||
let generics = normalize_path(&mut p);
|
||||
assert!(generics.is_some());
|
||||
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
let input_without_children = quote! {
|
||||
div {
|
||||
Component<Generic> {}
|
||||
}
|
||||
};
|
||||
let component: BodyNode = syn::parse2(input_without_children).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
#[test]
|
||||
fn fmt_passes_properly() {
|
||||
let input = quote! {
|
||||
Link { to: Route::List, class: "pure-button", "Go back" }
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn incomplete_components() {
|
||||
let input = quote::quote! {
|
||||
some::cool::Component
|
||||
};
|
||||
let component: Component = syn::parse2(input).unwrap();
|
||||
|
||||
let _parsed: Component = syn::parse2(input).unwrap();
|
||||
println!("{}", component.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
let input = quote::quote! {
|
||||
some::cool::C
|
||||
};
|
||||
#[test]
|
||||
fn incomplete_components() {
|
||||
let input = quote::quote! {
|
||||
some::cool::Component
|
||||
};
|
||||
|
||||
let _parsed: syn::Path = syn::parse2(input).unwrap();
|
||||
let _parsed: Component = syn::parse2(input).unwrap();
|
||||
|
||||
let input = quote::quote! {
|
||||
some::cool::C
|
||||
};
|
||||
|
||||
let _parsed: syn::Path = syn::parse2(input).unwrap();
|
||||
}
|
||||
}
|
||||
+211
-205
@@ -404,216 +404,222 @@ impl Display for ElementName {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_name() {
|
||||
let _parsed: ElementName = syn::parse2(quote::quote! { div }).unwrap();
|
||||
let _parsed: ElementName = syn::parse2(quote::quote! { some-cool-element }).unwrap();
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
let _parsed: Element = syn::parse2(quote::quote! { div {} }).unwrap();
|
||||
let _parsed: Element = syn::parse2(quote::quote! { some-cool-element {} }).unwrap();
|
||||
#[test]
|
||||
fn parses_name() {
|
||||
let _parsed: ElementName = syn::parse2(quote::quote! { div }).unwrap();
|
||||
let _parsed: ElementName = syn::parse2(quote::quote! { some-cool-element }).unwrap();
|
||||
|
||||
let parsed: Element = syn::parse2(quote::quote! {
|
||||
some-cool-div {
|
||||
id: "hi",
|
||||
id: "hi {abc}",
|
||||
id: "hi {def}",
|
||||
class: 123,
|
||||
something: bool,
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
exp: { some_expr },
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
"some-attr": "hello world",
|
||||
onclick: move |_| {},
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
"somte_attr3": "hello world",
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
..attrs1,
|
||||
..attrs2,
|
||||
..attrs3
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
let _parsed: Element = syn::parse2(quote::quote! { div {} }).unwrap();
|
||||
let _parsed: Element = syn::parse2(quote::quote! { some-cool-element {} }).unwrap();
|
||||
|
||||
dbg!(parsed);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_variety() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
"somte_attr3": "hello world",
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
..attrs,
|
||||
..attrs2,
|
||||
..attrs3
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
dbg!(parsed);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_properly() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class2: "hello {world}",
|
||||
class3: "goodbye {world}",
|
||||
class4: "goodbye world",
|
||||
"something": "cool {blah}",
|
||||
"something2": "cooler",
|
||||
div {
|
||||
div {
|
||||
h1 { class: "h1 col" }
|
||||
h2 { class: "h2 col" }
|
||||
h3 { class: "h3 col" }
|
||||
div {}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
println!("{}", parsed.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_with_diagnostic() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
..attrs,
|
||||
div {
|
||||
..attrs,
|
||||
let parsed: Element = syn::parse2(quote::quote! {
|
||||
some-cool-div {
|
||||
id: "hi",
|
||||
id: "hi {abc}",
|
||||
id: "hi {def}",
|
||||
class: 123,
|
||||
something: bool,
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
exp: { some_expr },
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
"some-attr": "hello world",
|
||||
onclick: move |_| {},
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
"somte_attr3": "hello world",
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
..attrs1,
|
||||
..attrs2,
|
||||
..attrs3
|
||||
}
|
||||
}
|
||||
};
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
println!("{}", parsed.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merges_attributes() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class: if count > 3 { "abc {def}" },
|
||||
class: if count < 50 { "small" } else { "big" }
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
assert_eq!(parsed.diagnostics.len(), 0);
|
||||
assert_eq!(parsed.merged_attributes.len(), 1);
|
||||
assert_eq!(
|
||||
parsed.merged_attributes[0].name.to_string(),
|
||||
"class".to_string()
|
||||
);
|
||||
|
||||
let attr = &parsed.merged_attributes[0].value;
|
||||
|
||||
println!("{}", attr.to_token_stream().pretty_unparse());
|
||||
|
||||
let _attr = match attr {
|
||||
AttributeValue::AttrLiteral(lit) => lit,
|
||||
_ => panic!("expected literal"),
|
||||
};
|
||||
}
|
||||
|
||||
/// There are a number of cases where merging attributes doesn't make sense
|
||||
/// - merging two expressions together
|
||||
/// - merging two literals together
|
||||
/// - merging a literal and an expression together
|
||||
///
|
||||
/// etc
|
||||
///
|
||||
/// We really only want to merge formatted things together
|
||||
///
|
||||
/// IE
|
||||
/// class: "hello world ",
|
||||
/// class: if some_expr { "abc" }
|
||||
///
|
||||
/// Some open questions - should the delimiter be explicit?
|
||||
#[test]
|
||||
fn merging_weird_fails() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class: if some_expr { 123 },
|
||||
|
||||
style: "color: red;",
|
||||
style: "color: blue;",
|
||||
|
||||
width: "1px",
|
||||
width: 1,
|
||||
width: false,
|
||||
contenteditable: true,
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
|
||||
assert_eq!(parsed.merged_attributes.len(), 4);
|
||||
assert_eq!(parsed.diagnostics.len(), 3);
|
||||
|
||||
// style should not generate a diagnostic
|
||||
assert!(!parsed
|
||||
.diagnostics
|
||||
.diagnostics
|
||||
.into_iter()
|
||||
.any(|f| f.emit_as_item_tokens().to_string().contains("style")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn diagnostics() {
|
||||
let input = quote::quote! {
|
||||
p {
|
||||
class: "foo bar"
|
||||
"Hello world"
|
||||
}
|
||||
};
|
||||
|
||||
let _parsed: Element = syn::parse2(input).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_raw_elements() {
|
||||
let input = quote::quote! {
|
||||
use {
|
||||
"hello"
|
||||
}
|
||||
};
|
||||
|
||||
let _parsed: Element = syn::parse2(input).unwrap();
|
||||
dbg!(parsed);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_variety() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
data_attr: "data",
|
||||
data_attr: "data2",
|
||||
data_attr: "data3",
|
||||
"somte_attr3": "hello world",
|
||||
something: {cool},
|
||||
something: bool,
|
||||
something: 123,
|
||||
onclick: move |_| {
|
||||
println!("hello world");
|
||||
},
|
||||
..attrs,
|
||||
..attrs2,
|
||||
..attrs3
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
dbg!(parsed);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_properly() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class2: "hello {world}",
|
||||
class3: "goodbye {world}",
|
||||
class4: "goodbye world",
|
||||
"something": "cool {blah}",
|
||||
"something2": "cooler",
|
||||
div {
|
||||
div {
|
||||
h1 { class: "h1 col" }
|
||||
h2 { class: "h2 col" }
|
||||
h3 { class: "h3 col" }
|
||||
div {}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
println!("{}", parsed.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn to_tokens_with_diagnostic() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
..attrs,
|
||||
div {
|
||||
..attrs,
|
||||
class: "hello world",
|
||||
id: "my-id",
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
println!("{}", parsed.to_token_stream().pretty_unparse());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn merges_attributes() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class: if count > 3 { "abc {def}" },
|
||||
class: if count < 50 { "small" } else { "big" }
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
assert_eq!(parsed.diagnostics.len(), 0);
|
||||
assert_eq!(parsed.merged_attributes.len(), 1);
|
||||
assert_eq!(
|
||||
parsed.merged_attributes[0].name.to_string(),
|
||||
"class".to_string()
|
||||
);
|
||||
|
||||
let attr = &parsed.merged_attributes[0].value;
|
||||
|
||||
println!("{}", attr.to_token_stream().pretty_unparse());
|
||||
|
||||
let _attr = match attr {
|
||||
AttributeValue::AttrLiteral(lit) => lit,
|
||||
_ => panic!("expected literal"),
|
||||
};
|
||||
}
|
||||
|
||||
/// There are a number of cases where merging attributes doesn't make sense
|
||||
/// - merging two expressions together
|
||||
/// - merging two literals together
|
||||
/// - merging a literal and an expression together
|
||||
///
|
||||
/// etc
|
||||
///
|
||||
/// We really only want to merge formatted things together
|
||||
///
|
||||
/// IE
|
||||
/// class: "hello world ",
|
||||
/// class: if some_expr { "abc" }
|
||||
///
|
||||
/// Some open questions - should the delimiter be explicit?
|
||||
#[test]
|
||||
fn merging_weird_fails() {
|
||||
let input = quote::quote! {
|
||||
div {
|
||||
class: "hello world",
|
||||
class: if some_expr { 123 },
|
||||
|
||||
style: "color: red;",
|
||||
style: "color: blue;",
|
||||
|
||||
width: "1px",
|
||||
width: 1,
|
||||
width: false,
|
||||
contenteditable: true,
|
||||
}
|
||||
};
|
||||
|
||||
let parsed: Element = syn::parse2(input).unwrap();
|
||||
|
||||
assert_eq!(parsed.merged_attributes.len(), 4);
|
||||
assert_eq!(parsed.diagnostics.len(), 3);
|
||||
|
||||
// style should not generate a diagnostic
|
||||
assert!(!parsed
|
||||
.diagnostics
|
||||
.diagnostics
|
||||
.into_iter()
|
||||
.any(|f| f.emit_as_item_tokens().to_string().contains("style")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn diagnostics() {
|
||||
let input = quote::quote! {
|
||||
p {
|
||||
class: "foo bar"
|
||||
"Hello world"
|
||||
}
|
||||
};
|
||||
|
||||
let _parsed: Element = syn::parse2(input).unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parses_raw_elements() {
|
||||
let input = quote::quote! {
|
||||
use {
|
||||
"hello"
|
||||
}
|
||||
};
|
||||
|
||||
let _parsed: Element = syn::parse2(input).unwrap();
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ impl ToTokens for ExprNode {
|
||||
|
||||
#[test]
|
||||
fn no_commas() {
|
||||
use crate::PrettyUnparse;
|
||||
use prettier_please::PrettyUnparse;
|
||||
let input = quote! {
|
||||
div {
|
||||
{label("Hello, world!")},
|
||||
|
||||
@@ -358,7 +358,7 @@ impl Parse for IfmtInput {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::PrettyUnparse;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
#[test]
|
||||
fn raw_tokens() {
|
||||
|
||||
@@ -78,8 +78,6 @@ pub use partial_closure::PartialClosure;
|
||||
pub use rsx_call::*;
|
||||
pub use template_body::TemplateBody;
|
||||
|
||||
pub use util::PrettyUnparse;
|
||||
|
||||
pub mod hot_reload;
|
||||
|
||||
#[cfg(feature = "hot_reload_traits")]
|
||||
|
||||
@@ -216,7 +216,7 @@ impl ToTokens for HotReloadFormattedSegment {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::PrettyUnparse;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
#[test]
|
||||
fn parses_lits() {
|
||||
|
||||
@@ -80,7 +80,7 @@ impl TextNode {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::PrettyUnparse;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
#[test]
|
||||
fn parses() {
|
||||
|
||||
@@ -19,20 +19,6 @@ pub(crate) fn intern<T: Eq + Hash + Send + Sync + ?Sized + 'static>(
|
||||
s.into().as_ref()
|
||||
}
|
||||
|
||||
/// These are just helpful methods for tests to pretty print the token stream - they are not used in the actual code
|
||||
// #[cfg(test)]
|
||||
pub trait PrettyUnparse {
|
||||
fn pretty_unparse(&self) -> String;
|
||||
}
|
||||
|
||||
// #[cfg(test)]
|
||||
impl PrettyUnparse for TokenStream2 {
|
||||
fn pretty_unparse(&self) -> String {
|
||||
let parsed = syn::parse2::<syn::Expr>(self.clone()).unwrap();
|
||||
prettier_please::unparse_expr(&parsed)
|
||||
}
|
||||
}
|
||||
|
||||
/// Parse a raw ident and return a new ident with the r# prefix added
|
||||
pub fn parse_raw_ident(parse_buffer: &ParseBuffer) -> syn::Result<Ident> {
|
||||
// First try to parse as a normal ident
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use dioxus_rsx::CallBody;
|
||||
use quote::ToTokens;
|
||||
|
||||
use dioxus_rsx::PrettyUnparse;
|
||||
use prettier_please::PrettyUnparse;
|
||||
|
||||
#[test]
|
||||
fn callbody_ctx() {
|
||||
|
||||
Reference in new issue
Block a user