-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pub(restricted) bitflags #72
Comments
14 tasks
pub(restricted) is now stable. But I think it is still blocked by Currently the straightforward fix using error: local ambiguity: multiple parsing options: built-in NTs vis ('vis') or 1 other option.
--> src/example_generated.rs:5:5
|
4 | / bitflags! {
5 | | /// This is the same `Flags` struct defined in the [crate level example](../index.html#example).
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
6 | | /// Note that this struct is just for documentation purposes only, it must not be used outside
7 | | /// this crate.
... |
15 | | }
16 | | }
| |_- in this macro invocation
error: Could not compile `bitflags`. (diff)diff --git a/src/lib.rs b/src/lib.rs
index 1694837..356fba1 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
+#![feature(macro_vis_matcher)]
+
//! A typesafe bitmask flag generator useful for sets of C-style bitmask flags.
//! It can be used for creating typesafe wrappers around C APIs.
//!
@@ -305,16 +307,16 @@ pub extern crate core as _core;
/// ```
#[macro_export]
macro_rules! bitflags {
- ($(#[$attr:meta])* pub struct $BitFlags:ident: $T:ty {
+ ($(#[$attr:meta])* $vis:vis struct $BitFlags:ident: $T:ty {
$($(#[$Flag_attr:meta])* const $Flag:ident = $value:expr;)+
}) => {
#[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)]
$(#[$attr])*
- pub struct $BitFlags {
+ $vis struct $BitFlags {
bits: $T,
}
- $($(#[$Flag_attr])* pub const $Flag: $BitFlags = $BitFlags { bits: $value };)+
+ $($(#[$Flag_attr])* $vis const $Flag: $BitFlags = $BitFlags { bits: $value };)+
__impl_bitflags! {
struct $BitFlags: $T {
@@ -322,24 +324,6 @@ macro_rules! bitflags {
}
}
};
- ($(#[$attr:meta])* struct $BitFlags:ident: $T:ty {
- $($(#[$Flag_attr:meta])* const $Flag:ident = $value:expr;)+
- }) => {
- #[derive(Copy, PartialEq, Eq, Clone, PartialOrd, Ord, Hash)]
- $(#[$attr])*
- struct $BitFlags {
- bits: $T,
- }
-
- $($(#[$Flag_attr])* const $Flag: $BitFlags = $BitFlags { bits: $value };)+
-
- __impl_bitflags! {
- struct $BitFlags: $T {
- $($(#[$Flag_attr])* const $Flag = $value;)+
- }
- }
-
- };
} |
It looks like using |
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
cc rust-lang/rust#32409 - maybe no action is warranted until this feature is stable.
The text was updated successfully, but these errors were encountered: