Open deathaxe opened 1 month ago
https://github.com/WebAssembly/WASI/blob/01bb90d8b66cbc1d50349aaaab9ac5b143c9c98c/legacy/tools/witx/src/abi.rs#L64-L120
// Helper macro for defining instructions without having to have tons of // exhaustive `match` statements to update macro_rules! def_instruction { ( $( #[$enum_attr:meta] )* pub enum Instruction<'a> { $( $( #[$attr:meta] )* $variant:ident $( { $($field:ident : $field_ty:ty $(,)* )* } )? : [$num_popped:expr] => [$num_pushed:expr], )* } ) => { $( #[$enum_attr] )* pub enum Instruction<'a> { $( $( #[$attr] )* $variant $( { $( $field : $field_ty, )* } )? , )* } impl Instruction<'_> { /// How many operands does this instruction pop from the stack? #[allow(unused_variables)] pub fn operands_len(&self) -> usize { match self { $( Self::$variant $( { $( $field, )* } )? => $num_popped, )* } } /// How many results does this instruction push onto the stack? #[allow(unused_variables)] pub fn results_len(&self) -> usize { match self { $( Self::$variant $( { $( $field, )* } )? => $num_pushed, )* } } } }; }
Probably the same issue as #3904 but with a different construct. #3912 might be able to help (haven't checked) but introduces a different issue.
What happened?
Source
https://github.com/WebAssembly/WASI/blob/01bb90d8b66cbc1d50349aaaab9ac5b143c9c98c/legacy/tools/witx/src/abi.rs#L64-L120
Screenshot
Code Snippet