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.rs40
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)