Mercurial > touhou
changeset 776:94033091458b
formats: Update to ${concat(…)} to build on current nightly
${concat(…)} replaces the removed concat_idents!() macro, but doesn’t support
being used in nested repetitions for now. We can remove the gen_match!() macro
once this is supported again.
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Tue, 14 Oct 2025 12:41:29 +0000 |
| parents | 28d8b892fd06 |
| children | 11249e4b4e03 |
| files | formats/src/lib.rs formats/src/th06/anm0.rs formats/src/th06/ecl.rs formats/src/th06/std.rs |
| diffstat | 4 files changed, 23 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/formats/src/lib.rs +++ b/formats/src/lib.rs @@ -1,4 +1,4 @@ -#![feature(concat_idents)] +#![feature(macro_metavar_expr_concat)] #![deny(missing_docs)] //! Touhou formats.
--- a/formats/src/th06/anm0.rs +++ b/formats/src/th06/anm0.rs @@ -108,6 +108,12 @@ })) } +macro_rules! gen_match { + ($arg_type:ident) => { + ${concat(le_, $arg_type)} + }; +} + macro_rules! declare_anm_instructions { ($($opcode:tt => fn $name:ident($($arg:ident: $arg_type:ident),*)),*,) => { /// Available instructions in an `Anm0`. @@ -124,7 +130,7 @@ $( $opcode => { $( - let (i2, $arg) = concat_idents!(le_, $arg_type)(i)?; + let (i2, $arg) = gen_match!($arg_type)(i)?; i = i2; )* Instruction::$name($($arg),*)
--- a/formats/src/th06/ecl.rs +++ b/formats/src/th06/ecl.rs @@ -117,6 +117,12 @@ } } +macro_rules! gen_match { + ($arg_type:ident) => { + ${concat(le_, $arg_type)} + }; +} + macro_rules! declare_main_instructions { ($($opcode:tt => fn $name:ident($($arg:ident: $arg_type:ident),*)),*,) => { /// Available instructions in an `Ecl`. @@ -134,7 +140,7 @@ $( $opcode => { $( - let (i2, $arg) = concat_idents!(le_, $arg_type)(i)?; + let (i2, $arg) = gen_match!($arg_type)(i)?; i = i2; )* MainInstruction::$name($($arg),*) @@ -172,7 +178,7 @@ $( $opcode => { $( - let (i2, $arg) = concat_idents!(le_, $arg_type)(i)?; + let (i2, $arg) = gen_match!($arg_type)(i)?; i = i2; )* SubInstruction::$name($($arg),*)
--- a/formats/src/th06/std.rs +++ b/formats/src/th06/std.rs @@ -124,6 +124,12 @@ } } +macro_rules! gen_match { + ($arg_type:ident) => { + ${concat(le_, $arg_type)} + }; +} + macro_rules! declare_stage_instructions { ($($opcode:tt => fn $name:ident($($arg:ident: $arg_type:ident),*)),*,) => { /// Available instructions in an `Stage`. @@ -141,7 +147,7 @@ $( $opcode => { $( - let (i2, $arg) = concat_idents!(le_, $arg_type)(i)?; + let (i2, $arg) = gen_match!($arg_type)(i)?; i = i2; )* Instruction::$name($($arg),*)
