Use hygenic macros for stable-mir

This commit is contained in:
Jacob Greenfield
2025-07-15 20:47:09 -04:00
parent 3014e79f9c
commit c6e1b21777

View File

@@ -144,10 +144,10 @@ where
#[macro_export] #[macro_export]
macro_rules! run { macro_rules! run {
($args:expr, $callback_fn:ident) => { ($args:expr, $callback_fn:ident) => {
run_driver!($args, || $callback_fn()) $crate::run_driver!($args, || $callback_fn())
}; };
($args:expr, $callback:expr) => { ($args:expr, $callback:expr) => {
run_driver!($args, $callback) $crate::run_driver!($args, $callback)
}; };
} }
@@ -158,10 +158,10 @@ macro_rules! run {
#[macro_export] #[macro_export]
macro_rules! run_with_tcx { macro_rules! run_with_tcx {
($args:expr, $callback_fn:ident) => { ($args:expr, $callback_fn:ident) => {
run_driver!($args, |tcx| $callback_fn(tcx), with_tcx) $crate::run_driver!($args, |tcx| $callback_fn(tcx), with_tcx)
}; };
($args:expr, $callback:expr) => { ($args:expr, $callback:expr) => {
run_driver!($args, $callback, with_tcx) $crate::run_driver!($args, $callback, with_tcx)
}; };
} }
@@ -191,11 +191,11 @@ macro_rules! run_driver {
use rustc_public::CompilerError; use rustc_public::CompilerError;
use std::ops::ControlFlow; use std::ops::ControlFlow;
pub struct StableMir<B = (), C = (), F = fn($(optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C>> pub struct StableMir<B = (), C = (), F = fn($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C>>
where where
B: Send, B: Send,
C: Send, C: Send,
F: FnOnce($(optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send, F: FnOnce($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send,
{ {
callback: Option<F>, callback: Option<F>,
result: Option<ControlFlow<B, C>>, result: Option<ControlFlow<B, C>>,
@@ -205,7 +205,7 @@ macro_rules! run_driver {
where where
B: Send, B: Send,
C: Send, C: Send,
F: FnOnce($(optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send, F: FnOnce($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send,
{ {
/// Creates a new `StableMir` instance, with given test_function and arguments. /// Creates a new `StableMir` instance, with given test_function and arguments.
pub fn new(callback: F) -> Self { pub fn new(callback: F) -> Self {
@@ -240,7 +240,7 @@ macro_rules! run_driver {
where where
B: Send, B: Send,
C: Send, C: Send,
F: FnOnce($(optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send, F: FnOnce($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send,
{ {
/// Called after analysis. Return value instructs the compiler whether to /// Called after analysis. Return value instructs the compiler whether to
/// continue the compilation afterwards (defaults to `Compilation::Continue`) /// continue the compilation afterwards (defaults to `Compilation::Continue`)
@@ -251,7 +251,7 @@ macro_rules! run_driver {
) -> Compilation { ) -> Compilation {
if let Some(callback) = self.callback.take() { if let Some(callback) = self.callback.take() {
rustc_internal::run(tcx, || { rustc_internal::run(tcx, || {
self.result = Some(callback($(optional!($with_tcx tcx))?)); self.result = Some(callback($($crate::optional!($with_tcx tcx))?));
}) })
.unwrap(); .unwrap();
if self.result.as_ref().is_some_and(|val| val.is_continue()) { if self.result.as_ref().is_some_and(|val| val.is_continue()) {