summaryrefslogtreecommitdiffstats
path: root/src/test/ui/nll/ty-outlives/issue-55756.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/nll/ty-outlives/issue-55756.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/nll/ty-outlives/issue-55756.rs')
-rw-r--r--src/test/ui/nll/ty-outlives/issue-55756.rs37
1 files changed, 0 insertions, 37 deletions
diff --git a/src/test/ui/nll/ty-outlives/issue-55756.rs b/src/test/ui/nll/ty-outlives/issue-55756.rs
deleted file mode 100644
index e1a3bc3c4..000000000
--- a/src/test/ui/nll/ty-outlives/issue-55756.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-// Regression test for #55756.
-//
-// In this test, the result of `self.callee` is a projection `<D as
-// Database<'?0>>::Guard`. As it may contain a destructor, the dropck
-// rules require that this type outlivess the scope of `state`. Unfortunately,
-// our region inference is not smart enough to figure out how to
-// translate a requirement like
-//
-// <D as Database<'0>>::guard: 'r
-//
-// into a requirement that `'0: 'r` -- in particular, it fails to do
-// so because it *also* knows that `<D as Database<'a>>::Guard: 'a`
-// from the trait definition. Faced with so many choices, the current
-// solver opts to do nothing.
-//
-// Fixed by tweaking the solver to recognize that the constraint from
-// the environment duplicates one from the trait.
-//
-// check-pass
-
-#![crate_type="lib"]
-
-pub trait Database<'a> {
- type Guard: 'a;
-}
-
-pub struct Stateful<'a, D: 'a>(&'a D);
-
-impl<'b, D: for <'a> Database<'a>> Stateful<'b, D> {
- pub fn callee<'a>(&'a self) -> <D as Database<'a>>::Guard {
- unimplemented!()
- }
- pub fn caller<'a>(&'a self) -> <D as Database<'a>>::Guard {
- let state = self.callee();
- unimplemented!()
- }
-}