about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/comp/middle/typeck.rs4
-rw-r--r--src/test/run-pass/fn-bare-coerce-to-block.rs7
2 files changed, 11 insertions, 0 deletions
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