1 // Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
11 // compile-flags: -Z borrowck=compare
13 #![feature(generators, generator_trait)]
15 use std::ops::{GeneratorState, Generator};
18 unsafe fn borrow_local_inline() {
19 // Not OK to yield with a borrow of a temporary.
21 // (This error occurs because the region shows up in the type of
22 // `b` and gets extended by region inference.)
25 //~^ ERROR borrow may still be in use when generator yields (Ast)
26 //~| ERROR borrow may still be in use when generator yields (Mir)
33 unsafe fn borrow_local_inline_done() {
34 // No error here -- `a` is not in scope at the point of `yield`.
44 unsafe fn borrow_local() {
45 // Not OK to yield with a borrow of a temporary.
47 // (This error occurs because the region shows up in the type of
48 // `b` and gets extended by region inference.)
53 //~^ ERROR borrow may still be in use when generator yields (Ast)
54 //~| ERROR borrow may still be in use when generator yields (Mir)