diff --git a/README.md b/README.md index 425a7571ae8..d7cc42f29d2 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ impl Component for Model { } } - fn view(&self) -> Html { + fn view(&self) -> Html { let onclick = self.link.callback(|_| Msg::DoIt); html! { // Render your model here @@ -323,8 +323,8 @@ Use external crates and put values from them into the template: extern crate chrono; use chrono::prelude::*; -impl Renderable for Model { - fn render(&self) -> Html { +impl Renderable for Model { + fn render(&self) -> Html { html! {

{ Local::now() }

} diff --git a/crates/macro/src/html_tree/html_component.rs b/crates/macro/src/html_tree/html_component.rs index 723782400c4..bf09cc502f7 100644 --- a/crates/macro/src/html_tree/html_component.rs +++ b/crates/macro/src/html_tree/html_component.rs @@ -83,7 +83,6 @@ impl ToTokens for HtmlComponent { props, children, } = self; - let vcomp_scope = Ident::new("__yew_vcomp_scope", Span::call_site()); let validate_props = if let Props::List(ListProps { props, .. }) = props { let prop_ref = Ident::new("__yew_prop_ref", Span::call_site()); @@ -139,9 +138,11 @@ impl ToTokens for HtmlComponent { let init_props = match props { Props::List(ListProps { props, .. }) => { let set_props = props.iter().map(|HtmlProp { label, value }| { - quote_spanned! { value.span()=> - .#label(<::yew::virtual_dom::vcomp::VComp<_> as ::yew::virtual_dom::Transformer<_, _, _>>::transform(#vcomp_scope.clone(), #value)) - } + quote_spanned! { value.span()=> .#label( + <::yew::virtual_dom::vcomp::VComp as ::yew::virtual_dom::Transformer<_, _>>::transform( + #value + ) + )} }); quote! { @@ -181,9 +182,7 @@ impl ToTokens for HtmlComponent { #validate_props } - let #vcomp_scope: ::yew::html::ScopeHolder<_> = ::std::default::Default::default(); - let __yew_node_ref: ::yew::html::NodeRef = #node_ref; - ::yew::virtual_dom::VChild::<#ty, _>::new(#init_props, #vcomp_scope, __yew_node_ref) + ::yew::virtual_dom::VChild::<#ty>::new(#init_props, #node_ref) }}); } } diff --git a/crates/macro/src/html_tree/html_prop.rs b/crates/macro/src/html_tree/html_prop.rs index 07cb906678d..8a47abdd0f7 100644 --- a/crates/macro/src/html_tree/html_prop.rs +++ b/crates/macro/src/html_tree/html_prop.rs @@ -49,18 +49,12 @@ impl Parse for HtmlPropSuffix { if let TokenTree::Punct(punct) = &next { match punct.as_char() { '>' => { - let possible_tag_end = input.peek(Token![<]) - || input.peek(syn::token::Brace) - || input.is_empty(); - - if angle_count > 1 || possible_tag_end { - angle_count -= 1; - if angle_count == 0 { - gt = Some(syn::token::Gt { - spans: [punct.span()], - }); - break; - } + angle_count -= 1; + if angle_count == 0 { + gt = Some(syn::token::Gt { + spans: [punct.span()], + }); + break; } } '<' => angle_count += 1, @@ -73,14 +67,6 @@ impl Parse for HtmlPropSuffix { break; } } - '-' => { - if input.peek(Token![>]) { - // Handle explicit return types in callbacks (#560) - // We increase angle_count here in order to ignore - // the following >. - angle_count += 1; - } - } _ => {} }; } diff --git a/crates/macro/src/html_tree/html_tag/mod.rs b/crates/macro/src/html_tree/html_tag/mod.rs index 6db099320ac..b6ba8d1d2b1 100644 --- a/crates/macro/src/html_tree/html_tag/mod.rs +++ b/crates/macro/src/html_tree/html_tag/mod.rs @@ -102,7 +102,6 @@ impl ToTokens for HtmlTag { } = &attributes; let vtag = Ident::new("__yew_vtag", tag_name.span()); - let vtag_scope = Ident::new("__yew_vtag_scope", Span::call_site()); let attr_pairs = attributes.iter().map(|TagAttribute { label, value }| { let label_str = label.to_string(); quote_spanned! {value.span() => (#label_str.to_owned(), (#value).to_string()) } @@ -155,16 +154,15 @@ impl ToTokens for HtmlTag { quote_spanned! {name.span()=> { ::yew::html::#name::Wrapper::new( - <::yew::virtual_dom::vtag::VTag<_> as ::yew::virtual_dom::Transformer<_, _, _>>::transform( - #vtag_scope.clone(), #callback + <::yew::virtual_dom::vtag::VTag as ::yew::virtual_dom::Transformer<_, _>>::transform( + #callback ) ) }} }); tokens.extend(quote! {{ - let #vtag_scope: ::yew::html::ScopeHolder<_> = ::std::default::Default::default(); - let mut #vtag = ::yew::virtual_dom::vtag::VTag::new_with_scope(#name, #vtag_scope.clone()); + let mut #vtag = ::yew::virtual_dom::vtag::VTag::new(#name); #(#set_kind)* #(#set_value)* #(#add_href)* diff --git a/crates/macro/src/lib.rs b/crates/macro/src/lib.rs index 11eec5e251a..f6216c62f72 100644 --- a/crates/macro/src/lib.rs +++ b/crates/macro/src/lib.rs @@ -32,7 +32,7 @@ //! # unimplemented!() //! # } //! # -//! # fn view(&self) -> Html { +//! # fn view(&self) -> Html { //! # //! // ... //! diff --git a/examples/counter/src/lib.rs b/examples/counter/src/lib.rs index a3b0cdc3d1c..fa9d33de841 100644 --- a/examples/counter/src/lib.rs +++ b/examples/counter/src/lib.rs @@ -48,7 +48,7 @@ impl Component for Model { true } - fn view(&self) -> Html { + fn view(&self) -> Html { html! {