mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-06 04:08: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;
|
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) {
|
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