Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve html! error messages. #1192

Merged
merged 13 commits into from
May 10, 2020
8 changes: 4 additions & 4 deletions yew-macro/src/html_tree/html_component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ impl Parse for HtmlComponent {
return match input.parse::<HtmlComponentClose>() {
Ok(close) => Err(syn::Error::new_spanned(
close,
"this close tag has no corresponding open tag",
"this closing tag has no corresponding opening tag",
)),
Err(err) => Err(err),
};
Expand All @@ -57,7 +57,7 @@ impl Parse for HtmlComponent {
if input.is_empty() {
return Err(syn::Error::new_spanned(
open,
"this open tag has no corresponding close tag",
"this opening tag has no corresponding closing tag",
));
}
if let Some(ty) = HtmlComponentClose::peek(input.cursor()) {
Expand Down Expand Up @@ -376,7 +376,7 @@ impl Props {
}

fn collision_message() -> &'static str {
"Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop"
"Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop)."
}
}

Expand Down Expand Up @@ -467,7 +467,7 @@ impl Parse for Props {
p.node_ref = node_ref;
p.key = key;

// alphabetize
// sort alphabetically
p.props.sort_by(|a, b| {
if a.label == b.label {
Ordering::Equal
Expand Down
2 changes: 1 addition & 1 deletion yew-macro/src/html_tree/html_iterable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ impl Parse for HtmlIterable {
if err.to_string().starts_with("unexpected end of input") {
Err(syn::Error::new_spanned(
for_token,
"expected expression after `for`",
"expected an expression after the keyword `for`",
))
} else {
Err(err)
Expand Down
4 changes: 2 additions & 2 deletions yew-macro/src/html_tree/html_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ impl Parse for HtmlList {
return match input.parse::<HtmlListClose>() {
Ok(close) => Err(syn::Error::new_spanned(
close,
"this close tag has no corresponding open tag",
"this closing tag has no corresponding opening tag",
)),
Err(err) => Err(err),
};
Expand All @@ -38,7 +38,7 @@ impl Parse for HtmlList {
if !HtmlList::verify_end(input.cursor()) {
return Err(syn::Error::new_spanned(
open,
"this open tag has no corresponding close tag",
"this opening tag has no corresponding closing tag",
));
}

Expand Down
4 changes: 2 additions & 2 deletions yew-macro/src/html_tree/html_tag/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ impl Parse for HtmlTag {
return match input.parse::<HtmlTagClose>() {
Ok(close) => Err(syn::Error::new_spanned(
close,
"this close tag has no corresponding open tag",
"this closing tag has no corresponding opening tag",
)),
Err(err) => Err(err),
};
Expand All @@ -56,7 +56,7 @@ impl Parse for HtmlTag {
if input.is_empty() {
return Err(syn::Error::new_spanned(
open,
"this open tag has no corresponding close tag",
"this opening tag has no corresponding closing tag",
));
}
if let Some(next_close_tag_name) = HtmlTagClose::peek(input.cursor()) {
Expand Down
2 changes: 1 addition & 1 deletion yew-macro/src/html_tree/html_tag/tag_attributes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ impl Parse for TagAttributes {
let label = &attributes[i + 1].label;
return Err(syn::Error::new_spanned(
label,
format!("only one `{}` attribute allowed", label),
format!("the attribute `{}` can only be specified once", label),
));
}
i += 1;
Expand Down
4 changes: 2 additions & 2 deletions yew-macro/src/html_tree/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ impl Parse for HtmlRoot {
let stream: TokenStream = input.parse()?;
Err(syn::Error::new_spanned(
stream,
"only one root html element allowed",
"only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)",
))
} else {
Ok(html_root)
Expand All @@ -73,7 +73,7 @@ impl ToTokens for HtmlRoot {
impl Parse for HtmlTree {
fn parse(input: ParseStream) -> Result<Self> {
let html_type = HtmlTree::peek(input.cursor())
.ok_or_else(|| input.error("expected valid html element"))?;
.ok_or_else(|| input.error("expected a valid html element"))?;
let html_tree = match html_type {
HtmlType::Empty => HtmlTree::Empty,
HtmlType::Component => HtmlTree::Component(Box::new(input.parse()?)),
Expand Down
26 changes: 13 additions & 13 deletions yew-macro/tests/macro/html-component-fail.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-component-fail.rs:79:13
|
79 | html! { <Child> };
Expand Down Expand Up @@ -30,7 +30,7 @@ error: unexpected token
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-component-fail.rs:83:13
|
83 | html! { <Child with props > };
Expand All @@ -54,31 +54,31 @@ error: too many refs set
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:86:38
|
86 | html! { <Child with props ref=() value=1 ref=() /> };
| ^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:87:31
|
87 | html! { <Child with props value=1 ref=() ref=() /> };
| ^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:88:28
|
88 | html! { <Child value=1 with props ref=() ref=() /> };
| ^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:89:35
|
89 | html! { <Child value=1 ref=() with props ref=() /> };
Expand All @@ -102,15 +102,15 @@ error: unexpected token
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:93:28
|
93 | html! { <Child value=1 with props /> };
| ^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: Using special syntax `with props` along with named prop is not allowed. This rule does not apply to special `ref` prop
error: Using the `with props` syntax in combination with named props is not allowed (note: this does not apply to the `ref` prop).
--> $DIR/html-component-fail.rs:94:31
|
94 | html! { <Child with props value=1 /> };
Expand Down Expand Up @@ -150,39 +150,39 @@ error: too many refs set
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this close tag has no corresponding open tag
error: this closing tag has no corresponding opening tag
--> $DIR/html-component-fail.rs:106:13
|
106 | html! { </Child> };
| ^^^^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-component-fail.rs:107:13
|
107 | html! { <Child><Child></Child> };
| ^^^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: only one root html element allowed
error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)
--> $DIR/html-component-fail.rs:108:28
|
108 | html! { <Child></Child><Child></Child> };
| ^^^^^^^^^^^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this close tag has no corresponding open tag
error: this closing tag has no corresponding opening tag
--> $DIR/html-component-fail.rs:117:30
|
117 | html! { <Generic<String>></Generic> };
| ^^^^^^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this close tag has no corresponding open tag
error: this closing tag has no corresponding opening tag
--> $DIR/html-component-fail.rs:118:30
|
118 | html! { <Generic<String>></Generic<Vec<String>>> };
Expand Down
2 changes: 1 addition & 1 deletion yew-macro/tests/macro/html-iterable-fail.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: expected expression after `for`
error: expected an expression after the keyword `for`
--> $DIR/html-iterable-fail.rs:4:13
|
4 | html! { for };
Expand Down
16 changes: 8 additions & 8 deletions yew-macro/tests/macro/html-list-fail.stderr
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-list-fail.rs:4:13
|
4 | html! { <> };
| ^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this close tag has no corresponding open tag
error: this closing tag has no corresponding opening tag
--> $DIR/html-list-fail.rs:5:13
|
5 | html! { </> };
| ^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-list-fail.rs:6:13
|
6 | html! { <><> };
| ^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this close tag has no corresponding open tag
error: this closing tag has no corresponding opening tag
--> $DIR/html-list-fail.rs:7:13
|
7 | html! { </></> };
| ^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-list-fail.rs:8:13
|
8 | html! { <><></> };
| ^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: only one root html element allowed
error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)
--> $DIR/html-list-fail.rs:9:18
|
9 | html! { <></><></> };
| ^^^^^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: expected valid html element
error: expected a valid html element
--> $DIR/html-list-fail.rs:10:15
|
10 | html! { <>invalid</> };
Expand All @@ -62,7 +62,7 @@ error: unexpected end of input, expected expression
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: this open tag has no corresponding close tag
error: this opening tag has no corresponding closing tag
--> $DIR/html-list-fail.rs:12:13
|
12 | html! { <key="key".to_string()>invalid</key>}
Expand Down
2 changes: 1 addition & 1 deletion yew-macro/tests/macro/html-node-fail.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: only one root html element allowed
error: only one root html element is allowed (hint: you can wrap multiple html elements in a fragment `<></>`)
--> $DIR/html-node-fail.rs:4:21
|
4 | html! { "valid" "invalid" };
Expand Down
Loading