Merge pull request #411 from KodrAus/fix/impl-mode-attributes · bitflags/bitflags@e1ac235 · GitHub
Skip to content

Commit e1ac235

Browse files
authored
Merge pull request #411 from KodrAus/fix/impl-mode-attributes
Allow specifying outer attributes in impl mode
2 parents 9c4b93c + dc8f03a commit e1ac235

3 files changed

Lines changed: 51 additions & 3 deletions

File tree

‎src/lib.rs‎

Lines changed: 5 additions & 1 deletion

‎src/public.rs‎

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ macro_rules! __declare_public_bitflags {
2626
#[doc(hidden)]
2727
macro_rules! __impl_public_bitflags_forward {
2828
(
29+
$(#[$outer:meta])*
2930
$PublicBitFlags:ident: $T:ty, $InternalBitFlags:ident
3031
) => {
3132
$crate::__impl_bitflags! {
33+
$(#[$outer])*
3234
$PublicBitFlags: $T {
3335
fn empty() {
3436
Self($InternalBitFlags::empty())
@@ -128,6 +130,7 @@ macro_rules! __impl_public_bitflags_forward {
128130
#[doc(hidden)]
129131
macro_rules! __impl_public_bitflags {
130132
(
133+
$(#[$outer:meta])*
131134
$BitFlags:ident: $T:ty, $PublicBitFlags:ident {
132135
$(
133136
$(#[$inner:ident $($args:tt)*])*
@@ -136,6 +139,7 @@ macro_rules! __impl_public_bitflags {
136139
}
137140
) => {
138141
$crate::__impl_bitflags! {
142+
$(#[$outer])*
139143
$BitFlags: $T {
140144
fn empty() {
141145
Self(<$T as $crate::Bits>::EMPTY)
@@ -271,7 +275,11 @@ macro_rules! __impl_public_bitflags {
271275
#[macro_export]
272276
#[doc(hidden)]
273277
macro_rules! __impl_public_bitflags_iter {
274-
($BitFlags:ident: $T:ty, $PublicBitFlags:ident) => {
278+
(
279+
$(#[$outer:meta])*
280+
$BitFlags:ident: $T:ty, $PublicBitFlags:ident
281+
) => {
282+
$(#[$outer])*
275283
impl $BitFlags {
276284
/// Yield a set of contained flags values.
277285
///
@@ -300,6 +308,7 @@ macro_rules! __impl_public_bitflags_iter {
300308
}
301309
}
302310

311+
$(#[$outer:meta])*
303312
impl $crate::__private::core::iter::IntoIterator for $BitFlags {
304313
type Item = $PublicBitFlags;
305314
type IntoIter = $crate::iter::Iter<$PublicBitFlags>;
@@ -315,7 +324,12 @@ macro_rules! __impl_public_bitflags_iter {
315324
#[macro_export]
316325
#[doc(hidden)]
317326
macro_rules! __impl_public_bitflags_ops {
318-
($PublicBitFlags:ident) => {
327+
(
328+
$(#[$outer:meta])*
329+
$PublicBitFlags:ident
330+
) => {
331+
332+
$(#[$outer])*
319333
impl $crate::__private::core::fmt::Binary for $PublicBitFlags {
320334
fn fmt(
321335
&self,
@@ -326,6 +340,7 @@ macro_rules! __impl_public_bitflags_ops {
326340
}
327341
}
328342

343+
$(#[$outer])*
329344
impl $crate::__private::core::fmt::Octal for $PublicBitFlags {
330345
fn fmt(
331346
&self,
@@ -336,6 +351,7 @@ macro_rules! __impl_public_bitflags_ops {
336351
}
337352
}
338353

354+
$(#[$outer])*
339355
impl $crate::__private::core::fmt::LowerHex for $PublicBitFlags {
340356
fn fmt(
341357
&self,
@@ -346,6 +362,7 @@ macro_rules! __impl_public_bitflags_ops {
346362
}
347363
}
348364

365+
$(#[$outer])*
349366
impl $crate::__private::core::fmt::UpperHex for $PublicBitFlags {
350367
fn fmt(
351368
&self,
@@ -356,6 +373,7 @@ macro_rules! __impl_public_bitflags_ops {
356373
}
357374
}
358375

376+
$(#[$outer])*
359377
impl $crate::__private::core::ops::BitOr for $PublicBitFlags {
360378
type Output = Self;
361379

@@ -366,6 +384,7 @@ macro_rules! __impl_public_bitflags_ops {
366384
}
367385
}
368386

387+
$(#[$outer])*
369388
impl $crate::__private::core::ops::BitOrAssign for $PublicBitFlags {
370389
/// The bitwise or (`|`) of the bits in two flags values.
371390
#[inline]
@@ -374,6 +393,7 @@ macro_rules! __impl_public_bitflags_ops {
374393
}
375394
}
376395

396+
$(#[$outer])*
377397
impl $crate::__private::core::ops::BitXor for $PublicBitFlags {
378398
type Output = Self;
379399

@@ -384,6 +404,7 @@ macro_rules! __impl_public_bitflags_ops {
384404
}
385405
}
386406

407+
$(#[$outer])*
387408
impl $crate::__private::core::ops::BitXorAssign for $PublicBitFlags {
388409
/// The bitwise exclusive-or (`^`) of the bits in two flags values.
389410
#[inline]
@@ -392,6 +413,7 @@ macro_rules! __impl_public_bitflags_ops {
392413
}
393414
}
394415

416+
$(#[$outer])*
395417
impl $crate::__private::core::ops::BitAnd for $PublicBitFlags {
396418
type Output = Self;
397419

@@ -402,6 +424,7 @@ macro_rules! __impl_public_bitflags_ops {
402424
}
403425
}
404426

427+
$(#[$outer])*
405428
impl $crate::__private::core::ops::BitAndAssign for $PublicBitFlags {
406429
/// The bitwise and (`&`) of the bits in two flags values.
407430
#[inline]
@@ -410,6 +433,7 @@ macro_rules! __impl_public_bitflags_ops {
410433
}
411434
}
412435

436+
$(#[$outer])*
413437
impl $crate::__private::core::ops::Sub for $PublicBitFlags {
414438
type Output = Self;
415439

@@ -423,6 +447,7 @@ macro_rules! __impl_public_bitflags_ops {
423447
}
424448
}
425449

450+
$(#[$outer])*
426451
impl $crate::__private::core::ops::SubAssign for $PublicBitFlags {
427452
/// The intersection of a source flags value with the complement of a target flags value (`&!`).
428453
///
@@ -434,6 +459,7 @@ macro_rules! __impl_public_bitflags_ops {
434459
}
435460
}
436461

462+
$(#[$outer])*
437463
impl $crate::__private::core::ops::Not for $PublicBitFlags {
438464
type Output = Self;
439465

@@ -444,6 +470,7 @@ macro_rules! __impl_public_bitflags_ops {
444470
}
445471
}
446472

473+
$(#[$outer])*
447474
impl $crate::__private::core::iter::Extend<$PublicBitFlags> for $PublicBitFlags {
448475
/// The bitwise or (`|`) of the bits in each flags value.
449476
fn extend<T: $crate::__private::core::iter::IntoIterator<Item = Self>>(
@@ -456,6 +483,7 @@ macro_rules! __impl_public_bitflags_ops {
456483
}
457484
}
458485

486+
$(#[$outer])*
459487
impl $crate::__private::core::iter::FromIterator<$PublicBitFlags> for $PublicBitFlags {
460488
/// The bitwise or (`|`) of the bits in each flags value.
461489
fn from_iter<T: $crate::__private::core::iter::IntoIterator<Item = Self>>(
@@ -476,13 +504,15 @@ macro_rules! __impl_public_bitflags_ops {
476504
#[doc(hidden)]
477505
macro_rules! __impl_public_bitflags_consts {
478506
(
507+
$(#[$outer:meta])*
479508
$PublicBitFlags:ident: $T:ty {
480509
$(
481510
$(#[$inner:ident $($args:tt)*])*
482511
const $Flag:tt = $value:expr;
483512
)*
484513
}
485514
) => {
515+
$(#[$outer])*
486516
impl $PublicBitFlags {
487517
$(
488518
$crate::__bitflags_flag!({
@@ -500,6 +530,7 @@ macro_rules! __impl_public_bitflags_consts {
500530
)*
501531
}
502532

533+
$(#[$outer])*
503534
impl $crate::Flags for $PublicBitFlags {
504535
const FLAGS: &'static [$crate::Flag<$PublicBitFlags>] = &[
505536
$(
Lines changed: 13 additions & 0 deletions

0 commit comments

Comments
 (0)