Rollup merge of #54848 - davidtwco:issue-52663-trait-object, r=nikomatsakis
Fixes #47311. r? @nrc
This commit is contained in:
commit
a267b3a9ff
4 changed files with 226 additions and 39 deletions
27
src/test/ui/nll/issue-52663-trait-object.rs
Normal file
27
src/test/ui/nll/issue-52663-trait-object.rs
Normal 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
|
||||
}
|
||||
13
src/test/ui/nll/issue-52663-trait-object.stderr
Normal file
13
src/test/ui/nll/issue-52663-trait-object.stderr
Normal 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`.
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue