Release coccinelle-0.1.10
[bpt/coccinelle.git] / parsing_cocci / ast0toast.ml
index dca8b8e..6c2663a 100644 (file)
@@ -211,12 +211,18 @@ let check_allminus =
        List.for_all r.VT0.combiner_rec_statement_dots statement_dots_list
     | _ -> k e in
 
+  let case_line r k e =
+    match Ast0.unwrap e with
+      Ast0.DisjCase(starter,case_lines,mids,ender) ->
+       List.for_all r.VT0.combiner_rec_case_line case_lines
+    | _ -> k e in
+
   V0.flat_combiner bind option_default
     mcode mcode mcode mcode mcode mcode mcode mcode mcode mcode
     mcode mcode
     donothing donothing donothing donothing donothing donothing
     donothing expression typeC donothing donothing declaration
-    statement donothing donothing
+    statement case_line donothing
 
 (* --------------------------------------------------------------------- *)
 (* --------------------------------------------------------------------- *)
@@ -662,17 +668,18 @@ and statement s =
                          mcode rp)),
                    statement Ast.NotSequencible body,
                    ([],[],[],convert_mcodekind (-1) aft))
-      |        Ast0.Switch(switch,lp,exp,rp,lb,cases,rb) ->
+      |        Ast0.Switch(switch,lp,exp,rp,lb,decls,cases,rb) ->
          let switch = mcode switch in
          let lp = mcode lp in
          let exp = expression exp in
          let rp = mcode rp in
          let lb = mcode lb in
+         let decls = dots (statement seqible) decls in
          let cases = List.map case_line (Ast0.undots cases) in
          let rb = mcode rb in
          Ast.Switch(rewrap_rule_elem s (Ast.SwitchHeader(switch,lp,exp,rp)),
                     tokenwrap lb s (Ast.SeqStart(lb)),
-                    cases,
+                    decls,cases,
                     tokenwrap rb s (Ast.SeqEnd(rb)))
       | Ast0.Break(br,sem) ->
          Ast.Atomic(rewrap_rule_elem s (Ast.Break(mcode br,mcode sem)))
@@ -899,6 +906,10 @@ and case_line c =
        let colon = mcode colon in
        let code = dots statement code in
        Ast.CaseLine(rewrap c no_isos (Ast.Case(case,exp,colon)),code)
+    | Ast0.DisjCase(_,case_lines,_,_) ->
+       failwith "not supported"
+       (*Ast.CaseLine(Ast.DisjRuleElem(List.map case_line case_lines))*)
+
     | Ast0.OptCase(case) -> Ast.OptCase(case_line case))
 
 and statement_dots l = dots statement l