diff --git a/src/rustc/middle/borrowck/check_loans.rs b/src/rustc/middle/borrowck/check_loans.rs index af5055368c8..c1a72dff3ac 100644 --- a/src/rustc/middle/borrowck/check_loans.rs +++ b/src/rustc/middle/borrowck/check_loans.rs @@ -185,7 +185,7 @@ impl methods for check_loan_ctxt { if is_fn_arg { ret; } // case (a) above } ast::expr_fn_block(*) | ast::expr_fn(*) | - ast::expr_loop_body(*) { + ast::expr_loop_body(*) | ast::expr_do_body(*) { if self.is_stack_closure(expr.id) { ret; } // case (b) above } _ {} diff --git a/src/test/run-pass/do-pure.rs b/src/test/run-pass/do-pure.rs new file mode 100644 index 00000000000..35d43c8fa19 --- /dev/null +++ b/src/test/run-pass/do-pure.rs @@ -0,0 +1,10 @@ +pure fn f(f: fn()) { +} + +pure fn g() { + // `f { || }` is considered pure, so `do f { || }` should be too + do f { || } +} + +fn main() { +} \ No newline at end of file