From 1d1ae31e6c42dbc302b17a50f33b5f1afa714559 Mon Sep 17 00:00:00 2001 From: Teoh Han Hui Date: Thu, 13 Jul 2023 01:51:02 +0800 Subject: [PATCH] Fix macro hygiene Re-export Ok and Err --- src/lib.rs | 5 +++++ src/macros.rs | 4 ++-- tests/ui/compile_pass/hygiene.rs | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 tests/ui/compile_pass/hygiene.rs diff --git a/src/lib.rs b/src/lib.rs index aea15530..f08b42d9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -273,6 +273,11 @@ mod macros; #[cfg(feature = "macro-diagnostics")] pub extern crate uuid_macro_internal; +#[doc(hidden)] +pub mod __macro_support { + pub use crate::std::result::Result::{Err, Ok}; +} + use crate::std::convert; pub use crate::{builder::Builder, error::Error}; diff --git a/src/macros.rs b/src/macros.rs index 281c5335..25c4ac98 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -15,8 +15,8 @@ macro_rules! define_uuid_macro { macro_rules! uuid { ($uuid:literal) => {{ const OUTPUT: $crate::Uuid = match $crate::Uuid::try_parse($uuid) { - Ok(u) => u, - Err(_) => { + $crate::__macro_support::Ok(u) => u, + $crate::__macro_support::Err(_) => { // here triggers const_err // const_panic requires 1.57 #[allow(unconditional_panic)] diff --git a/tests/ui/compile_pass/hygiene.rs b/tests/ui/compile_pass/hygiene.rs new file mode 100644 index 00000000..b2cf6f6a --- /dev/null +++ b/tests/ui/compile_pass/hygiene.rs @@ -0,0 +1,7 @@ +use uuid::{uuid, Uuid}; + +fn Ok() {} + +const _: Uuid = uuid!("00000000-0000-0000-0000-000000000000"); + +fn main() {}