proc: view: list available on error

This commit is contained in:
🪞👃🪞 2025-05-09 20:21:31 +03:00
parent 60c0771024
commit 3bb38f2d27

View file

@ -45,7 +45,16 @@ impl ToTokens for ViewDef {
fn to_tokens (&self, out: &mut TokenStream2) { fn to_tokens (&self, out: &mut TokenStream2) {
let Self(ViewMeta { output }, ViewImpl { block, exposed }) = self; let Self(ViewMeta { output }, ViewImpl { block, exposed }) = self;
let ident = &block.self_ty; 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! { for token in quote! {
#block #block
/// Generated by [tengri_proc]. /// Generated by [tengri_proc].
@ -59,10 +68,7 @@ impl ToTokens for ViewDef {
fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>) fn get_content_sym <'source: 'state> (&'state self, value: &Value<'source>)
-> Option<RenderBox<'state, #output>> -> Option<RenderBox<'state, #output>>
{ {
match value { match value { #(#exposed)* _ => panic!(#error_msg) }
#(#exposed)*
_ => panic!("expected Sym(content), got: {value:?}")
}
} }
} }
} { } {