From be4b0c801a9df54abc32d34dafdf3f9f51560338 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 14 Sep 2023 16:10:48 -0500 Subject: [PATCH] fix raw attributes with dynamic values --- packages/rsx/src/attribute.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/rsx/src/attribute.rs b/packages/rsx/src/attribute.rs index 76cf55a01..ea9d79263 100644 --- a/packages/rsx/src/attribute.rs +++ b/packages/rsx/src/attribute.rs @@ -4,12 +4,7 @@ use super::*; use proc_macro2::{Span, TokenStream as TokenStream2}; use quote::{quote, ToTokens, TokenStreamExt}; -use syn::{ - parse::{Parse, ParseStream}, - punctuated::Punctuated, - spanned::Spanned, - Expr, Ident, LitStr, Result, Token, -}; +use syn::{Expr, Ident, LitStr}; #[derive(PartialEq, Eq, Clone, Debug, Hash)] pub struct ElementAttrNamed { @@ -38,13 +33,17 @@ impl ToTokens for ElementAttrNamed { fn to_tokens(&self, tokens: &mut TokenStream2) { let ElementAttrNamed { el_name, attr } = self; - let ns = |name| match el_name { - ElementName::Ident(i) => quote! { dioxus_elements::#i::#name.1 }, - ElementName::Custom(_) => quote! { None }, + let ns = |name: &ElementAttrName| match (el_name, name) { + (ElementName::Ident(i), ElementAttrName::BuiltIn(_)) => { + quote! { dioxus_elements::#i::#name.1 } + } + _ => quote! { None }, }; - let volitile = |name| match el_name { - ElementName::Ident(_) => quote! { #el_name::#name.2 }, - ElementName::Custom(_) => quote! { false }, + let volitile = |name: &ElementAttrName| match (el_name, name) { + (ElementName::Ident(i), ElementAttrName::BuiltIn(_)) => { + quote! { dioxus_elements::#i::#name.2 } + } + _ => quote! { false }, }; let attribute = |name: &ElementAttrName| match name { ElementAttrName::BuiltIn(name) => match el_name {