Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/invalid_cast.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/invalid_cast.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/invalid_cast.rs b/crates/ide-diagnostics/src/handlers/invalid_cast.rs
index c7cdcf4982..5730508436 100644
--- a/crates/ide-diagnostics/src/handlers/invalid_cast.rs
+++ b/crates/ide-diagnostics/src/handlers/invalid_cast.rs
@@ -1129,4 +1129,39 @@ fn main() {
"#,
);
}
+
+ #[test]
+ fn regression_18682() {
+ check_diagnostics(
+ r#"
+//- minicore: coerce_unsized
+struct Flexible {
+ body: [u8],
+}
+
+trait Field {
+ type Type: ?Sized;
+}
+
+impl Field for Flexible {
+ type Type = [u8];
+}
+
+trait KnownLayout {
+ type MaybeUninit: ?Sized;
+}
+
+
+impl<T> KnownLayout for [T] {
+ type MaybeUninit = [T];
+}
+
+struct ZerocopyKnownLayoutMaybeUninit(<<Flexible as Field>::Type as KnownLayout>::MaybeUninit);
+
+fn test(ptr: *mut [u8]) -> *mut ZerocopyKnownLayoutMaybeUninit {
+ ptr as *mut _
+}
+"#,
+ );
+ }
}