about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-05-29 16:11:15 -0700
committerEric Holk <eric.holk@gmail.com>2012-05-30 12:03:51 -0700
commitf49b891ce534101695bb012982cf50d21665feef (patch)
treeb5a389c5407cbc31226eb0227bcc50d662f2db6d /src/rustc
parent6abddca18b432d37945bd2fda24bbc77fba970aa (diff)
downloadrust-f49b891ce534101695bb012982cf50d21665feef.tar.gz
rust-f49b891ce534101695bb012982cf50d21665feef.zip
Include capture clauses when generating metadata.
This may fix the bug that's blocking Issue #2441.
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/astencode.rs6
-rw-r--r--src/rustc/middle/capture.rs3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/rustc/middle/astencode.rs b/src/rustc/middle/astencode.rs
index 5a43611b276..4d412447797 100644
--- a/src/rustc/middle/astencode.rs
+++ b/src/rustc/middle/astencode.rs
@@ -252,7 +252,11 @@ fn visit_ids(item: ast::inlined_item, vfn: fn@(ast::node_id)) {
                 vfn(m.self_id);
                 vec::iter(tps) {|tp| vfn(tp.id)}
               }
-              visit::fk_anon(*) | visit::fk_fn_block(*) {
+              visit::fk_anon(_, capture_clause)
+              | visit::fk_fn_block(capture_clause) {
+                for vec::each(*capture_clause) {|clause|
+                    vfn(clause.id);
+                }
               }
             }
 
diff --git a/src/rustc/middle/capture.rs b/src/rustc/middle/capture.rs
index d6edd2b935d..64dafc09a7c 100644
--- a/src/rustc/middle/capture.rs
+++ b/src/rustc/middle/capture.rs
@@ -67,6 +67,9 @@ fn compute_capture_vars(tcx: ty::ctxt,
     // first add entries for anything explicitly named in the cap clause
 
     for (*cap_clause).each { |cap_item|
+        #debug("Doing capture var: %s (%?)",
+               cap_item.name, cap_item.id);
+
         let cap_def = tcx.def_map.get(cap_item.id);
         let cap_def_id = ast_util::def_id_of_def(cap_def).node;
         if cap_item.is_move {