Skip to content

Commit a18be44

Browse files
committed
Avoid using #[macro_export] for documenting builtin macros
1 parent 878dd0b commit a18be44

File tree

5 files changed

+43
-58
lines changed

5 files changed

+43
-58
lines changed

src/libcore/macros.rs

+17-32
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,7 @@ macro_rules! unimplemented {
543543
/// into libsyntax itself.
544544
///
545545
/// For more information, see documentation for `std`'s macros.
546+
#[cfg(dox)]
546547
mod builtin {
547548

548549
/// Unconditionally causes compilation to fail with the given error message when encountered.
@@ -551,8 +552,7 @@ mod builtin {
551552
///
552553
/// [`std::compile_error!`]: ../std/macro.compile_error.html
553554
#[stable(feature = "compile_error_macro", since = "1.20.0")]
554-
#[macro_export]
555-
#[cfg(dox)]
555+
#[rustc_doc_only_macro]
556556
macro_rules! compile_error {
557557
($msg:expr) => ({ /* compiler built-in */ });
558558
($msg:expr,) => ({ /* compiler built-in */ });
@@ -564,8 +564,7 @@ mod builtin {
564564
///
565565
/// [`std::format_args!`]: ../std/macro.format_args.html
566566
#[stable(feature = "rust1", since = "1.0.0")]
567-
#[macro_export]
568-
#[cfg(dox)]
567+
#[rustc_doc_only_macro]
569568
macro_rules! format_args {
570569
($fmt:expr) => ({ /* compiler built-in */ });
571570
($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ });
@@ -577,8 +576,7 @@ mod builtin {
577576
///
578577
/// [`std::env!`]: ../std/macro.env.html
579578
#[stable(feature = "rust1", since = "1.0.0")]
580-
#[macro_export]
581-
#[cfg(dox)]
579+
#[rustc_doc_only_macro]
582580
macro_rules! env {
583581
($name:expr) => ({ /* compiler built-in */ });
584582
($name:expr,) => ({ /* compiler built-in */ });
@@ -590,8 +588,7 @@ mod builtin {
590588
///
591589
/// [`std::option_env!`]: ../std/macro.option_env.html
592590
#[stable(feature = "rust1", since = "1.0.0")]
593-
#[macro_export]
594-
#[cfg(dox)]
591+
#[rustc_doc_only_macro]
595592
macro_rules! option_env {
596593
($name:expr) => ({ /* compiler built-in */ });
597594
($name:expr,) => ({ /* compiler built-in */ });
@@ -603,8 +600,7 @@ mod builtin {
603600
///
604601
/// [`std::concat_idents!`]: ../std/macro.concat_idents.html
605602
#[unstable(feature = "concat_idents_macro", issue = "29599")]
606-
#[macro_export]
607-
#[cfg(dox)]
603+
#[rustc_doc_only_macro]
608604
macro_rules! concat_idents {
609605
($($e:ident),+) => ({ /* compiler built-in */ });
610606
($($e:ident,)+) => ({ /* compiler built-in */ });
@@ -616,8 +612,7 @@ mod builtin {
616612
///
617613
/// [`std::concat!`]: ../std/macro.concat.html
618614
#[stable(feature = "rust1", since = "1.0.0")]
619-
#[macro_export]
620-
#[cfg(dox)]
615+
#[rustc_doc_only_macro]
621616
macro_rules! concat {
622617
($($e:expr),*) => ({ /* compiler built-in */ });
623618
($($e:expr,)*) => ({ /* compiler built-in */ });
@@ -629,8 +624,7 @@ mod builtin {
629624
///
630625
/// [`std::line!`]: ../std/macro.line.html
631626
#[stable(feature = "rust1", since = "1.0.0")]
632-
#[macro_export]
633-
#[cfg(dox)]
627+
#[rustc_doc_only_macro]
634628
macro_rules! line { () => ({ /* compiler built-in */ }) }
635629

636630
/// A macro which expands to the column number on which it was invoked.
@@ -639,8 +633,7 @@ mod builtin {
639633
///
640634
/// [`std::column!`]: ../std/macro.column.html
641635
#[stable(feature = "rust1", since = "1.0.0")]
642-
#[macro_export]
643-
#[cfg(dox)]
636+
#[rustc_doc_only_macro]
644637
macro_rules! column { () => ({ /* compiler built-in */ }) }
645638

646639
/// A macro which expands to the file name from which it was invoked.
@@ -649,8 +642,7 @@ mod builtin {
649642
///
650643
/// [`std::file!`]: ../std/macro.file.html
651644
#[stable(feature = "rust1", since = "1.0.0")]
652-
#[macro_export]
653-
#[cfg(dox)]
645+
#[rustc_doc_only_macro]
654646
macro_rules! file { () => ({ /* compiler built-in */ }) }
655647

656648
/// A macro which stringifies its arguments.
@@ -659,8 +651,7 @@ mod builtin {
659651
///
660652
/// [`std::stringify!`]: ../std/macro.stringify.html
661653
#[stable(feature = "rust1", since = "1.0.0")]
662-
#[macro_export]
663-
#[cfg(dox)]
654+
#[rustc_doc_only_macro]
664655
macro_rules! stringify { ($($t:tt)*) => ({ /* compiler built-in */ }) }
665656

666657
/// Includes a utf8-encoded file as a string.
@@ -669,8 +660,7 @@ mod builtin {
669660
///
670661
/// [`std::include_str!`]: ../std/macro.include_str.html
671662
#[stable(feature = "rust1", since = "1.0.0")]
672-
#[macro_export]
673-
#[cfg(dox)]
663+
#[rustc_doc_only_macro]
674664
macro_rules! include_str {
675665
($file:expr) => ({ /* compiler built-in */ });
676666
($file:expr,) => ({ /* compiler built-in */ });
@@ -682,8 +672,7 @@ mod builtin {
682672
///
683673
/// [`std::include_bytes!`]: ../std/macro.include_bytes.html
684674
#[stable(feature = "rust1", since = "1.0.0")]
685-
#[macro_export]
686-
#[cfg(dox)]
675+
#[rustc_doc_only_macro]
687676
macro_rules! include_bytes {
688677
($file:expr) => ({ /* compiler built-in */ });
689678
($file:expr,) => ({ /* compiler built-in */ });
@@ -695,8 +684,7 @@ mod builtin {
695684
///
696685
/// [`std::module_path!`]: ../std/macro.module_path.html
697686
#[stable(feature = "rust1", since = "1.0.0")]
698-
#[macro_export]
699-
#[cfg(dox)]
687+
#[rustc_doc_only_macro]
700688
macro_rules! module_path { () => ({ /* compiler built-in */ }) }
701689

702690
/// Boolean evaluation of configuration flags, at compile-time.
@@ -705,8 +693,7 @@ mod builtin {
705693
///
706694
/// [`std::cfg!`]: ../std/macro.cfg.html
707695
#[stable(feature = "rust1", since = "1.0.0")]
708-
#[macro_export]
709-
#[cfg(dox)]
696+
#[rustc_doc_only_macro]
710697
macro_rules! cfg { ($($cfg:tt)*) => ({ /* compiler built-in */ }) }
711698

712699
/// Parse a file as an expression or an item according to the context.
@@ -715,8 +702,7 @@ mod builtin {
715702
///
716703
/// [`std::include!`]: ../std/macro.include.html
717704
#[stable(feature = "rust1", since = "1.0.0")]
718-
#[macro_export]
719-
#[cfg(dox)]
705+
#[rustc_doc_only_macro]
720706
macro_rules! include {
721707
($file:expr) => ({ /* compiler built-in */ });
722708
($file:expr,) => ({ /* compiler built-in */ });
@@ -727,9 +713,8 @@ mod builtin {
727713
/// For more information, see the documentation for [`std::assert!`].
728714
///
729715
/// [`std::assert!`]: ../std/macro.assert.html
730-
#[macro_export]
716+
#[rustc_doc_only_macro]
731717
#[stable(feature = "rust1", since = "1.0.0")]
732-
#[cfg(dox)]
733718
macro_rules! assert {
734719
($cond:expr) => ({ /* compiler built-in */ });
735720
($cond:expr,) => ({ /* compiler built-in */ });

src/librustc/hir/lowering.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -3191,7 +3191,8 @@ impl<'a> LoweringContext<'a> {
31913191
let mut vis = self.lower_visibility(&i.vis, None);
31923192
let attrs = self.lower_attrs(&i.attrs);
31933193
if let ItemKind::MacroDef(ref def) = i.node {
3194-
if !def.legacy || attr::contains_name(&i.attrs, "macro_export") {
3194+
if !def.legacy || attr::contains_name(&i.attrs, "macro_export") ||
3195+
attr::contains_name(&i.attrs, "rustc_doc_only_macro") {
31953196
let body = self.lower_token_stream(def.stream());
31963197
self.exported_macros.push(hir::MacroDef {
31973198
name,

src/librustdoc/clean/mod.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -1253,15 +1253,13 @@ fn macro_resolve(cx: &DocContext, path_str: &str) -> Option<Def> {
12531253
.resolve_macro_to_def_inner(mark, &path, MacroKind::Bang, false);
12541254
if let Ok(def) = res {
12551255
if let SyntaxExtension::DeclMacro { .. } = *resolver.get_macro(def) {
1256-
Some(def)
1257-
} else {
1258-
None
1256+
return Some(def);
12591257
}
1260-
} else if let Some(def) = resolver.all_macros.get(&Symbol::intern(path_str)) {
1261-
Some(*def)
1262-
} else {
1263-
None
12641258
}
1259+
if let Some(def) = resolver.all_macros.get(&Symbol::intern(path_str)) {
1260+
return Some(*def);
1261+
}
1262+
None
12651263
}
12661264

12671265
#[derive(Debug)]

src/libstd/macros.rs

+17-17
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ macro_rules! assert_approx_eq {
303303
/// macro, but are documented here. Their implementations can be found hardcoded
304304
/// into libsyntax itself.
305305
#[cfg(dox)]
306-
pub mod builtin {
306+
mod builtin {
307307

308308
/// Unconditionally causes compilation to fail with the given error message when encountered.
309309
///
@@ -341,7 +341,7 @@ pub mod builtin {
341341
///
342342
/// [`panic!`]: ../std/macro.panic.html
343343
#[stable(feature = "compile_error_macro", since = "1.20.0")]
344-
#[macro_export]
344+
#[rustc_doc_only_macro]
345345
macro_rules! compile_error {
346346
($msg:expr) => ({ /* compiler built-in */ });
347347
($msg:expr,) => ({ /* compiler built-in */ });
@@ -393,7 +393,7 @@ pub mod builtin {
393393
/// assert_eq!(s, format!("hello {}", "world"));
394394
/// ```
395395
#[stable(feature = "rust1", since = "1.0.0")]
396-
#[macro_export]
396+
#[rustc_doc_only_macro]
397397
macro_rules! format_args {
398398
($fmt:expr) => ({ /* compiler built-in */ });
399399
($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ });
@@ -431,7 +431,7 @@ pub mod builtin {
431431
/// error: what's that?!
432432
/// ```
433433
#[stable(feature = "rust1", since = "1.0.0")]
434-
#[macro_export]
434+
#[rustc_doc_only_macro]
435435
macro_rules! env {
436436
($name:expr) => ({ /* compiler built-in */ });
437437
($name:expr,) => ({ /* compiler built-in */ });
@@ -457,7 +457,7 @@ pub mod builtin {
457457
/// println!("the secret key might be: {:?}", key);
458458
/// ```
459459
#[stable(feature = "rust1", since = "1.0.0")]
460-
#[macro_export]
460+
#[rustc_doc_only_macro]
461461
macro_rules! option_env {
462462
($name:expr) => ({ /* compiler built-in */ });
463463
($name:expr,) => ({ /* compiler built-in */ });
@@ -488,7 +488,7 @@ pub mod builtin {
488488
/// # }
489489
/// ```
490490
#[unstable(feature = "concat_idents_macro", issue = "29599")]
491-
#[macro_export]
491+
#[rustc_doc_only_macro]
492492
macro_rules! concat_idents {
493493
($($e:ident),+) => ({ /* compiler built-in */ });
494494
($($e:ident,)+) => ({ /* compiler built-in */ });
@@ -510,7 +510,7 @@ pub mod builtin {
510510
/// assert_eq!(s, "test10btrue");
511511
/// ```
512512
#[stable(feature = "rust1", since = "1.0.0")]
513-
#[macro_export]
513+
#[rustc_doc_only_macro]
514514
macro_rules! concat {
515515
($($e:expr),*) => ({ /* compiler built-in */ });
516516
($($e:expr,)*) => ({ /* compiler built-in */ });
@@ -538,7 +538,7 @@ pub mod builtin {
538538
/// println!("defined on line: {}", current_line);
539539
/// ```
540540
#[stable(feature = "rust1", since = "1.0.0")]
541-
#[macro_export]
541+
#[rustc_doc_only_macro]
542542
macro_rules! line { () => ({ /* compiler built-in */ }) }
543543

544544
/// A macro which expands to the column number on which it was invoked.
@@ -563,7 +563,7 @@ pub mod builtin {
563563
/// println!("defined on column: {}", current_col);
564564
/// ```
565565
#[stable(feature = "rust1", since = "1.0.0")]
566-
#[macro_export]
566+
#[rustc_doc_only_macro]
567567
macro_rules! column { () => ({ /* compiler built-in */ }) }
568568

569569
/// A macro which expands to the file name from which it was invoked.
@@ -587,7 +587,7 @@ pub mod builtin {
587587
/// println!("defined in file: {}", this_file);
588588
/// ```
589589
#[stable(feature = "rust1", since = "1.0.0")]
590-
#[macro_export]
590+
#[rustc_doc_only_macro]
591591
macro_rules! file { () => ({ /* compiler built-in */ }) }
592592

593593
/// A macro which stringifies its arguments.
@@ -606,7 +606,7 @@ pub mod builtin {
606606
/// assert_eq!(one_plus_one, "1 + 1");
607607
/// ```
608608
#[stable(feature = "rust1", since = "1.0.0")]
609-
#[macro_export]
609+
#[rustc_doc_only_macro]
610610
macro_rules! stringify { ($($t:tt)*) => ({ /* compiler built-in */ }) }
611611

612612
/// Includes a utf8-encoded file as a string.
@@ -640,7 +640,7 @@ pub mod builtin {
640640
///
641641
/// Compiling 'main.rs' and running the resulting binary will print "adiós".
642642
#[stable(feature = "rust1", since = "1.0.0")]
643-
#[macro_export]
643+
#[rustc_doc_only_macro]
644644
macro_rules! include_str {
645645
($file:expr) => ({ /* compiler built-in */ });
646646
($file:expr,) => ({ /* compiler built-in */ });
@@ -677,7 +677,7 @@ pub mod builtin {
677677
///
678678
/// Compiling 'main.rs' and running the resulting binary will print "adiós".
679679
#[stable(feature = "rust1", since = "1.0.0")]
680-
#[macro_export]
680+
#[rustc_doc_only_macro]
681681
macro_rules! include_bytes {
682682
($file:expr) => ({ /* compiler built-in */ });
683683
($file:expr,) => ({ /* compiler built-in */ });
@@ -701,7 +701,7 @@ pub mod builtin {
701701
/// test::foo();
702702
/// ```
703703
#[stable(feature = "rust1", since = "1.0.0")]
704-
#[macro_export]
704+
#[rustc_doc_only_macro]
705705
macro_rules! module_path { () => ({ /* compiler built-in */ }) }
706706

707707
/// Boolean evaluation of configuration flags, at compile-time.
@@ -723,7 +723,7 @@ pub mod builtin {
723723
/// };
724724
/// ```
725725
#[stable(feature = "rust1", since = "1.0.0")]
726-
#[macro_export]
726+
#[rustc_doc_only_macro]
727727
macro_rules! cfg { ($($cfg:tt)*) => ({ /* compiler built-in */ }) }
728728

729729
/// Parse a file as an expression or an item according to the context.
@@ -766,7 +766,7 @@ pub mod builtin {
766766
/// Compiling 'main.rs' and running the resulting binary will print
767767
/// "🙈🙊🙉🙈🙊🙉".
768768
#[stable(feature = "rust1", since = "1.0.0")]
769-
#[macro_export]
769+
#[rustc_doc_only_macro]
770770
macro_rules! include {
771771
($file:expr) => ({ /* compiler built-in */ });
772772
($file:expr,) => ({ /* compiler built-in */ });
@@ -819,7 +819,7 @@ pub mod builtin {
819819
/// assert!(a + b == 30, "a = {}, b = {}", a, b);
820820
/// ```
821821
#[stable(feature = "rust1", since = "1.0.0")]
822-
#[macro_export]
822+
#[rustc_doc_only_macro]
823823
macro_rules! assert {
824824
($cond:expr) => ({ /* compiler built-in */ });
825825
($cond:expr,) => ({ /* compiler built-in */ });

src/libsyntax/feature_gate.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,8 @@ pub fn deprecated_attributes() -> Vec<&'static (&'static str, AttributeType, Att
686686
}
687687

688688
pub fn is_builtin_attr(attr: &ast::Attribute) -> bool {
689-
BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.check_name(builtin_name))
689+
BUILTIN_ATTRIBUTES.iter().any(|&(builtin_name, _, _)| attr.check_name(builtin_name)) ||
690+
attr.name().as_str().starts_with("rustc_")
690691
}
691692

692693
// Attributes that have a special meaning to rustc or rustdoc

0 commit comments

Comments
 (0)