From ed985b61d5c1e35b10a135ec8872aec2fbf66531 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 14 Oct 2011 15:22:25 -0700 Subject: [PATCH] Bare functions can coerce to blocks --- src/comp/middle/typeck.rs | 4 ++++ src/test/run-pass/fn-bare-coerce-to-block.rs | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 src/test/run-pass/fn-bare-coerce-to-block.rs diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index 1e4fe0d6f3c..a62cf5e97d8 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -916,6 +916,10 @@ fn do_fn_ty_coerce(fcx: @fn_ctxt, sp: span, actual: ty::t, expected: ty::t) ty::mk_fn(fcx.ccx.tcx, ast::proto_fn, args, ret_ty, cf, constrs) } + some(ty::ty_fn(ast::proto_block., _, _, _, _)) { + ty::mk_fn(fcx.ccx.tcx, ast::proto_block, args, ret_ty, cf, + constrs) + } _ { actual } } } diff --git a/src/test/run-pass/fn-bare-coerce-to-block.rs b/src/test/run-pass/fn-bare-coerce-to-block.rs new file mode 100644 index 00000000000..f861cdca405 --- /dev/null +++ b/src/test/run-pass/fn-bare-coerce-to-block.rs @@ -0,0 +1,7 @@ +fn# bare() {} + +fn likes_block(f: block()) { f() } + +fn main() { + likes_block(bare); +} \ No newline at end of file