summaryrefslogtreecommitdiffstats
path: root/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs')
-rw-r--r--src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs27
1 files changed, 0 insertions, 27 deletions
diff --git a/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs b/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs
deleted file mode 100644
index 33b746c5e..000000000
--- a/src/test/ui/implied-bounds/assoc-ty-wf-used-to-get-assoc-ty.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-// Test for a less than ideal interaction of implied bounds and normalization.
-trait Tr {
- type Ty;
-}
-
-impl<T: 'static> Tr for T {
- type Ty = &'static T;
-}
-
-// `<&'a u8 as Tr>::Ty` should cause an error because `&'a u8: Tr` doesn't hold for
-// all possible 'a. However, we consider normalized types for implied bounds.
-//
-// We normalize this projection to `&'static &'a u8` and add a nested `&'a u8: 'static`
-// bound. This bound is then proven using the implied bounds for `&'static &'a u8` which
-// we only get by normalizing in the first place.
-fn test<'a>(x: &'a u8, _wf: <&'a u8 as Tr>::Ty) -> &'static u8 { x }
-
-fn main() {
- // This works as we have 'static references due to promotion.
- let _: &'static u8 = test(&3, &&3);
- // This causes an error because the projection requires 'a to be 'static.
- // It would be unsound if this compiled.
- let x: u8 = 3;
- let _: &'static u8 = test(&x, &&3);
- //~^ ERROR `x` does not live long enough
-
-}