diff --git a/src/comp/middle/freevars.rs b/src/comp/middle/freevars.rs index 4b88f2945c8d..b62065520ca7 100644 --- a/src/comp/middle/freevars.rs +++ b/src/comp/middle/freevars.rs @@ -13,7 +13,7 @@ export annotate_freevars; export freevar_set; export freevar_map; -type freevar_set = ast::node_id[]; +type freevar_set = @ast::node_id[]; type freevar_map = hashmap[ast::node_id, freevar_set]; // Searches through part of the AST for all references to locals or @@ -23,7 +23,7 @@ type freevar_map = hashmap[ast::node_id, freevar_set]; // in order to start the search. fn collect_freevars(&resolve::def_map def_map, &session::session sess, &fn (&walk::ast_visitor) walker, - ast::node_id[] initial_decls) -> ast::node_id[] { + ast::node_id[] initial_decls) -> freevar_set { type env = @rec(mutable ast::node_id[] refs, hashmap[ast::node_id, ()] decls, @@ -79,12 +79,12 @@ fn collect_freevars(&resolve::def_map def_map, &session::session sess, walker(*visitor); // Calculate (refs - decls). This is the set of captured upvars. - let ast::node_id[] result = ~[]; + auto result = ~[]; for (ast::node_id ref_id_ in e.refs) { auto ref_id = ref_id_; if (!decls.contains_key(ref_id)) { result += ~[ref_id]; } } - ret result; + ret @result; } // Build a map from every function and for-each body to a set of the diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 1eb3e86a5d06..f03ff80f74ef 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4285,7 +4285,7 @@ fn trans_for_each(&@block_ctxt cx, &@ast::local local, &@ast::expr seq, auto decl_id = local.node.id; auto upvars = cx.fcx.lcx.ccx.tcx.freevars.get(body.node.id); - auto environment_data = build_environment(cx, upvars); + auto environment_data = build_environment(cx, *upvars); auto llenvptr = environment_data._0; auto llenvptrty = environment_data._1; @@ -4308,7 +4308,7 @@ fn trans_for_each(&@block_ctxt cx, &@ast::local local, &@ast::expr seq, // Generate code to load the environment out of the // environment pointer. - load_environment(cx, fcx, llenvptrty, upvars); + load_environment(cx, fcx, llenvptrty, *upvars); // Add an upvar for the loop variable alias. fcx.llupvars.insert(decl_id, llvm::LLVMGetParam(fcx.llfn, 3u));