Resolve documentation links in rustc and store the results in metadata
This commit implements MCP https://github.com/rust-lang/compiler-team/issues/584 It also removes code that is no longer used, and that includes code cloning resolver, so issue #83761 is fixed.
This commit is contained in:
parent
a12d31d5a6
commit
b62b82aef4
28 changed files with 653 additions and 853 deletions
|
@ -2,6 +2,8 @@ use crate::hir;
|
|||
|
||||
use rustc_ast as ast;
|
||||
use rustc_ast::NodeId;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_data_structures::stable_hasher::ToStableHashKey;
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::def_id::{DefId, LocalDefId};
|
||||
use rustc_span::hygiene::MacroKind;
|
||||
|
@ -472,7 +474,8 @@ impl PartialRes {
|
|||
|
||||
/// Different kinds of symbols can coexist even if they share the same textual name.
|
||||
/// Therefore, they each have a separate universe (known as a "namespace").
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Encodable, Decodable)]
|
||||
#[derive(HashStable_Generic)]
|
||||
pub enum Namespace {
|
||||
/// The type namespace includes `struct`s, `enum`s, `union`s, `trait`s, and `mod`s
|
||||
/// (and, by extension, crates).
|
||||
|
@ -499,6 +502,15 @@ impl Namespace {
|
|||
}
|
||||
}
|
||||
|
||||
impl<CTX: crate::HashStableContext> ToStableHashKey<CTX> for Namespace {
|
||||
type KeyType = Namespace;
|
||||
|
||||
#[inline]
|
||||
fn to_stable_hash_key(&self, _: &CTX) -> Namespace {
|
||||
*self
|
||||
}
|
||||
}
|
||||
|
||||
/// Just a helper ‒ separate structure for each namespace.
|
||||
#[derive(Copy, Clone, Default, Debug)]
|
||||
pub struct PerNS<T> {
|
||||
|
@ -760,3 +772,5 @@ pub enum LifetimeRes {
|
|||
/// HACK: This is used to recover the NodeId of an elided lifetime.
|
||||
ElidedAnchor { start: NodeId, end: NodeId },
|
||||
}
|
||||
|
||||
pub type DocLinkResMap = FxHashMap<(Symbol, Namespace), Option<Res<NodeId>>>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue