Skip to content

Commit

Permalink
Auto merge of #15022 - HKalbasi:nightly-mir-eval-panic, r=HKalbasi
Browse files Browse the repository at this point in the history
Fix panic in displaying unsized structs
  • Loading branch information
bors committed Jun 10, 2023
2 parents 5f8a6f6 + 1dd76e8 commit 49b4f15
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 1 deletion.
15 changes: 14 additions & 1 deletion crates/hir-ty/src/display.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
//! HIR back into source code, and just displaying them for debugging/testing
//! purposes.

use std::fmt::{self, Debug};
use std::{
fmt::{self, Debug},
mem::size_of,
};

use base_db::CrateId;
use chalk_ir::{BoundVar, TyKind};
Expand Down Expand Up @@ -552,6 +555,16 @@ fn render_const_scalar(
f.write_str("&")?;
render_const_scalar(f, bytes, memory_map, t)
}
TyKind::Adt(adt, _) if b.len() == 2 * size_of::<usize>() => match adt.0 {
hir_def::AdtId::StructId(s) => {
let data = f.db.struct_data(s);
write!(f, "&{}", data.name.display(f.db.upcast()))?;
Ok(())
}
_ => {
return f.write_str("<unsized-enum-or-union>");
}
},
_ => {
let addr = usize::from_le_bytes(match b.try_into() {
Ok(b) => b,
Expand Down
20 changes: 20 additions & 0 deletions crates/ide/src/hover/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4525,6 +4525,26 @@ const FOO$0: Tree = {
```
"#]],
);
// FIXME: Show the data of unsized structs
check(
r#"
//- minicore: slice, index, coerce_unsized, transmute
#[repr(transparent)]
struct S<T: ?Sized>(T);
const FOO$0: &S<[u8]> = core::mem::transmute::<&[u8], _>(&[1, 2, 3]);
"#,
expect![[r#"
*FOO*
```rust
test
```
```rust
const FOO: &S<[u8]> = &S
```
"#]],
);
}

#[test]
Expand Down

0 comments on commit 49b4f15

Please sign in to comment.