Re-add type_name.rs changes
This commit is contained in:
parent
99f66f4045
commit
e2843b792a
@ -213,16 +213,23 @@ fn write_str(&mut self, s: &str) -> std::fmt::Result {
|
||||
/// Produces an absolute path representation of the given type. See also the documentation on
|
||||
/// `std::any::type_name`
|
||||
pub fn type_name<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, ty: Ty<'tcx>) -> &'tcx ty::Const<'tcx> {
|
||||
let path = AbsolutePathPrinter { tcx, path: String::new() }.print_type(ty).unwrap().path;
|
||||
let len = path.len();
|
||||
let alloc = Allocation::from_byte_aligned_bytes(path.into_bytes());
|
||||
let alloc = tcx.intern_const_alloc(alloc);
|
||||
let alloc = alloc_type_name(tcx, ty);
|
||||
tcx.mk_const(ty::Const {
|
||||
val: ConstValue::Slice {
|
||||
data: alloc,
|
||||
start: 0,
|
||||
end: len,
|
||||
end: alloc.bytes.len(),
|
||||
},
|
||||
ty: tcx.mk_static_str(),
|
||||
})
|
||||
}
|
||||
|
||||
/// Directly returns an `Allocation` containing an absolute path representation of the given type.
|
||||
pub(super) fn alloc_type_name<'a, 'tcx>(
|
||||
tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||
ty: Ty<'tcx>
|
||||
) -> &'tcx Allocation {
|
||||
let path = AbsolutePathPrinter { tcx, path: String::new() }.print_type(ty).unwrap().path;
|
||||
let alloc = Allocation::from_byte_aligned_bytes(path.into_bytes());
|
||||
tcx.intern_const_alloc(alloc)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user