rust/src/test/ui/regions/regions-outlives-projection-trait-def.rs
Felix S. Klock II a2e090624e Removed #[rustc_error] from tests that are all // compile-pass.
I also added `// skip-codegen` to each one, to address potential concerns
that this change would otherwise slow down our test suite spending time
generating code for files that are really just meant to be checks of
compiler diagnostics.

(However, I will say: My preference is to not use `// skip-codegen` if
one can avoid it. We can use all the testing of how we drive LLVM that
we can get...)

(Updated post rebase.)
2018-11-07 13:09:52 +01:00

32 lines
1.0 KiB
Rust

// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// Test that `<F as Foo<'a>>::Type: 'b`, where `trait Foo<'a> { Type:
// 'a; }`, does not require that `F: 'b`.
// compile-pass
#![allow(dead_code)]
trait SomeTrait<'a> {
type Type: 'a;
}
impl<'a: 'c, 'c, T> SomeTrait<'a> for &'c T where T: SomeTrait<'a> {
type Type = <T as SomeTrait<'a>>::Type;
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
// |
// Note that this type must outlive 'a, due to the trait
// definition. If we fall back to OutlivesProjectionComponents
// here, then we would require that `T:'a`, which is too strong.
}
fn main() { }