diff --git a/proc/src/proc_view.rs b/proc/src/proc_view.rs index a1166ae..25ec680 100644 --- a/proc/src/proc_view.rs +++ b/proc/src/proc_view.rs @@ -45,7 +45,16 @@ impl ToTokens for ViewDef { fn to_tokens (&self, out: &mut TokenStream2) { let Self(ViewMeta { output }, ViewImpl { block, exposed }) = self; let ident = &block.self_ty; - let exposed: Vec<_> = exposed.iter().map(|(k,v)|ViewArm(k.clone(), v.clone())).collect(); + let mut available = vec![]; + let exposed: Vec<_> = exposed.iter().map(|(k,v)|{ + available.push(k.clone()); + ViewArm(k.clone(), v.clone()) + }).collect(); + let available: String = available.join(", "); + let error_msg = LitStr::new( + &format!("expected Sym(content), got: {{value:?}}, available: {available}"), + Span::call_site() + ); for token in quote! { #block /// Generated by [tengri_proc]. @@ -59,10 +68,7 @@ impl ToTokens for ViewDef { fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>) -> Option> { - match value { - #(#exposed)* - _ => panic!("expected Sym(content), got: {value:?}") - } + match value { #(#exposed)* _ => panic!(#error_msg) } } } } {