about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-06-24 18:01:27 -0700
committerBrian Anderson <banderson@mozilla.com>2012-06-24 18:01:27 -0700
commite991855d66cb299337b293d3e2d1b7f0a511ff69 (patch)
tree30a71fb56261ff077674dc7f9dda80704d45ed40 /src
parentc01f5ef034368f035270f083ad9ba0fe6aa27a1c (diff)
downloadrust-e991855d66cb299337b293d3e2d1b7f0a511ff69.tar.gz
rust-e991855d66cb299337b293d3e2d1b7f0a511ff69.zip
Make 'do' expressions accept stack closures
Diffstat (limited to 'src')
-rw-r--r--src/rustc/middle/block_use.rs2
-rw-r--r--src/test/run-pass/do-stack.rs5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/rustc/middle/block_use.rs b/src/rustc/middle/block_use.rs
index ea1cb3f235e..9fcc3d286fc 100644
--- a/src/rustc/middle/block_use.rs
+++ b/src/rustc/middle/block_use.rs
@@ -34,7 +34,7 @@ fn visit_expr(ex: @expr, cx: ctx, v: visit::vt<ctx>) {
             i += 1u;
         }
       }
-      expr_loop_body(body) {
+      expr_loop_body(body) | expr_do_body(body) {
         cx.allow_block = true;
         v.visit_expr(body, cx, v);
       }
diff --git a/src/test/run-pass/do-stack.rs b/src/test/run-pass/do-stack.rs
new file mode 100644
index 00000000000..c7fec67542d
--- /dev/null
+++ b/src/test/run-pass/do-stack.rs
@@ -0,0 +1,5 @@
+fn f(f: fn&(int)) { f(10) }
+
+fn main() {
+    do f() { |i| assert i == 10 }
+}