Packages
Packages copied to clipboard
[Rust] Syntax highlighting breaks in macros
What happened?
Source
https://github.com/WebAssembly/WASI/blob/01bb90d8b66cbc1d50349aaaab9ac5b143c9c98c/legacy/tools/witx/src/abi.rs#L64-L120
Screenshot
Code Snippet
// 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.