diff options
| author | Michael Goulet <michael@errs.io> | 2025-03-27 17:44:43 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-03-27 17:45:02 +0000 |
| commit | c00343a5b42dfe228f177273f37c6b7e4f953bb8 (patch) | |
| tree | 934df59a358a95a7a0d15c4955a5460274810811 /tests | |
| parent | ecb170afc878648c3ae355dbd596c8e4b6f7ebdc (diff) | |
| download | rust-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.rs | 36 |
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); +} |
