diff options
| author | Michael Sullivan <sully@msully.net> | 2011-07-21 14:58:39 -0700 |
|---|---|---|
| committer | Michael Sullivan <sully@msully.net> | 2011-07-21 18:19:07 -0700 |
| commit | a0a2cee8960d67eb0e901d09bd34c504ef3e699b (patch) | |
| tree | 125910fb0037edaee306f39cb441c682a4cab8ee /src/comp | |
| parent | 4170390cb6cd26e7491968b4383b0e93317ec112 (diff) | |
| download | rust-a0a2cee8960d67eb0e901d09bd34c504ef3e699b.tar.gz rust-a0a2cee8960d67eb0e901d09bd34c504ef3e699b.zip | |
Clean up build_environment by having it return a rec with usefully named fields.
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/middle/trans.rs | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 3dd93b2209f..176d47c70f2 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -3793,7 +3793,7 @@ fn find_variable(&@fn_ctxt fcx, ast::node_id nid) -> ValueRef { // contains pointers to all of the upvars and all of the tydescs in // scope. Return the ValueRef and TypeRef corresponding to the closure. fn build_environment(&@block_ctxt cx, &ast::node_id[] upvars) -> - tup(ValueRef, TypeRef) { + rec(ValueRef ptr, TypeRef ptrty) { auto upvar_count = std::ivec::len(upvars); auto has_iterbody = !option::is_none(cx.fcx.lliterbody); if (has_iterbody) { upvar_count += 1u; } @@ -3852,7 +3852,7 @@ fn build_environment(&@block_ctxt cx, &ast::node_id[] upvars) -> i += 1u; } - ret tup(llenvptr, llenvptrty); + ret rec(ptr=llenvptr, ptrty=llenvptrty); } // Given an enclosing block context, a new function context, a closure type, @@ -3943,9 +3943,7 @@ fn trans_for_each(&@block_ctxt cx, &@ast::local local, &@ast::expr seq, auto decl_id = local.node.id; auto upvars = get_freevars(lcx.ccx.tcx, body.node.id); - auto environment_data = build_environment(cx, *upvars); - auto llenvptr = environment_data._0; - auto llenvptrty = environment_data._1; + auto llenv = build_environment(cx, *upvars); // Step 2: Declare foreach body function. let str s = @@ -3966,7 +3964,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, llenv.ptrty, *upvars); // Add an upvar for the loop variable alias. fcx.llupvars.insert(decl_id, llvm::LLVMGetParam(fcx.llfn, 3u)); @@ -3984,7 +3982,7 @@ fn trans_for_each(&@block_ctxt cx, &@ast::local local, &@ast::expr seq, alt (seq.node) { case (ast::expr_call(?f, ?args)) { auto pair = create_real_fn_pair(cx, iter_body_llty, - lliterbody, llenvptr); + lliterbody, llenv.ptr); r = trans_call(cx, f, some[ValueRef](cx.build.Load(pair)), args, seq.id); ret rslt(r.bcx, C_nil()); |
