about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNoah Lev <camelidcamel@gmail.com>2022-01-05 16:50:20 -0800
committerNoah Lev <camelidcamel@gmail.com>2022-01-06 11:40:36 -0800
commitf89e2dd935d86bf2da3e4181e47ecaf56b5de026 (patch)
tree5a7119190132d42c22e00ed983b7832f23fdcee0 /src
parentcfa4ac66c194046f631ce076c75516ecfdeb77ee (diff)
downloadrust-f89e2dd935d86bf2da3e4181e47ecaf56b5de026.tar.gz
rust-f89e2dd935d86bf2da3e4181e47ecaf56b5de026.zip
Move anchor conflict check to call site
I think it makes the code easier to understand.
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/passes/collect_intra_doc_links.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/librustdoc/passes/collect_intra_doc_links.rs b/src/librustdoc/passes/collect_intra_doc_links.rs
index 79530086282..40b3cb8641c 100644
--- a/src/librustdoc/passes/collect_intra_doc_links.rs
+++ b/src/librustdoc/passes/collect_intra_doc_links.rs
@@ -514,7 +514,14 @@ impl<'a, 'tcx> LinkCollector<'a, 'tcx> {
                 Res::Def(DefKind::AssocFn | DefKind::AssocConst, _) => assert_eq!(ns, ValueNS),
                 Res::Def(DefKind::AssocTy, _) => assert_eq!(ns, TypeNS),
                 Res::Def(DefKind::Variant, _) => {
-                    return handle_variant(self.cx, res, extra_fragment);
+                    if extra_fragment.is_some() {
+                        // NOTE: `res` can never be a primitive since this match arm means
+                        //       `tcx.def_kind(res) == DefKind::Variant`.
+                        return Err(ErrorKind::AnchorFailure(
+                            AnchorFailure::RustdocAnchorConflict(res),
+                        ));
+                    }
+                    return handle_variant(self.cx, res);
                 }
                 // Not a trait item; just return what we found.
                 _ => return Ok((res, extra_fragment.clone())),
@@ -2272,14 +2279,9 @@ fn privacy_error(cx: &DocContext<'_>, diag_info: &DiagnosticInfo<'_>, path_str:
 fn handle_variant(
     cx: &DocContext<'_>,
     res: Res,
-    extra_fragment: &Option<UrlFragment>,
 ) -> Result<(Res, Option<UrlFragment>), ErrorKind<'static>> {
     use rustc_middle::ty::DefIdTree;
 
-    if extra_fragment.is_some() {
-        // NOTE: `res` can never be a primitive since this function is only called when `tcx.def_kind(res) == DefKind::Variant`.
-        return Err(ErrorKind::AnchorFailure(AnchorFailure::RustdocAnchorConflict(res)));
-    }
     cx.tcx
         .parent(res.def_id(cx.tcx))
         .map(|parent| {