Change missing trailing comma span to point to span where comma is missing from
Signed-off-by: Torstein Grindvik <torstein.grindvik@nordicsemi.no>
This commit is contained in:
1 parent
6512c153dd
commit
a3169ac17b
5 files changed
+29
-2
No files matched your search
@@ -22,6 +22,7 @@ dioxus-rsx = { workspace = true }
|
|||||||
|
|
||||||
# testing
|
# testing
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
dioxus = { workspace = true }
|
||||||
rustversion = "1.0"
|
rustversion = "1.0"
|
||||||
trybuild = "1.0"
|
trybuild = "1.0"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
#[test]
|
||||||
|
fn rsx() {
|
||||||
|
let t = trybuild::TestCases::new();
|
||||||
|
t.compile_fail("tests/rsx/trailing-comma-0.rs");
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
// Given an `rsx!` invocation with a missing trailing comma,
|
||||||
|
// ensure the stderr output has an informative span.
|
||||||
|
|
||||||
|
use dioxus::prelude::*;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
rsx! {
|
||||||
|
p {
|
||||||
|
class: "foo bar"
|
||||||
|
"Hello world"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
error: missing trailing comma
|
||||||
|
--> tests/rsx/trailing-comma-0.rs:9:20
|
||||||
|
|
|
||||||
|
9 | class: "foo bar"
|
||||||
|
| ^^^^^^^^^
|
||||||
@@ -76,11 +76,14 @@ impl Parse for Element {
|
|||||||
|
|
||||||
if content.peek(Ident) && content.peek2(Token![:]) && !content.peek3(Token![:]) {
|
if content.peek(Ident) && content.peek2(Token![:]) && !content.peek3(Token![:]) {
|
||||||
let name = content.parse::<Ident>()?;
|
let name = content.parse::<Ident>()?;
|
||||||
let ident = name.clone();
|
|
||||||
|
|
||||||
let name_str = name.to_string();
|
let name_str = name.to_string();
|
||||||
content.parse::<Token![:]>()?;
|
content.parse::<Token![:]>()?;
|
||||||
|
|
||||||
|
// The span of the content to be parsed,
|
||||||
|
// for example the `hi` part of `class: "hi"`.
|
||||||
|
let span = content.span();
|
||||||
|
|
||||||
if name_str.starts_with("on") {
|
if name_str.starts_with("on") {
|
||||||
attributes.push(ElementAttrNamed {
|
attributes.push(ElementAttrNamed {
|
||||||
el_name: el_name.clone(),
|
el_name: el_name.clone(),
|
||||||
@@ -127,7 +130,7 @@ impl Parse for Element {
|
|||||||
|
|
||||||
// todo: add a message saying you need to include commas between fields
|
// todo: add a message saying you need to include commas between fields
|
||||||
if content.parse::<Token![,]>().is_err() {
|
if content.parse::<Token![,]>().is_err() {
|
||||||
missing_trailing_comma!(ident.span());
|
missing_trailing_comma!(span);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user