about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorMichael Sullivan <sully@msully.net>2011-07-21 14:58:39 -0700
committerMichael Sullivan <sully@msully.net>2011-07-21 18:19:07 -0700
commita0a2cee8960d67eb0e901d09bd34c504ef3e699b (patch)
tree125910fb0037edaee306f39cb441c682a4cab8ee /src/comp
parent4170390cb6cd26e7491968b4383b0e93317ec112 (diff)
downloadrust-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.rs12
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());