mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 03:03:40 +00:00
Make yield_in_scope_for_expr
work with patterns. Fixes #47758
This commit is contained in:
parent
ad058cfafe
commit
dd3fa07a52
@ -471,6 +471,9 @@ impl<'tcx> Visitor<'tcx> for ExprLocatorVisitor {
|
||||
|
||||
self.expr_and_pat_count += 1;
|
||||
|
||||
if pat.id == self.id {
|
||||
self.result = Some(self.expr_and_pat_count);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_expr(&mut self, expr: &'tcx Expr) {
|
||||
|
23
src/test/ui/generator/pattern-borrow.rs
Normal file
23
src/test/ui/generator/pattern-borrow.rs
Normal file
@ -0,0 +1,23 @@
|
||||
// Copyright 2018 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(generators)]
|
||||
|
||||
enum Test { A(i32), B, }
|
||||
|
||||
fn main() { }
|
||||
|
||||
fn fun(test: Test) {
|
||||
move || {
|
||||
if let Test::A(ref _a) = test { //~ ERROR borrow may still be in use when generator yields
|
||||
yield ();
|
||||
}
|
||||
};
|
||||
}
|
10
src/test/ui/generator/pattern-borrow.stderr
Normal file
10
src/test/ui/generator/pattern-borrow.stderr
Normal file
@ -0,0 +1,10 @@
|
||||
error[E0626]: borrow may still be in use when generator yields
|
||||
--> $DIR/pattern-borrow.rs:19:24
|
||||
|
|
||||
19 | if let Test::A(ref _a) = test { //~ ERROR borrow may still be in use when generator yields
|
||||
| ^^^^^^
|
||||
20 | yield ();
|
||||
| -------- possible yield occurs here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user