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) {
|
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:?}")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} {
|
} {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue