| // Test that our leak-check is not smart enough to take implied bounds |
| // into account (yet). Here we have two types that look like they |
| // should not be equivalent, but because of the rules on implied |
| // bounds we ought to know that, in fact, `'a = 'b` must always hold, |
| // and hence they are. |
| // |
| // Rustc can't figure this out and hence it accepts the impls but |
| // gives a future-compatibility warning (because we'd like to make |
| // this an error someday). |
| // |
| // Note that while we would like to make this a hard error, we also |
| // give the same warning for `coherence-wasm-bindgen.rs`, which ought |
| // to be accepted. |
| |
| #![deny(coherence_leak_check)] |
| |
| trait Trait {} |
| |
| impl Trait for for<'a, 'b> fn(&'a &'b u32, &'b &'a u32) -> &'b u32 {} |
| |
| impl Trait for for<'c> fn(&'c &'c u32, &'c &'c u32) -> &'c u32 { |
| //~^ ERROR conflicting implementations |
| //~| WARN the behavior may change in a future release |
| } |
| |
| fn main() {} |