Remove the capture mode map and just store the capture mode for individual variables.
Also add test. Fixes #16749.
This commit is contained in:
@@ -62,7 +62,7 @@ use rustc::middle::lang_items::LanguageItems;
|
||||
use rustc::middle::pat_util::pat_bindings;
|
||||
use rustc::middle::privacy::*;
|
||||
use rustc::middle::subst::{ParamSpace, FnSpace, TypeSpace};
|
||||
use rustc::middle::ty::{CaptureModeMap, Freevar, FreevarMap, TraitMap, GlobMap};
|
||||
use rustc::middle::ty::{Freevar, FreevarMap, TraitMap, GlobMap};
|
||||
use rustc::util::nodemap::{NodeMap, NodeSet, DefIdSet, FnvHashMap};
|
||||
use rustc::util::lev_distance::lev_distance;
|
||||
|
||||
@@ -900,7 +900,6 @@ struct Resolver<'a, 'tcx:'a> {
|
||||
def_map: DefMap,
|
||||
freevars: RefCell<FreevarMap>,
|
||||
freevars_seen: RefCell<NodeMap<NodeSet>>,
|
||||
capture_mode_map: CaptureModeMap,
|
||||
export_map: ExportMap,
|
||||
trait_map: TraitMap,
|
||||
external_exports: ExternalExports,
|
||||
@@ -974,7 +973,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||
def_map: RefCell::new(NodeMap()),
|
||||
freevars: RefCell::new(NodeMap()),
|
||||
freevars_seen: RefCell::new(NodeMap()),
|
||||
capture_mode_map: NodeMap(),
|
||||
export_map: NodeMap(),
|
||||
trait_map: NodeMap(),
|
||||
used_imports: HashSet::new(),
|
||||
@@ -4523,8 +4521,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||
visit::walk_expr(self, expr);
|
||||
}
|
||||
|
||||
ExprClosure(capture_clause, _, ref fn_decl, ref block) => {
|
||||
self.capture_mode_map.insert(expr.id, capture_clause);
|
||||
ExprClosure(_, _, ref fn_decl, ref block) => {
|
||||
self.resolve_function(ClosureRibKind(expr.id),
|
||||
Some(&**fn_decl), NoTypeParameters,
|
||||
&**block);
|
||||
@@ -4835,7 +4832,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||
pub struct CrateMap {
|
||||
pub def_map: DefMap,
|
||||
pub freevars: RefCell<FreevarMap>,
|
||||
pub capture_mode_map: RefCell<CaptureModeMap>,
|
||||
pub export_map: ExportMap,
|
||||
pub trait_map: TraitMap,
|
||||
pub external_exports: ExternalExports,
|
||||
@@ -4875,7 +4871,6 @@ pub fn resolve_crate<'a, 'tcx>(session: &'a Session,
|
||||
CrateMap {
|
||||
def_map: resolver.def_map,
|
||||
freevars: resolver.freevars,
|
||||
capture_mode_map: RefCell::new(resolver.capture_mode_map),
|
||||
export_map: resolver.export_map,
|
||||
trait_map: resolver.trait_map,
|
||||
external_exports: resolver.external_exports,
|
||||
|
||||
Reference in New Issue
Block a user