From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- .../bugs/hrtb-implied-1.rs | 35 --------- .../bugs/hrtb-implied-1.stderr | 20 ------ .../bugs/hrtb-implied-2.rs | 40 ----------- .../bugs/hrtb-implied-2.stderr | 22 ------ .../bugs/hrtb-implied-3.rs | 23 ------ .../bugs/hrtb-implied-3.stderr | 22 ------ .../generic-associated-types/bugs/issue-100013.rs | 39 ---------- .../bugs/issue-100013.stderr | 82 ---------------------- .../generic-associated-types/bugs/issue-80626.rs | 12 ---- .../generic-associated-types/bugs/issue-87735.rs | 44 ------------ .../bugs/issue-87735.stderr | 9 --- .../generic-associated-types/bugs/issue-87755.rs | 19 ----- .../bugs/issue-87755.stderr | 9 --- .../generic-associated-types/bugs/issue-87803.rs | 25 ------- .../bugs/issue-87803.stderr | 12 ---- .../generic-associated-types/bugs/issue-88382.rs | 29 -------- .../bugs/issue-88382.stderr | 22 ------ .../generic-associated-types/bugs/issue-88460.rs | 29 -------- .../bugs/issue-88460.stderr | 21 ------ .../generic-associated-types/bugs/issue-88526.rs | 33 --------- .../bugs/issue-88526.stderr | 9 --- .../generic-associated-types/bugs/issue-91762.rs | 29 -------- .../bugs/issue-91762.stderr | 14 ---- 23 files changed, 599 deletions(-) delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-100013.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-100013.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-80626.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87735.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87735.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87755.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87755.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87803.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-87803.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88382.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88382.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88460.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88460.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88526.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-88526.stderr delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-91762.rs delete mode 100644 src/test/ui/generic-associated-types/bugs/issue-91762.stderr (limited to 'src/test/ui/generic-associated-types/bugs') diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs b/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs deleted file mode 100644 index 719d1bd5a..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.rs +++ /dev/null @@ -1,35 +0,0 @@ -// check-fail -// known-bug - -// This gives us problems because `for<'a> I::Item<'a>: Debug` should mean "for -// all 'a where I::Item<'a> is WF", but really means "for all 'a possible" - -use std::fmt::Debug; - -pub trait LendingIterator { - type Item<'this> - where - Self: 'this; -} - -pub struct WindowsMut<'x> { - slice: &'x (), -} - -impl<'y> LendingIterator for WindowsMut<'y> { - type Item<'this> = &'this mut () where 'y: 'this; -} - -fn print_items(_iter: I) -where - I: LendingIterator, - for<'a> I::Item<'a>: Debug, -{ -} - -fn main() { - let slice = &mut (); - //~^ temporary value dropped while borrowed - let windows = WindowsMut { slice }; - print_items::>(windows); -} diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr b/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr deleted file mode 100644 index 1c9abc4e8..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-1.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error[E0716]: temporary value dropped while borrowed - --> $DIR/hrtb-implied-1.rs:31:22 - | -LL | let slice = &mut (); - | ^^ creates a temporary value which is freed while still in use -... -LL | print_items::>(windows); - | -------------------------------------- argument requires that borrow lasts for `'static` -LL | } - | - temporary value is freed at the end of this statement - | -note: due to current limitations in the borrow checker, this implies a `'static` lifetime - --> $DIR/hrtb-implied-1.rs:26:26 - | -LL | for<'a> I::Item<'a>: Debug, - | ^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0716`. diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs b/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs deleted file mode 100644 index 8e6c5348e..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.rs +++ /dev/null @@ -1,40 +0,0 @@ -// check-fail -// known-bug - -// This gives us problems because `for<'a> I::Item<'a>: Debug` should mean "for -// all 'a where I::Item<'a> is WF", but really means "for all 'a possible" - -trait LendingIterator: Sized { - type Item<'a> - where - Self: 'a; - fn next(&mut self) -> Self::Item<'_>; -} -fn fails(iter: &mut I, f: F) -> bool -where - F: FnMut(I::Item<'_>), -{ - let mut iter2 = Eat(iter, f); - let _next = iter2.next(); - //~^ borrowed data escapes - true -} -impl LendingIterator for &mut I { - type Item<'a> = I::Item<'a> where Self:'a; - fn next(&mut self) -> Self::Item<'_> { - (**self).next() - } -} - -struct Eat(I, F); -impl Iterator for Eat -where - F: FnMut(I::Item<'_>), -{ - type Item = (); - fn next(&mut self) -> Option { - None - } -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr b/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr deleted file mode 100644 index 1ee270398..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-2.stderr +++ /dev/null @@ -1,22 +0,0 @@ -error[E0521]: borrowed data escapes outside of function - --> $DIR/hrtb-implied-2.rs:18:17 - | -LL | fn fails(iter: &mut I, f: F) -> bool - | ---- - let's call the lifetime of this reference `'1` - | | - | `iter` is a reference that is only valid in the function body -... -LL | let _next = iter2.next(); - | ^^^^^^^^^^^^ - | | - | `iter` escapes the function body here - | argument requires that `'1` must outlive `'static` - | - = note: requirement occurs because of a mutable reference to `Eat<&mut I, F>` - = note: mutable references are invariant over their type parameter - = help: see for more information about variance - = note: due to current limitations in the borrow checker, this implies a `'static` lifetime - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0521`. diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs b/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs deleted file mode 100644 index bc9e6c8ae..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.rs +++ /dev/null @@ -1,23 +0,0 @@ -trait LendingIterator { - type Item<'a> - where - Self: 'a; -} - -impl LendingIterator for &str { - type Item<'a> = () where Self:'a; -} - -fn trivial_bound(_: I) -where - I: LendingIterator, - for<'a> I::Item<'a>: Sized, -{ -} - -fn fails(iter: &str) { - trivial_bound(iter); - //~^ borrowed data escapes -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr b/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr deleted file mode 100644 index c67e02437..000000000 --- a/src/test/ui/generic-associated-types/bugs/hrtb-implied-3.stderr +++ /dev/null @@ -1,22 +0,0 @@ -error[E0521]: borrowed data escapes outside of function - --> $DIR/hrtb-implied-3.rs:19:5 - | -LL | fn fails(iter: &str) { - | ---- - let's call the lifetime of this reference `'1` - | | - | `iter` is a reference that is only valid in the function body -LL | trivial_bound(iter); - | ^^^^^^^^^^^^^^^^^^^ - | | - | `iter` escapes the function body here - | argument requires that `'1` must outlive `'static` - | -note: due to current limitations in the borrow checker, this implies a `'static` lifetime - --> $DIR/hrtb-implied-3.rs:14:26 - | -LL | for<'a> I::Item<'a>: Sized, - | ^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0521`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.rs b/src/test/ui/generic-associated-types/bugs/issue-100013.rs deleted file mode 100644 index fc4e47a3b..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-100013.rs +++ /dev/null @@ -1,39 +0,0 @@ -// check-fail -// known-bug -// edition: 2021 - -// We really should accept this, but we need implied bounds between the regions -// in a generator interior. - -pub trait FutureIterator { - type Future<'s, 'cx>: Send - where - 's: 'cx; -} - -fn call() -> impl Send { - async { // a generator checked for autotrait impl `Send` - //~^ lifetime bound not satisfied - let x = None::>; // a type referencing GAT - async {}.await; // a yield point - } -} - -fn call2<'a, 'b, I: FutureIterator>() -> impl Send { - async { // a generator checked for autotrait impl `Send` - //~^ lifetime bound not satisfied - let x = None::>; // a type referencing GAT - //~^ lifetime may not live long enough - async {}.await; // a yield point - } -} - -fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send { - async { // a generator checked for autotrait impl `Send` - //~^ lifetime bound not satisfied - let x = None::>; // a type referencing GAT - async {}.await; // a yield point - } -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-100013.stderr b/src/test/ui/generic-associated-types/bugs/issue-100013.stderr deleted file mode 100644 index 72ae288dc..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-100013.stderr +++ /dev/null @@ -1,82 +0,0 @@ -error: lifetime bound not satisfied - --> $DIR/issue-100013.rs:15:5 - | -LL | / async { // a generator checked for autotrait impl `Send` -LL | | -LL | | let x = None::>; // a type referencing GAT -LL | | async {}.await; // a yield point -LL | | } - | |_____^ - | -note: the lifetime defined here... - --> $DIR/issue-100013.rs:17:38 - | -LL | let x = None::>; // a type referencing GAT - | ^^ -note: ...must outlive the lifetime defined here - --> $DIR/issue-100013.rs:17:34 - | -LL | let x = None::>; // a type referencing GAT - | ^^ - = note: this is a known limitation that will be removed in the future (see issue #100013 for more information) - -error: lifetime bound not satisfied - --> $DIR/issue-100013.rs:23:5 - | -LL | / async { // a generator checked for autotrait impl `Send` -LL | | -LL | | let x = None::>; // a type referencing GAT -LL | | -LL | | async {}.await; // a yield point -LL | | } - | |_____^ - | -note: the lifetime defined here... - --> $DIR/issue-100013.rs:22:14 - | -LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send { - | ^^ -note: ...must outlive the lifetime defined here - --> $DIR/issue-100013.rs:22:10 - | -LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send { - | ^^ - = note: this is a known limitation that will be removed in the future (see issue #100013 for more information) - -error: lifetime may not live long enough - --> $DIR/issue-100013.rs:25:17 - | -LL | fn call2<'a, 'b, I: FutureIterator>() -> impl Send { - | -- -- lifetime `'b` defined here - | | - | lifetime `'a` defined here -... -LL | let x = None::>; // a type referencing GAT - | ^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'b` - | - = help: consider adding the following bound: `'a: 'b` - -error: lifetime bound not satisfied - --> $DIR/issue-100013.rs:32:5 - | -LL | / async { // a generator checked for autotrait impl `Send` -LL | | -LL | | let x = None::>; // a type referencing GAT -LL | | async {}.await; // a yield point -LL | | } - | |_____^ - | -note: the lifetime defined here... - --> $DIR/issue-100013.rs:31:18 - | -LL | fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send { - | ^^ -note: ...must outlive the lifetime defined here - --> $DIR/issue-100013.rs:31:10 - | -LL | fn call3<'a: 'b, 'b, I: FutureIterator>() -> impl Send { - | ^^ - = note: this is a known limitation that will be removed in the future (see issue #100013 for more information) - -error: aborting due to 4 previous errors - diff --git a/src/test/ui/generic-associated-types/bugs/issue-80626.rs b/src/test/ui/generic-associated-types/bugs/issue-80626.rs deleted file mode 100644 index d6e18010f..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-80626.rs +++ /dev/null @@ -1,12 +0,0 @@ -// check-pass - -trait Allocator { - type Allocated; -} - -enum LinkedList { - Head, - Next(A::Allocated), -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-87735.rs b/src/test/ui/generic-associated-types/bugs/issue-87735.rs deleted file mode 100644 index 80737a798..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87735.rs +++ /dev/null @@ -1,44 +0,0 @@ -// check-fail -// known-bug: #87735, #88526 - -// This should pass, but we need an extension of implied bounds (probably). - -pub trait AsRef2 { - type Output<'a> where Self: 'a; - - fn as_ref2<'a>(&'a self) -> Self::Output<'a>; -} - -impl AsRef2 for Vec { - type Output<'a> = &'a [T] where Self: 'a; - - fn as_ref2<'a>(&'a self) -> Self::Output<'a> { - &self[..] - } -} - -#[derive(Debug)] -struct Foo(T); -#[derive(Debug)] -struct FooRef<'a, U>(&'a [U]); - -impl<'b, T, U> AsRef2 for Foo -where - // * `for<'b, 'c> T: AsRef2 = &'c [U]>>` does not work - // - // * `U` is unconstrained but should be allowed in this context because `Output` is - // an associated type - T: AsRef2 = &'b [U]>, - U: 'b -{ - type Output<'a> = FooRef<'a, U> where Self: 'a; - - fn as_ref2<'a>(&'a self) -> Self::Output<'a> { - FooRef(self.0.as_ref2()) - } -} - -fn main() { - let foo = Foo(vec![1, 2, 3]); - dbg!(foo.as_ref2()); -} diff --git a/src/test/ui/generic-associated-types/bugs/issue-87735.stderr b/src/test/ui/generic-associated-types/bugs/issue-87735.stderr deleted file mode 100644 index ebe2054ce..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87735.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0207]: the type parameter `U` is not constrained by the impl trait, self type, or predicates - --> $DIR/issue-87735.rs:25:13 - | -LL | impl<'b, T, U> AsRef2 for Foo - | ^ unconstrained type parameter - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0207`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-87755.rs b/src/test/ui/generic-associated-types/bugs/issue-87755.rs deleted file mode 100644 index cda722d2f..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87755.rs +++ /dev/null @@ -1,19 +0,0 @@ -// check-fail -// known-bug: #87755 - -// This should pass. - -use std::fmt::Debug; - -trait Foo { - type Ass where Self::Ass: Debug; -} - -#[derive(Debug)] -struct Bar; - -impl Foo for Bar { - type Ass = Bar; -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-87755.stderr b/src/test/ui/generic-associated-types/bugs/issue-87755.stderr deleted file mode 100644 index 5e94db9b0..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87755.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0275]: overflow evaluating the requirement `::Ass == _` - --> $DIR/issue-87755.rs:16:16 - | -LL | type Ass = Bar; - | ^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0275`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-87803.rs b/src/test/ui/generic-associated-types/bugs/issue-87803.rs deleted file mode 100644 index 56237e387..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87803.rs +++ /dev/null @@ -1,25 +0,0 @@ -// check-fail -// known-bug: #87803 - -// This should pass, but using a type alias vs a reference directly -// changes late-bound -> early-bound. - -trait Scanner { - type Input<'a>; - type Token<'a>; - - fn scan<'a>(&mut self, i : Self::Input<'a>) -> Self::Token<'a>; -} - -struct IdScanner(); - -impl Scanner for IdScanner { - type Input<'a> = &'a str; - type Token<'a> = &'a str; - - fn scan<'a>(&mut self, s : &'a str) -> &'a str { - s - } -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-87803.stderr b/src/test/ui/generic-associated-types/bugs/issue-87803.stderr deleted file mode 100644 index fe2abdedb..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-87803.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0195]: lifetime parameters or bounds on method `scan` do not match the trait declaration - --> $DIR/issue-87803.rs:20:12 - | -LL | fn scan<'a>(&mut self, i : Self::Input<'a>) -> Self::Token<'a>; - | ---- lifetimes in impl do not match this method in trait -... -LL | fn scan<'a>(&mut self, s : &'a str) -> &'a str { - | ^^^^ lifetimes do not match method in trait - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0195`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-88382.rs b/src/test/ui/generic-associated-types/bugs/issue-88382.rs deleted file mode 100644 index 8f8cc4523..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88382.rs +++ /dev/null @@ -1,29 +0,0 @@ -// check-fail -// known-bug: #88382 - -// This should pass, but has a missed normalization due to HRTB. - -trait Iterable { - type Iterator<'a> where Self: 'a; - fn iter(&self) -> Self::Iterator<'_>; -} - -struct SomeImplementation(); - -impl Iterable for SomeImplementation { - type Iterator<'a> = std::iter::Empty; - fn iter(&self) -> Self::Iterator<'_> { - std::iter::empty() - } -} - -fn do_something(i: I, mut f: impl for<'a> Fn(&mut I::Iterator<'a>)) { - f(&mut i.iter()); -} - -fn main() { - do_something(SomeImplementation(), |_| ()); - do_something(SomeImplementation(), test); -} - -fn test<'a, I: Iterable>(_: &mut I::Iterator<'a>) {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-88382.stderr b/src/test/ui/generic-associated-types/bugs/issue-88382.stderr deleted file mode 100644 index a9a70bb71..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88382.stderr +++ /dev/null @@ -1,22 +0,0 @@ -error[E0631]: type mismatch in function arguments - --> $DIR/issue-88382.rs:26:40 - | -LL | do_something(SomeImplementation(), test); - | ------------ ^^^^ expected due to this - | | - | required by a bound introduced by this call -... -LL | fn test<'a, I: Iterable>(_: &mut I::Iterator<'a>) {} - | ------------------------------------------------- found signature defined here - | - = note: expected function signature `for<'a> fn(&'a mut std::iter::Empty) -> _` - found function signature `for<'a, 'b> fn(&'b mut <_ as Iterable>::Iterator<'a>) -> _` -note: required by a bound in `do_something` - --> $DIR/issue-88382.rs:20:48 - | -LL | fn do_something(i: I, mut f: impl for<'a> Fn(&mut I::Iterator<'a>)) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `do_something` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0631`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-88460.rs b/src/test/ui/generic-associated-types/bugs/issue-88460.rs deleted file mode 100644 index 224e696ad..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88460.rs +++ /dev/null @@ -1,29 +0,0 @@ -// check-fail -// known-bug: #88460 - -// This should pass, but has a missed normalization due to HRTB. - -pub trait Marker {} - -pub trait Trait { - type Assoc<'a>; -} - -fn test(value: T) -where - T: Trait, - for<'a> T::Assoc<'a>: Marker, -{ -} - -impl Marker for () {} - -struct Foo; - -impl Trait for Foo { - type Assoc<'a> = (); -} - -fn main() { - test(Foo); -} diff --git a/src/test/ui/generic-associated-types/bugs/issue-88460.stderr b/src/test/ui/generic-associated-types/bugs/issue-88460.stderr deleted file mode 100644 index 6612c4b49..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88460.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error[E0277]: the trait bound `for<'a> <_ as Trait>::Assoc<'a>: Marker` is not satisfied - --> $DIR/issue-88460.rs:28:10 - | -LL | test(Foo); - | ---- ^^^ the trait `for<'a> Marker` is not implemented for `<_ as Trait>::Assoc<'a>` - | | - | required by a bound introduced by this call - | - = help: the trait `Marker` is implemented for `()` -note: required by a bound in `test` - --> $DIR/issue-88460.rs:15:27 - | -LL | fn test(value: T) - | ---- required by a bound in this -... -LL | for<'a> T::Assoc<'a>: Marker, - | ^^^^^^ required by this bound in `test` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-88526.rs b/src/test/ui/generic-associated-types/bugs/issue-88526.rs deleted file mode 100644 index 99397744f..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88526.rs +++ /dev/null @@ -1,33 +0,0 @@ -// check-fail -// known-bug: #88526 - -// This should pass, but requires more logic. - -trait A { - type I<'a>; -} - -pub struct TestA -{ - f: F, -} - -impl A for TestA { - type I<'a> = &'a F; -} - -struct TestB -{ - q: Q, - f: F, -} - -impl<'q, Q, I, F> A for TestB -where - Q: A = &'q I>, - F: Fn(I), -{ - type I<'a> = (); -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-88526.stderr b/src/test/ui/generic-associated-types/bugs/issue-88526.stderr deleted file mode 100644 index 56857c655..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-88526.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0207]: the type parameter `I` is not constrained by the impl trait, self type, or predicates - --> $DIR/issue-88526.rs:25:13 - | -LL | impl<'q, Q, I, F> A for TestB - | ^ unconstrained type parameter - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0207`. diff --git a/src/test/ui/generic-associated-types/bugs/issue-91762.rs b/src/test/ui/generic-associated-types/bugs/issue-91762.rs deleted file mode 100644 index dec668bec..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-91762.rs +++ /dev/null @@ -1,29 +0,0 @@ -// check-fail -// known-bug - -// We almost certainly want this to pass, but -// it's particularly difficult currently, because we need a way of specifying -// that `::With = Self` without using that when we have -// a `U`. See `https://github.com/rust-lang/rust/pull/92728` for a (hacky) -// solution. This might be better to just wait for Chalk. - -pub trait Functor { - type With; - - fn fmap(this: Self::With) -> Self::With; -} - -pub trait FunctorExt: Sized { - type Base: Functor = Self>; - - fn fmap(self) { - let arg: ::With; - let ret: ::With; - - arg = self; - ret = ::fmap(arg); - //~^ type annotations needed - } -} - -fn main() {} diff --git a/src/test/ui/generic-associated-types/bugs/issue-91762.stderr b/src/test/ui/generic-associated-types/bugs/issue-91762.stderr deleted file mode 100644 index 1272c8b8a..000000000 --- a/src/test/ui/generic-associated-types/bugs/issue-91762.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0282]: type annotations needed - --> $DIR/issue-91762.rs:24:15 - | -LL | ret = ::fmap(arg); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the associated function `fmap` - | -help: consider specifying the generic arguments - | -LL | ret = ::fmap::(arg); - | ++++++++ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0282`. -- cgit v1.2.3