diff --git a/src/test/compile-fail/issue-14285.rs b/src/test/compile-fail/issue-14285.rs new file mode 100644 index 0000000000000..d5e608ecae303 --- /dev/null +++ b/src/test/compile-fail/issue-14285.rs @@ -0,0 +1,25 @@ +// Copyright 2012-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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +trait Foo {} + +struct A; + +impl Foo for A {} + +struct B<'a>(&'a Foo); + +fn foo<'a>(a: &Foo) -> B<'a> { + B(a) //~ ERROR cannot infer an appropriate lifetime +} + +fn main() { + let _test = foo(&A); +} diff --git a/src/test/compile-fail/isuue-12470.rs b/src/test/compile-fail/isuue-12470.rs new file mode 100644 index 0000000000000..18bfb7abe6c86 --- /dev/null +++ b/src/test/compile-fail/isuue-12470.rs @@ -0,0 +1,42 @@ +// Copyright 2012-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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +trait X { + fn get_i(&self) -> int; +} + + +struct B { + i: int +} + +impl X for B { + fn get_i(&self) -> int { + self.i + } +} + +struct A<'a> { + p: &'a X +} + +fn make_a<'a>(p: &'a X) -> A<'a> { + A { p: p } +} + +fn make_make_a() -> A { + let b: Box = box B {i:1}; + let bb: &B = b; //~ ERROR does not live long enough + make_a(bb) +} + +fn main() { + let _a = make_make_a(); +}