Browse Source

[cs] made C# use UnreacheableCodeDetection module as well

Caue Waneck 13 years ago
parent
commit
379ebd6a27
2 changed files with 5 additions and 2 deletions
  1. 2 0
      gencommon.ml
  2. 3 2
      gencs.ml

+ 2 - 0
gencommon.ml

@@ -8526,6 +8526,7 @@ struct
           { expr with eexpr = TSwitch(cond, List.map (fun (el, e) -> (el, handle_case (process_expr e))) el_e_l, None) }, Normal
         | TSwitch(cond, el_e_l, Some def) ->
           let def, k = process_expr def in
+          let def = handle_case (def, k) in
           let k = ref k in
           let ret = { expr with eexpr = TSwitch(cond, List.map (fun (el, e) -> 
             let e, ek = process_expr e in
@@ -8537,6 +8538,7 @@ struct
           { expr with eexpr = TMatch(cond, ep, List.map (fun (il, vopt, e) -> (il, vopt, handle_case (process_expr e))) il_vopt_e_l, None) }, Normal
         | TMatch(cond, ep, il_vopt_e_l, Some def) ->
           let def, k = process_expr def in
+          let def = handle_case (def, k) in
           let k = ref k in
           let ret = { expr with eexpr = TMatch(cond, ep, List.map (fun (il, vopt, e) -> 
             let e, ek = process_expr e in

+ 3 - 2
gencs.ml

@@ -619,6 +619,7 @@ let configure gen =
             | TNull -> print w "default(%s)" (t_s e.etype)
             | TThis -> write w "this"
             | TSuper -> write w "base")
+        | TLocal { v_name = "__sbreak__" } -> write w "break"
         | TLocal { v_name = "__undefined__" } ->
           write w (t_s (TInst(runtime_cl, List.map (fun _ -> t_dynamic) runtime_cl.cl_types)));
           write w ".undefined";
@@ -823,7 +824,6 @@ let configure gen =
             in_value := false;
             expr_s w (mk_block e);
             newline w;
-            write w "break;";
             newline w
           ) ele_l;
           if is_some default then begin
@@ -832,7 +832,6 @@ let configure gen =
             in_value := false;
             expr_s w (get default);
             newline w;
-            write w "break;"
           end;
           end_block w
         | TTry (tryexpr, ve_l) ->
@@ -1527,6 +1526,8 @@ let configure gen =
   
   IntDivisionSynf.configure gen (IntDivisionSynf.default_implementation gen true);
   
+  UnreachableCodeEliminationSynf.configure gen (UnreachableCodeEliminationSynf.traverse gen true true true);
+  
   let native_arr_cl = get_cl ( get_type gen (["cs"], "NativeArray") ) in
   ArrayDeclSynf.configure gen (ArrayDeclSynf.default_implementation gen native_arr_cl);