about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2025-03-27 17:44:43 +0000
committerMichael Goulet <michael@errs.io>2025-03-27 17:45:02 +0000
commitc00343a5b42dfe228f177273f37c6b7e4f953bb8 (patch)
tree934df59a358a95a7a0d15c4955a5460274810811 /tests
parentecb170afc878648c3ae355dbd596c8e4b6f7ebdc (diff)
downloadrust-c00343a5b42dfe228f177273f37c6b7e4f953bb8.tar.gz
rust-c00343a5b42dfe228f177273f37c6b7e4f953bb8.zip
Do not trim paths in MIR validator
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/mir/inline-causes-trimmed-paths.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/ui/mir/inline-causes-trimmed-paths.rs b/tests/ui/mir/inline-causes-trimmed-paths.rs
new file mode 100644
index 00000000000..d626ab4e1d9
--- /dev/null
+++ b/tests/ui/mir/inline-causes-trimmed-paths.rs
@@ -0,0 +1,36 @@
+//@ build-pass
+//@ compile-flags: -Zinline-mir
+
+trait Storage {
+    type Buffer: ?Sized;
+}
+
+struct Array<const N: usize>;
+impl<const N: usize> Storage for Array<N> {
+    type Buffer = [(); N];
+}
+
+struct Slice;
+impl Storage for Slice {
+    type Buffer = [()];
+}
+
+struct Wrap<S: Storage> {
+    _b: S::Buffer,
+}
+
+fn coerce<const N: usize>(this: &Wrap<Array<N>>) -> &Wrap<Slice>
+where
+    Array<N>: Storage,
+{
+    coerce_again(this)
+}
+
+fn coerce_again<const N: usize>(this: &Wrap<Array<N>>) -> &Wrap<Slice> {
+    this
+}
+
+fn main() {
+    let inner: Wrap<Array<1>> = Wrap { _b: [(); 1] };
+    let _: &Wrap<Slice> = coerce(&inner);
+}