Rollup merge of #54848 - davidtwco:issue-52663-trait-object, r=nikomatsakis

Fixes #47311.
r? @nrc
This commit is contained in:
Manish Goregaokar 2018-10-10 15:58:38 -07:00
commit a267b3a9ff
4 changed files with 226 additions and 39 deletions

View file

@ -0,0 +1,27 @@
// 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.
#![feature(box_syntax)]
#![feature(nll)]
trait Foo { fn get(&self); }
impl<A> Foo for A {
fn get(&self) { }
}
fn main() {
let _ = {
let tmp0 = 3;
let tmp1 = &tmp0;
box tmp1 as Box<Foo + '_>
};
//~^^^ ERROR `tmp0` does not live long enough
}

View file

@ -0,0 +1,13 @@
error[E0597]: `tmp0` does not live long enough
--> $DIR/issue-52663-trait-object.rs:23:20
|
LL | let tmp1 = &tmp0;
| ^^^^^ borrowed value does not live long enough
LL | box tmp1 as Box<Foo + '_>
| ------------------------- borrow later captured here by trait object
LL | };
| - `tmp0` dropped here while still borrowed
error: aborting due to previous error
For more information about this error, try `rustc --explain E0597`.

View file

@ -4,7 +4,7 @@ error[E0597]: `tmp0` does not live long enough
LL | let tmp1 = &tmp0;
| ^^^^^ borrowed value does not live long enough
LL | repeater3(tmp1)
| --------------- borrow later used here
| --------------- borrow later captured here by trait object
LL | };
| - `tmp0` dropped here while still borrowed