mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2025-12-06 11:46:42 +01:00
proc: view: list available on error
This commit is contained in:
parent
60c0771024
commit
3bb38f2d27
1 changed files with 11 additions and 5 deletions
|
|
@ -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<RenderBox<'state, #output>>
|
||||
{
|
||||
match value {
|
||||
#(#exposed)*
|
||||
_ => panic!("expected Sym(content), got: {value:?}")
|
||||
}
|
||||
match value { #(#exposed)* _ => panic!(#error_msg) }
|
||||
}
|
||||
}
|
||||
} {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue