diff options
| author | Yury Ivanou <lumenian@gmail.com> | 2023-05-07 19:10:01 +0300 |
|---|---|---|
| committer | Yury Ivanou <lumenian@gmail.com> | 2023-05-07 19:10:01 +0300 |
| commit | 8e1ba7fdab2e1d13732a30d3be339d226ec916f1 (patch) | |
| tree | 306db7abd0d2777473c56cfec44f410983d3fdf4 | |
| parent | 98a4c5049f69cc3ae3081e8541c63c34b13038a3 (diff) | |
| download | rust-8e1ba7fdab2e1d13732a30d3be339d226ec916f1.tar.gz rust-8e1ba7fdab2e1d13732a30d3be339d226ec916f1.zip | |
Fix memory layout config not working for closures
| -rw-r--r-- | crates/ide/src/hover.rs | 2 | ||||
| -rw-r--r-- | crates/ide/src/hover/render.rs | 12 | ||||
| -rw-r--r-- | crates/ide/src/hover/tests.rs | 24 |
3 files changed, 30 insertions, 8 deletions
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index baaf8c80480..b6279295ce3 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -227,7 +227,7 @@ fn hover_simple( return None; } let c = token.parent().and_then(|x| x.parent()).and_then(ast::ClosureExpr::cast)?; - render::closure_expr(sema, c) + render::closure_expr(sema, config, c) }) }); diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs index 078a4de671e..dc03df180ab 100644 --- a/crates/ide/src/hover/render.rs +++ b/crates/ide/src/hover/render.rs @@ -43,13 +43,17 @@ pub(super) fn type_info_of( pub(super) fn closure_expr( sema: &Semantics<'_, RootDatabase>, + config: &HoverConfig, c: ast::ClosureExpr, ) -> Option<HoverResult> { let ty = &sema.type_of_expr(&c.into())?.original; - let layout = ty - .layout(sema.db) - .map(|x| format!(" // size = {}, align = {}", x.size.bytes(), x.align.abi.bytes())) - .unwrap_or_default(); + let layout = if config.memory_layout { + ty.layout(sema.db) + .map(|x| format!(" // size = {}, align = {}", x.size.bytes(), x.align.abi.bytes())) + .unwrap_or_default() + } else { + String::default() + }; let c = ty.as_closure()?; let mut captures = c .captured_items(sema.db) diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 559571a1a41..a79e47dd67d 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -1766,9 +1766,7 @@ pub fn fo$0o() {} #[test] fn test_hover_no_memory_layout() { check_hover_no_memory_layout( - r#" -struct Foo { fiel$0d_a: u8, field_b: i32, field_c: i16 } -"#, + r#"struct Foo { fiel$0d_a: u8, field_b: i32, field_c: i16 }"#, expect![[r#" *field_a* @@ -1781,6 +1779,26 @@ struct Foo { fiel$0d_a: u8, field_b: i32, field_c: i16 } ``` "#]], ); + + check_hover_no_memory_layout( + r#" +//- minicore: copy +fn main() { + let x = 2; + let y = $0|z| x + z; +} +"#, + expect![[r#" + *|* + ```rust + {closure#0} + impl Fn(i32) -> i32 + ``` + + ## Captures + * `x` by immutable borrow + "#]], + ); } #[test] |
