Skip to content

Commit 4b1027a

Browse files
committed
rustdoc: Convert new ItemId's to real Json Ids
1 parent 97c82d8 commit 4b1027a

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/librustdoc/json/conversions.rs

+18-3
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@
55
#![allow(rustc::default_hash_types)]
66

77
use std::convert::From;
8+
use std::fmt;
89

910
use rustc_ast::ast;
10-
use rustc_hir::def::CtorKind;
11+
use rustc_hir::{def::CtorKind, def_id::DefId};
1112
use rustc_middle::ty::TyCtxt;
1213
use rustc_span::def_id::CRATE_DEF_INDEX;
1314
use rustc_span::Pos;
@@ -171,9 +172,23 @@ impl FromWithTcx<clean::TypeBindingKind> for TypeBindingKind {
171172
}
172173

173174
crate fn from_item_id(did: ItemId) -> Id {
175+
struct DisplayDefId(DefId);
176+
177+
impl fmt::Display for DisplayDefId {
178+
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
179+
write!(f, "{}:{}", self.0.krate.as_u32(), u32::from(self.0.index))
180+
}
181+
}
182+
174183
match did {
175-
ItemId::DefId(did) => Id(format!("{}:{}", did.krate.as_u32(), u32::from(did.index))),
176-
_ => todo!("how should json ItemId's be represented?"),
184+
ItemId::DefId(did) => Id(format!("{}", DisplayDefId(did))),
185+
ItemId::Blanket { for_, trait_ } => {
186+
Id(format!("b:{}-{}", DisplayDefId(trait_), DisplayDefId(for_)))
187+
}
188+
ItemId::Auto { for_, trait_ } => {
189+
Id(format!("a:{}-{}", DisplayDefId(trait_), DisplayDefId(for_)))
190+
}
191+
ItemId::Primitive(krate) => Id(format!("p:{}", krate.as_u32())),
177192
}
178193
}
179194

0 commit comments

Comments
 (0)