From 471959d1f545e95e34755f43ce192799336f4212 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 17 Apr 2025 02:21:00 +0300 Subject: [PATCH] 0.10.0: fixed expose! syntax --- Cargo.toml | 2 +- dsl/src/lib.rs | 18 +++++++++--------- output/src/ops/transform.rs | 6 ++++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 880a3e6..78f56fc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "0.9.1" +version = "0.10.0" [workspace] resolver = "2" diff --git a/dsl/src/lib.rs b/dsl/src/lib.rs index 0220108..b42f442 100644 --- a/dsl/src/lib.rs +++ b/dsl/src/lib.rs @@ -38,25 +38,25 @@ pub(crate) use std::fmt::Debug; } #[macro_export] macro_rules! expose { - ($([$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* })*) => { - $(expose!(@impl [$self: $State] { $($Type => { $($pat => $expr),* })* });)* + ($([$self:ident:$State:ty] { $([$($Type:tt)*] => { $($pat:pat => $expr:expr),* $(,)? })* })*) => { + $(expose!(@impl [$self: $State] { $([$($Type)*] => { $($pat => $expr),* })* });)* }; - (@impl [$self:ident:$State:ty] { $($Type:ty => { $($pat:pat => $expr:expr),* $(,)? })* }) => { - $(expose!(@type $Type [$self: $State] => { $($pat => $expr),* });)* + (@impl [$self:ident:$State:ty] { $([$($Type:tt)*] => { $($pat:pat => $expr:expr),* $(,)? })* }) => { + $(expose!(@type [$($Type)*] [$self: $State] => { $($pat => $expr),* });)* }; - (@type bool [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { + (@type [bool] [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { provide_bool!(bool: |$self: $State| { $($pat => $expr),* }); }; - (@type isize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { + (@type [u16] [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { provide_num!(u16: |$self: $State| { $($pat => $expr),* }); }; - (@type usize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { + (@type [usize] [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { provide_num!(usize: |$self: $State| { $($pat => $expr),* }); }; - (@type isize [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { + (@type [isize] [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { provide_num!(isize: |$self: $State| { $($pat => $expr),* }); }; - (@type $Type:ty [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { + (@type [$Type:ty] [$self:ident: $State:ty] => { $($pat:pat => $expr:expr),* $(,)? }) => { provide!($Type: |$self: $State| { $($pat => $expr),* }); }; } diff --git a/output/src/ops/transform.rs b/output/src/ops/transform.rs index 05906d8..15b7354 100644 --- a/output/src/ops/transform.rs +++ b/output/src/ops/transform.rs @@ -85,8 +85,10 @@ macro_rules! transform_xy_unit { if let Some(Token { value: Value::Key(k), .. }) = iter.peek() { if k == $x || k == $y { let _ = iter.next().unwrap(); - let u = get_value!(state => iter.next().expect("no unit specified")); - let c = get_content!(state => iter.next().expect("no content specified")); + let u = iter.next().expect("no unit specified"); + let u = get_value!(state => u); + let c = iter.next().expect("no content specified"); + let c = get_content!(state => c); return Some(match k { $x => Self::x(u, c), $y => Self::y(u, c),