From f89e2dd935d86bf2da3e4181e47ecaf56b5de026 Mon Sep 17 00:00:00 2001 From: Noah Lev Date: Wed, 5 Jan 2022 16:50:20 -0800 Subject: [PATCH] Move anchor conflict check to call site I think it makes the code easier to understand. --- src/librustdoc/passes/collect_intra_doc_links.rs | 14 ++++++++------ 1 file 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, ) -> Result<(Res, Option), 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| {