From 73108359f2ae2520572c8451709eafce378d8267 Mon Sep 17 00:00:00 2001 From: yvt Date: Wed, 10 Jun 2020 13:31:45 +0900 Subject: [PATCH 1/2] Use `local_inner_macros` to support Rust 2018 style macro imports --- parse-generics-shim/src/parse_constr.rs | 2 +- .../src/parse_generics_shim.rs | 4 +- parse-generics-shim/src/parse_where_shim.rs | 4 +- parse-generics-shim/tests/parse_constr.rs | 4 +- parse-generics-shim/tests/parse_generics.rs | 41 ++++++++++--------- parse-generics-shim/tests/parse_where.rs | 4 +- 6 files changed, 30 insertions(+), 29 deletions(-) diff --git a/parse-generics-shim/src/parse_constr.rs b/parse-generics-shim/src/parse_constr.rs index 81e975a..b089187 100644 --- a/parse-generics-shim/src/parse_constr.rs +++ b/parse-generics-shim/src/parse_constr.rs @@ -9,7 +9,7 @@ or distributed except according to those terms. */ #[cfg(not(feature="use-parse-generics-poc"))] #[doc(hidden)] -#[macro_export] +#[macro_export(local_inner_macros)] macro_rules! parse_constr { ( @parse diff --git a/parse-generics-shim/src/parse_generics_shim.rs b/parse-generics-shim/src/parse_generics_shim.rs index c8542fb..c56a6f8 100644 --- a/parse-generics-shim/src/parse_generics_shim.rs +++ b/parse-generics-shim/src/parse_generics_shim.rs @@ -9,7 +9,7 @@ or distributed except according to those terms. */ #[cfg(feature="use-parse-generics-poc")] #[doc(hidden)] -#[macro_export] +#[macro_export(local_inner_macros)] macro_rules! parse_generics_shim { ($($body:tt)*) => { parse_generics! { $($body)* } @@ -18,7 +18,7 @@ macro_rules! parse_generics_shim { #[cfg(not(feature="use-parse-generics-poc"))] #[doc(hidden)] -#[macro_export] +#[macro_export(local_inner_macros)] macro_rules! parse_generics_shim { ( @parse_start diff --git a/parse-generics-shim/src/parse_where_shim.rs b/parse-generics-shim/src/parse_where_shim.rs index c600957..e1edda3 100644 --- a/parse-generics-shim/src/parse_where_shim.rs +++ b/parse-generics-shim/src/parse_where_shim.rs @@ -9,7 +9,7 @@ or distributed except according to those terms. */ #[cfg(feature="use-parse-generics-poc")] #[doc(hidden)] -#[macro_export] +#[macro_export(local_inner_macros)] macro_rules! parse_where_shim { ($($body:tt)*) => { parse_where! { $($body)* } @@ -18,7 +18,7 @@ macro_rules! parse_where_shim { #[cfg(not(feature="use-parse-generics-poc"))] #[doc(hidden)] -#[macro_export] +#[macro_export(local_inner_macros)] macro_rules! parse_where_shim { ( @parse diff --git a/parse-generics-shim/tests/parse_constr.rs b/parse-generics-shim/tests/parse_constr.rs index 520fb13..f095c37 100644 --- a/parse-generics-shim/tests/parse_constr.rs +++ b/parse-generics-shim/tests/parse_constr.rs @@ -8,7 +8,7 @@ files in the project carrying such notice may not be copied, modified, or distributed except according to those terms. */ #![cfg(not(feature="use-parse-generics-poc"))] -#[macro_use] extern crate parse_generics_shim; +extern crate parse_generics_shim; extern crate rustc_version; macro_rules! aeqiws { @@ -29,7 +29,7 @@ macro_rules! aeqiws { macro_rules! pgts { ($($body:tt)*) => { - parse_constr! { + parse_generics_shim::parse_constr! { (true, true), then stringify!(), $($body)* diff --git a/parse-generics-shim/tests/parse_generics.rs b/parse-generics-shim/tests/parse_generics.rs index 9f495a9..270aa77 100644 --- a/parse-generics-shim/tests/parse_generics.rs +++ b/parse-generics-shim/tests/parse_generics.rs @@ -9,7 +9,8 @@ or distributed except according to those terms. */ #![cfg_attr(feature="use-parse-generics-poc", feature(plugin))] #![cfg_attr(feature="use-parse-generics-poc", plugin(parse_generics_poc))] -#[macro_use] extern crate parse_generics_shim; +extern crate parse_generics_shim; +extern crate rustc_version; macro_rules! as_item { ($i:item) => { $i } } @@ -31,7 +32,7 @@ macro_rules! aeqiws { macro_rules! pgts { ($fields:tt, $($body:tt)*) => { - parse_generics_shim! { + parse_generics_shim::parse_generics_shim! { $fields, then stringify!(), $($body)* @@ -435,24 +436,24 @@ fn test_passthru() { }; } - parse_generics_shim! { { .. }, then emit!{a}, X } - parse_generics_shim! { { .. }, then emit!{b}, <> X } - parse_generics_shim! { { .. }, then emit!{c}, X } - parse_generics_shim! { { .. }, then emit!{d}, X } - parse_generics_shim! { { .. }, then emit!{e}, X } - parse_generics_shim! { { .. }, then emit!{f}, X } - parse_generics_shim! { { .. }, then emit!{g}, X } - parse_generics_shim! { { .. }, then emit!{g2}, X } - parse_generics_shim! { { .. }, then emit!{h}, <'a> X } - parse_generics_shim! { { .. }, then emit!{i}, <'a,> X } - parse_generics_shim! { { .. }, then emit!{j}, <'a, 'b> X } - parse_generics_shim! { { .. }, then emit!{k}, <'a, 'b,> X } - parse_generics_shim! { { .. }, then emit!{l}, <'a, 'b: 'a> X } - parse_generics_shim! { { .. }, then emit!{l2}, <'a, 'b: 'a, 'c: 'a + 'b> X } - parse_generics_shim! { { .. }, then emit!{m}, <'a, T: 'a + Copy> X } - parse_generics_shim! { { .. }, then emit!{m2}, <'a, T: 'a + Copy + Clone> X } - parse_generics_shim! { { .. }, then emit!{n}, X } - parse_generics_shim! { { .. }, then emit!{o}, > X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{a}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{b}, <> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{c}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{d}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{e}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{f}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{g}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{g2}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{h}, <'a> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{i}, <'a,> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{j}, <'a, 'b> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{k}, <'a, 'b,> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{l}, <'a, 'b: 'a> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{l2}, <'a, 'b: 'a, 'c: 'a + 'b> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{m}, <'a, T: 'a + Copy> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{m2}, <'a, T: 'a + Copy + Clone> X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{n}, X } + parse_generics_shim::parse_generics_shim! { { .. }, then emit!{o}, > X } let _ = "the rustc parser is stoopid"; } diff --git a/parse-generics-shim/tests/parse_where.rs b/parse-generics-shim/tests/parse_where.rs index c05f6dd..04a94f8 100644 --- a/parse-generics-shim/tests/parse_where.rs +++ b/parse-generics-shim/tests/parse_where.rs @@ -9,7 +9,7 @@ or distributed except according to those terms. */ #![cfg_attr(feature="use-parse-generics-poc", feature(plugin))] #![cfg_attr(feature="use-parse-generics-poc", plugin(parse_generics_poc))] -#[macro_use] extern crate parse_generics_shim; +extern crate parse_generics_shim; macro_rules! as_item { ($i:item) => { $i } } @@ -31,7 +31,7 @@ macro_rules! aeqiws { macro_rules! pwts { ($fields:tt, $($body:tt)*) => { - parse_where_shim! { + parse_generics_shim::parse_where_shim! { $fields, then stringify!(), $($body)* From 8e8d9b296a6ff98cdc77e5bbd95b59392d4c8829 Mon Sep 17 00:00:00 2001 From: yvt Date: Wed, 10 Jun 2020 14:45:30 +0900 Subject: [PATCH 2/2] Support pathed macro as a callback --- parse-generics-shim/src/lib.rs | 12 ++++++------ parse-generics-shim/src/parse_constr.rs | 4 ++-- parse-generics-shim/src/parse_generics_shim.rs | 4 ++-- parse-generics-shim/src/parse_where_shim.rs | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/parse-generics-shim/src/lib.rs b/parse-generics-shim/src/lib.rs index 638c461..58448a2 100644 --- a/parse-generics-shim/src/lib.rs +++ b/parse-generics-shim/src/lib.rs @@ -503,26 +503,26 @@ rustup override add nightly-2016-04-06 macro_rules! parse_generics_shim_util { ( @callback - ($cb_name:ident ! ($($cb_arg:tt)*)), + ($cb_name:ident $(::$cb_sub:ident)* ! ($($cb_arg:tt)*)), $($tail:tt)* ) => { - $cb_name! { $($cb_arg)* $($tail)* } + $cb_name $(::$cb_sub)* ! { $($cb_arg)* $($tail)* } }; ( @callback - ($cb_name:ident ! [$($cb_arg:tt)*]), + ($cb_name:ident $(::$cb_sub:ident)* ! [$($cb_arg:tt)*]), $($tail:tt)* ) => { - $cb_name! { $($cb_arg)* $($tail)* } + $cb_name $(::$cb_sub)* ! { $($cb_arg)* $($tail)* } }; ( @callback - ($cb_name:ident ! {$($cb_arg:tt)*}), + ($cb_name:ident $(::$cb_sub:ident)* ! {$($cb_arg:tt)*}), $($tail:tt)* ) => { - $cb_name! { $($cb_arg)* $($tail)* } + $cb_name $(::$cb_sub)* ! { $($cb_arg)* $($tail)* } }; } diff --git a/parse-generics-shim/src/parse_constr.rs b/parse-generics-shim/src/parse_constr.rs index b089187..f17080b 100644 --- a/parse-generics-shim/src/parse_constr.rs +++ b/parse-generics-shim/src/parse_constr.rs @@ -263,13 +263,13 @@ macro_rules! parse_constr { ( ($allow_lt:tt, $allow_tr:tt), - then $callback:ident!$callback_arg:tt, + then $callback:ident$(::$callback_sub:ident)*!$callback_arg:tt, $($body:tt)* ) => { parse_constr! { @parse { - ($callback!$callback_arg) + ($callback$(::$callback_sub)*!$callback_arg) }, ($allow_lt, $allow_tr), {}, diff --git a/parse-generics-shim/src/parse_generics_shim.rs b/parse-generics-shim/src/parse_generics_shim.rs index c56a6f8..38a7e51 100644 --- a/parse-generics-shim/src/parse_generics_shim.rs +++ b/parse-generics-shim/src/parse_generics_shim.rs @@ -356,12 +356,12 @@ macro_rules! parse_generics_shim { ( $fields:tt, - then $callback:ident!$callback_arg:tt, + then $callback:ident$(::$callback_sub:ident)*!$callback_arg:tt, $($body:tt)* ) => { parse_generics_shim! { @parse_start - { $fields, ($callback!$callback_arg) }, + { $fields, ($callback$(::$callback_sub)*!$callback_arg) }, $($body)* } }; diff --git a/parse-generics-shim/src/parse_where_shim.rs b/parse-generics-shim/src/parse_where_shim.rs index e1edda3..5f4faa1 100644 --- a/parse-generics-shim/src/parse_where_shim.rs +++ b/parse-generics-shim/src/parse_where_shim.rs @@ -274,12 +274,12 @@ macro_rules! parse_where_shim { ( $fields:tt, - then $callback:ident!$callback_arg:tt, + then $callback:ident$(::$callback_sub:ident)*!$callback_arg:tt, where $($body:tt)* ) => { parse_where_shim! { @parse - { $fields, ($callback!$callback_arg) }, + { $fields, ($callback$(::$callback_sub)*!$callback_arg) }, { preds: [], }, $($body)* } @@ -287,12 +287,12 @@ macro_rules! parse_where_shim { ( $fields:tt, - then $callback:ident!$callback_arg:tt, + then $callback:ident$(::$callback_sub:ident)*!$callback_arg:tt, $($body:tt)* ) => { parse_where_shim! { @emit_output - { $fields, ($callback!$callback_arg) }, + { $fields, ($callback$(::$callback_sub)*!$callback_arg) }, { preds: [], }, $($body)* }