浏览代码

optimize exhaustive one-case matches (closes #2019)

Simon Krajewski 12 年之前
父节点
当前提交
a18ce31a61
共有 1 个文件被更改,包括 2 次插入0 次删除
  1. 2 0
      codegen.ml

+ 2 - 0
codegen.ml

@@ -1638,6 +1638,8 @@ module PatternMatchConversion = struct
 		| DTGuard(e,dt1,dt2) ->
 			let ethen = convert_dt cctx dt1 in
 			mk (TIf(e,ethen,match dt2 with None -> None | Some dt -> Some (convert_dt cctx dt))) ethen.etype (punion e.epos ethen.epos)
+		| DTSwitch({eexpr = TMeta((Meta.Exhaustive,_,_),_)},[_,dt],None) ->
+			convert_dt cctx dt
 		| DTSwitch(e_st,cl,dto) ->
 			let def = match dto with None -> None | Some dt -> Some (convert_dt cctx dt) in
 			let cases = group_cases cl in