about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYury Ivanou <lumenian@gmail.com>2023-05-06 16:58:57 +0300
committerYury Ivanou <lumenian@gmail.com>2023-05-06 16:58:57 +0300
commitecc081d6252007ab1ef3749646e7c733296f827b (patch)
tree863d663bf2616e9b2e788c5f118603050952b21a
parenta4966c92829f945d3846eb0ca0e240ac7f7c8c60 (diff)
downloadrust-ecc081d6252007ab1ef3749646e7c733296f827b.tar.gz
rust-ecc081d6252007ab1ef3749646e7c733296f827b.zip
Show type alias layout on hover
-rw-r--r--crates/ide/src/hover/render.rs5
-rw-r--r--crates/ide/src/hover/tests.rs6
2 files changed, 7 insertions, 4 deletions
diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs
index 8f8cdcce515..a7c50081e46 100644
--- a/crates/ide/src/hover/render.rs
+++ b/crates/ide/src/hover/render.rs
@@ -473,7 +473,10 @@ pub(super) fn definition(
         }),
         Definition::Trait(it) => label_and_docs(db, it),
         Definition::TraitAlias(it) => label_and_docs(db, it),
-        Definition::TypeAlias(it) => label_and_docs(db, it),
+        Definition::TypeAlias(it) => label_and_layout_info_and_docs(db, it, |&it| {
+            let layout = it.ty(db).layout(db).ok()?;
+            Some(format!("size = {}, align = {}", layout.size.bytes(), layout.align.abi.bytes()))
+        }),
         Definition::BuiltinType(it) => {
             return famous_defs
                 .and_then(|fd| builtin(fd, it))
diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs
index 0d9b4d8505f..04d239d255e 100644
--- a/crates/ide/src/hover/tests.rs
+++ b/crates/ide/src/hover/tests.rs
@@ -1405,7 +1405,7 @@ fn test_hover_function_pointer_show_identifiers() {
                 ```
 
                 ```rust
-                type foo = fn(a: i32, b: i32) -> i32
+                type foo = fn(a: i32, b: i32) -> i32 // size = 8, align = 8
                 ```
             "#]],
     );
@@ -1423,7 +1423,7 @@ fn test_hover_function_pointer_no_identifier() {
                 ```
 
                 ```rust
-                type foo = fn(i32, i32) -> i32
+                type foo = fn(i32, i32) -> i32 // size = 8, align = 8
                 ```
             "#]],
     );
@@ -3555,7 +3555,7 @@ type Fo$0o2 = Foo<2>;
                 ```
 
                 ```rust
-                type Foo2 = Foo<2>
+                type Foo2 = Foo<2> // size = 0, align = 1
                 ```
             "#]],
     );