diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/ui/issues/issue-56229.rs | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/issues/issue-56229.rs')
-rw-r--r-- | tests/ui/issues/issue-56229.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-56229.rs b/tests/ui/issues/issue-56229.rs new file mode 100644 index 000000000..9e5897b98 --- /dev/null +++ b/tests/ui/issues/issue-56229.rs @@ -0,0 +1,35 @@ +// check-pass + +trait Mirror { + type Other; +} + +#[derive(Debug)] +struct Even(usize); +struct Odd; + +impl Mirror for Even { + type Other = Odd; +} + +impl Mirror for Odd { + type Other = Even; +} + +trait Dyn<T: Mirror>: AsRef<<T as Mirror>::Other> {} + +impl Dyn<Odd> for Even {} + +impl AsRef<Even> for Even { + fn as_ref(&self) -> &Even { + self + } +} + +fn code<T: Mirror>(d: &dyn Dyn<T>) -> &T::Other { + d.as_ref() +} + +fn main() { + println!("{:?}", code(&Even(22))); +} |