From c614506734a85da938999b6bb18ce85eaf9a21f5 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Mon, 13 Jun 2022 16:48:15 -0500 Subject: [PATCH] report error on unknown attribute --- packages/rsx_interpreter/src/interperter.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/rsx_interpreter/src/interperter.rs b/packages/rsx_interpreter/src/interperter.rs index b3439b3e9..b6dff2ffb 100644 --- a/packages/rsx_interpreter/src/interperter.rs +++ b/packages/rsx_interpreter/src/interperter.rs @@ -1,6 +1,7 @@ use dioxus_core::{Attribute, AttributeValue, NodeFactory, VNode}; use dioxus_rsx::{BodyNode, CallBody, ElementAttr, IfmtInput, Segment}; use quote::ToTokens; +use quote::__private::Span; use syn::{parse2, parse_str, Expr}; use crate::attributes::attrbute_to_static_str; @@ -78,13 +79,15 @@ fn build_node<'a>( for attr in &el.attributes { match &attr.attr { ElementAttr::AttrText { .. } | ElementAttr::CustomAttrText { .. } => { - let (name, value): (String, InterpertedIfmt) = match &attr.attr { + let (name, value, span): (String, InterpertedIfmt, Span) = match &attr.attr + { ElementAttr::AttrText { name, value } => ( name.to_string(), InterpertedIfmt( IfmtInput::from_str(&value.value()) .map_err(|err| Error::ParseError(err))?, ), + name.span(), ), ElementAttr::CustomAttrText { name, value } => ( name.value(), @@ -92,6 +95,7 @@ fn build_node<'a>( IfmtInput::from_str(&value.value()) .map_err(|err| Error::ParseError(err))?, ), + name.span(), ), _ => unreachable!(), }; @@ -105,6 +109,11 @@ fn build_node<'a>( is_volatile: false, namespace, }); + } else { + return Err(Error::ParseError(syn::Error::new( + span, + "unknown attribute", + ))); } }