about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-08-28 09:35:21 +0200
committerGitHub <noreply@github.com>2022-08-28 09:35:21 +0200
commitc2f294a73fa8959945df78db72a3fc4fe6270069 (patch)
tree7b231b76fd1709618b0bcba575f4ea55a3c623a3
parent3142996a460ae41d3e8866203da577f70b5eefb2 (diff)
parentaa76e135ff5777b32a20cdf9407564322b4b422d (diff)
downloadrust-c2f294a73fa8959945df78db72a3fc4fe6270069.tar.gz
rust-c2f294a73fa8959945df78db72a3fc4fe6270069.zip
Rollup merge of #101091 - TaKO8Ki:fix-101076, r=notriddle
Extend attrs if local_def_id exists

Fixes #101076
-rw-r--r--src/librustdoc/passes/propagate_doc_cfg.rs5
-rw-r--r--src/test/rustdoc-ui/issue-101076.rs14
2 files changed, 17 insertions, 2 deletions
diff --git a/src/librustdoc/passes/propagate_doc_cfg.rs b/src/librustdoc/passes/propagate_doc_cfg.rs
index 21d295bb1f8..2b12d118bca 100644
--- a/src/librustdoc/passes/propagate_doc_cfg.rs
+++ b/src/librustdoc/passes/propagate_doc_cfg.rs
@@ -41,8 +41,9 @@ impl<'a, 'tcx> DocFolder for CfgPropagator<'a, 'tcx> {
             if self.parent != Some(expected_parent) {
                 let mut attrs = Vec::new();
                 for (parent_hir_id, _) in hir.parent_iter(hir_id) {
-                    let def_id = hir.local_def_id(parent_hir_id).to_def_id();
-                    attrs.extend_from_slice(load_attrs(self.cx, def_id));
+                    if let Some(def_id) = hir.opt_local_def_id(parent_hir_id) {
+                        attrs.extend_from_slice(load_attrs(self.cx, def_id.to_def_id()));
+                    }
                 }
                 let (_, cfg) =
                     merge_attrs(self.cx, None, item.attrs.other_attrs.as_slice(), Some(&attrs));
diff --git a/src/test/rustdoc-ui/issue-101076.rs b/src/test/rustdoc-ui/issue-101076.rs
new file mode 100644
index 00000000000..648f9902908
--- /dev/null
+++ b/src/test/rustdoc-ui/issue-101076.rs
@@ -0,0 +1,14 @@
+// check-pass
+
+const _: () = {
+    #[macro_export]
+    macro_rules! first_macro {
+        () => {}
+    }
+    mod foo {
+        #[macro_export]
+        macro_rules! second_macro {
+            () => {}
+        }
+    }
+};