mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 11:07:42 +00:00
rustdoc: Convert new ItemId's to real Json Ids
This commit is contained in:
parent
97c82d8731
commit
4b1027a317
@ -5,9 +5,10 @@
|
|||||||
#![allow(rustc::default_hash_types)]
|
#![allow(rustc::default_hash_types)]
|
||||||
|
|
||||||
use std::convert::From;
|
use std::convert::From;
|
||||||
|
use std::fmt;
|
||||||
|
|
||||||
use rustc_ast::ast;
|
use rustc_ast::ast;
|
||||||
use rustc_hir::def::CtorKind;
|
use rustc_hir::{def::CtorKind, def_id::DefId};
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
use rustc_span::def_id::CRATE_DEF_INDEX;
|
use rustc_span::def_id::CRATE_DEF_INDEX;
|
||||||
use rustc_span::Pos;
|
use rustc_span::Pos;
|
||||||
@ -171,9 +172,23 @@ impl FromWithTcx<clean::TypeBindingKind> for TypeBindingKind {
|
|||||||
}
|
}
|
||||||
|
|
||||||
crate fn from_item_id(did: ItemId) -> Id {
|
crate fn from_item_id(did: ItemId) -> Id {
|
||||||
|
struct DisplayDefId(DefId);
|
||||||
|
|
||||||
|
impl fmt::Display for DisplayDefId {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
write!(f, "{}:{}", self.0.krate.as_u32(), u32::from(self.0.index))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
match did {
|
match did {
|
||||||
ItemId::DefId(did) => Id(format!("{}:{}", did.krate.as_u32(), u32::from(did.index))),
|
ItemId::DefId(did) => Id(format!("{}", DisplayDefId(did))),
|
||||||
_ => todo!("how should json ItemId's be represented?"),
|
ItemId::Blanket { for_, trait_ } => {
|
||||||
|
Id(format!("b:{}-{}", DisplayDefId(trait_), DisplayDefId(for_)))
|
||||||
|
}
|
||||||
|
ItemId::Auto { for_, trait_ } => {
|
||||||
|
Id(format!("a:{}-{}", DisplayDefId(trait_), DisplayDefId(for_)))
|
||||||
|
}
|
||||||
|
ItemId::Primitive(krate) => Id(format!("p:{}", krate.as_u32())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user