about summary refs log tree commit diff
path: root/compiler/rustc_data_structures/src/lib.rs
diff options
context:
space:
mode:
authorNilstrieb <48135649+Nilstrieb@users.noreply.github.com>2023-12-30 17:09:02 +0100
committerNilstrieb <48135649+Nilstrieb@users.noreply.github.com>2023-12-30 18:17:28 +0100
commitffafcd8819deb78ad85dd4968cf5da531d8f436d (patch)
treedbe135ccc229744b529370fdc66aa5003d60292b /compiler/rustc_data_structures/src/lib.rs
parentd59f06fc64844ec2073e5e888f7470989ef25ff9 (diff)
downloadrust-ffafcd8819deb78ad85dd4968cf5da531d8f436d.tar.gz
rust-ffafcd8819deb78ad85dd4968cf5da531d8f436d.zip
Update to bitflags 2 in the compiler
This involves lots of breaking changes. There are two big changes that
force changes. The first is that the bitflag types now don't
automatically implement normal derive traits, so we need to derive them
manually.

Additionally, bitflags now have a hidden inner type by default, which
breaks our custom derives. The bitflags docs recommend using the impl
form in these cases, which I did.
Diffstat (limited to 'compiler/rustc_data_structures/src/lib.rs')
-rw-r--r--compiler/rustc_data_structures/src/lib.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs
index 3ef87684fa5..93b4032c310 100644
--- a/compiler/rustc_data_structures/src/lib.rs
+++ b/compiler/rustc_data_structures/src/lib.rs
@@ -150,3 +150,14 @@ pub fn make_display(f: impl Fn(&mut fmt::Formatter<'_>) -> fmt::Result) -> impl
 // See comments in src/librustc_middle/lib.rs
 #[doc(hidden)]
 pub fn __noop_fix_for_27438() {}
+
+#[macro_export]
+macro_rules! external_bitflags_debug {
+    ($Name:ident) => {
+        impl ::std::fmt::Debug for $Name {
+            fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
+                ::bitflags::parser::to_writer(self, f)
+            }
+        }
+    };
+}