mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 10:45:18 +00:00
33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
#![crate_name = "foo"]
|
|
|
|
pub trait Eq {}
|
|
pub trait Eq2 {}
|
|
|
|
// Checking that "where predicates" and "generics params" are merged.
|
|
//@ has 'foo/trait.T.html'
|
|
//@ has - "//*[@id='tymethod.f']/h4" "fn f<'a, 'b, 'c, T>()where Self: Eq, T: Eq + 'a, 'c: 'b + 'a,"
|
|
pub trait T {
|
|
fn f<'a, 'b, 'c: 'a, T: Eq + 'a>()
|
|
where Self: Eq, Self: Eq, T: Eq, 'c: 'b;
|
|
}
|
|
|
|
// Checking that a duplicated "where predicate" is removed.
|
|
//@ has 'foo/trait.T2.html'
|
|
//@ has - "//*[@id='tymethod.f']/h4" "fn f<T>()where Self: Eq + Eq2, T: Eq2 + Eq,"
|
|
pub trait T2 {
|
|
fn f<T: Eq>()
|
|
where Self: Eq, Self: Eq2, T: Eq2;
|
|
}
|
|
|
|
// Checking that we support empty bounds (we used to crash on empty outlives-bounds).
|
|
// Note that we don't want to hide them since they have a semantic effect.
|
|
// For outlives-bounds, they force the lifetime param to be early-bound instead of late-bound.
|
|
// For trait bounds, it can affect well-formedness (see `ClauseKind::WellFormed`).
|
|
//@ has 'foo/fn.empty.html'
|
|
//@ has - '//pre[@class="rust item-decl"]' "empty<'a, T>()where T:, 'a:,"
|
|
pub fn empty<'a, T>()
|
|
where
|
|
T:,
|
|
'a:,
|
|
{}
|