Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/hover/render.rs')
| -rw-r--r-- | crates/ide/src/hover/render.rs | 40 |
1 files changed, 12 insertions, 28 deletions
diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index d4c310447f..96a97ab44c 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -3,8 +3,8 @@ use std::fmt::Display; use either::Either; use hir::{ - db::HirDatabase, Adt, AsAssocItem, AttributeTemplate, CaptureKind, HasAttrs, HasCrate, - HasSource, HirDisplay, Layout, Semantics, TypeInfo, + Adt, AsAssocItem, AttributeTemplate, CaptureKind, HasAttrs, HasCrate, HasSource, HirDisplay, + Layout, Semantics, TypeInfo, }; use ide_db::{ base_db::SourceDatabase, @@ -401,14 +401,14 @@ pub(super) fn definition( hir::VariantDef::Struct(s) => Adt::from(s) .layout(db) .ok() - .map(|layout| format!(", offset = {:#X}", layout.fields.offset(id).bytes())), + .and_then(|layout| Some(format!(", offset = {:#X}", layout.field_offset(id)?))), _ => None, }; let niches = niches(db, it, &layout).unwrap_or_default(); Some(format!( "size = {:#X}, align = {:#X}{}{niches}", - layout.size.bytes(), - layout.align.abi.bytes(), + layout.size(), + layout.align(), offset.as_deref().unwrap_or_default() )) }), @@ -417,11 +417,7 @@ pub(super) fn definition( Definition::Adt(it) => label_and_layout_info_and_docs(db, it, config, |&it| { let layout = it.layout(db).ok()?; let niches = niches(db, it, &layout).unwrap_or_default(); - Some(format!( - "size = {:#X}, align = {:#X}{niches}", - layout.size.bytes(), - layout.align.abi.bytes() - )) + Some(format!("size = {:#X}, align = {:#X}{niches}", layout.size(), layout.align())) }), Definition::Variant(it) => label_value_and_layout_info_and_docs( db, @@ -441,13 +437,13 @@ pub(super) fn definition( }, |&it| { let (layout, tag_size) = it.layout(db).ok()?; - let size = layout.size.bytes_usize() - tag_size; + let size = layout.size() as usize - tag_size; if size == 0 { // There is no value in showing layout info for fieldless variants return None; } let niches = niches(db, it, &layout).unwrap_or_default(); - Some(format!("size = {:#X}{niches}", layout.size.bytes())) + Some(format!("size = {:#X}{niches}", layout.size())) }, ), Definition::Const(it) => label_value_and_docs(db, it, |it| { @@ -477,11 +473,7 @@ pub(super) fn definition( Definition::TypeAlias(it) => label_and_layout_info_and_docs(db, it, config, |&it| { let layout = it.ty(db).layout(db).ok()?; let niches = niches(db, it, &layout).unwrap_or_default(); - Some(format!( - "size = {:#X}, align = {:#X}{niches}", - layout.size.bytes(), - layout.align.abi.bytes(), - )) + Some(format!("size = {:#X}, align = {:#X}{niches}", layout.size(), layout.align(),)) }), Definition::BuiltinType(it) => { return famous_defs @@ -518,10 +510,7 @@ pub(super) fn definition( } fn niches(db: &RootDatabase, it: impl HasCrate, layout: &Layout) -> Option<String> { - Some(format!( - ", niches = {}", - layout.largest_niche?.available(&*db.target_data_layout(it.krate(db).into())?) - )) + Some(format!(", niches = {}", layout.niches(db, it.krate(db).into())?)) } fn type_info( @@ -571,7 +560,7 @@ fn closure_ty( let layout = if config.memory_layout { original .layout(sema.db) - .map(|x| format!(" // size = {}, align = {}", x.size.bytes(), x.align.abi.bytes())) + .map(|x| format!(" // size = {}, align = {}", x.size(), x.align())) .unwrap_or_default() } else { String::default() @@ -782,12 +771,7 @@ fn local(db: &RootDatabase, it: hir::Local, config: &HoverConfig) -> Option<Mark }; if config.memory_layout { if let Ok(layout) = it.ty(db).layout(db) { - format_to!( - desc, - " // size = {}, align = {}", - layout.size.bytes(), - layout.align.abi.bytes() - ); + format_to!(desc, " // size = {}, align = {}", layout.size(), layout.align()); } } markup(None, desc, None) |