diff options
| author | Eric Holk <eric.holk@gmail.com> | 2012-05-29 16:11:15 -0700 |
|---|---|---|
| committer | Eric Holk <eric.holk@gmail.com> | 2012-05-30 12:03:51 -0700 |
| commit | f49b891ce534101695bb012982cf50d21665feef (patch) | |
| tree | b5a389c5407cbc31226eb0227bcc50d662f2db6d /src/rustc | |
| parent | 6abddca18b432d37945bd2fda24bbc77fba970aa (diff) | |
| download | rust-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.rs | 6 | ||||
| -rw-r--r-- | src/rustc/middle/capture.rs | 3 |
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 { |
