mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-11 22:43:42 +00:00
Add tests for untested capabilities
This commit is contained in:
parent
548929dc5e
commit
7a63d3f16a
17
tests/ui/associated-type-bounds/higher-ranked.rs
Normal file
17
tests/ui/associated-type-bounds/higher-ranked.rs
Normal file
@ -0,0 +1,17 @@
|
||||
// check-pass
|
||||
|
||||
#![feature(associated_type_bounds)]
|
||||
|
||||
trait A<'a> {
|
||||
type Assoc: ?Sized;
|
||||
}
|
||||
|
||||
impl<'a> A<'a> for () {
|
||||
type Assoc = &'a ();
|
||||
}
|
||||
|
||||
fn hello() -> impl for<'a> A<'a, Assoc: Sized> {
|
||||
()
|
||||
}
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,37 @@
|
||||
// check-pass
|
||||
|
||||
#![feature(associated_type_bounds)]
|
||||
|
||||
trait Trait1 {
|
||||
type Assoc1: Bar;
|
||||
|
||||
fn assoc(self) -> Self::Assoc1;
|
||||
}
|
||||
|
||||
impl Trait1 for () {
|
||||
type Assoc1 = ();
|
||||
fn assoc(self) {}
|
||||
}
|
||||
|
||||
trait Foo {}
|
||||
impl Foo for () {}
|
||||
trait Bar {}
|
||||
impl Bar for () {}
|
||||
|
||||
fn hello() -> impl Trait1<Assoc1: Foo> {
|
||||
()
|
||||
}
|
||||
|
||||
fn world() {
|
||||
// Tests that `Assoc1: Foo` bound in the RPIT doesn't disqualify
|
||||
// the `Assoc1: Bar` bound in the item, as a nested RPIT desugaring
|
||||
// would do.
|
||||
|
||||
fn is_foo(_: impl Foo) {}
|
||||
is_foo(hello().assoc());
|
||||
|
||||
fn is_bar(_: impl Bar) {}
|
||||
is_bar(hello().assoc());
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user