@@ -190,6 +190,9 @@ let rec typecheck node =
ret, [NodeMsg (ret, sprintf "expected return value of type %s"
(type2str ret_type))]
+ (* do not traverse into local functions for return statements *)
+ | FunDef _ as node -> node, []
+
| node -> traverse_list check_types node
in
let err =