Coccinelle release-1.0.0-rc11
[bpt/coccinelle.git] / parsing_cocci / compute_lines.ml
index 4f6e3a2..ea6aa27 100644 (file)
@@ -1,5 +1,7 @@
 (*
- * Copyright 2010, INRIA, University of Copenhagen
+ * Copyright 2012, INRIA
+ * Julia Lawall, Gilles Muller
+ * Copyright 2010-2011, INRIA, University of Copenhagen
  * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
  * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
  * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
@@ -307,6 +309,11 @@ let rec expression e =
       let op = normal_mcode op in
       let right = expression right in
       mkres e (Ast0.Assignment(left,op,right,simple)) left right
+  | Ast0.Sequence(left,op,right) ->
+      let left = expression left in
+      let op = normal_mcode op in
+      let right = expression right in
+      mkres e (Ast0.Sequence(left,op,right)) left right
   | Ast0.CondExpr(exp1,why,exp2,colon,exp3) ->
       let exp1 = expression exp1 in
       let why = normal_mcode why in
@@ -433,6 +440,7 @@ let rec expression e =
   | Ast0.UniqueExp(exp) ->
       let exp = expression exp in
       mkres e (Ast0.UniqueExp(exp)) exp exp
+  | Ast0.AsExpr _ -> failwith "not possible"
 
 and expression_dots x = dots is_exp_dots None expression x
 
@@ -536,6 +544,7 @@ and typeC t =
       let ty = typeC ty in mkres t (Ast0.OptType(ty)) ty ty
   | Ast0.UniqueType(ty) ->
       let ty = typeC ty in mkres t (Ast0.UniqueType(ty)) ty ty
+  | Ast0.AsType _ -> failwith "not possible"
 
 (* --------------------------------------------------------------------- *)
 (* Variable declaration *)
@@ -592,6 +601,16 @@ and declaration d =
       let rp = normal_mcode rp in
       let sem = normal_mcode sem in
       mkres d (Ast0.MacroDecl(name,lp,args,rp,sem)) name (promote_mcode sem)
+  | Ast0.MacroDeclInit(name,lp,args,rp,eq,ini,sem) ->
+      let name = ident name in
+      let lp = normal_mcode lp in
+      let args = dots is_exp_dots (Some(promote_mcode lp)) expression args in
+      let rp = normal_mcode rp in
+      let eq = normal_mcode eq in
+      let ini = initialiser ini in
+      let sem = normal_mcode sem in
+      mkres d (Ast0.MacroDeclInit(name,lp,args,rp,eq,ini,sem))
+       name (promote_mcode sem)
   | Ast0.TyDecl(ty,sem) ->
       let ty = typeC ty in
       let sem = normal_mcode sem in
@@ -617,6 +636,7 @@ and declaration d =
   | Ast0.UniqueDecl(decl) ->
       let decl = declaration decl in
       mkres d (Ast0.UniqueDecl(declaration decl)) decl decl
+  | Ast0.AsDecl _ -> failwith "not possible"
 
 (* --------------------------------------------------------------------- *)
 (* Initializer *)
@@ -672,6 +692,7 @@ and initialiser i =
   | Ast0.UniqueIni(ini) ->
       let ini = initialiser ini in
       mkres i (Ast0.UniqueIni(ini)) ini ini
+  | Ast0.AsInit _ -> failwith "not possible"
 
 and designator = function
     Ast0.DesignatorField(dot,id) ->
@@ -1062,7 +1083,8 @@ let rec statement s =
     | Ast0.OptStm(stm) ->
        let stm = statement stm in mkres s (Ast0.OptStm(stm)) stm stm
     | Ast0.UniqueStm(stm) ->
-       let stm = statement stm in mkres s (Ast0.UniqueStm(stm)) stm stm in
+       let stm = statement stm in mkres s (Ast0.UniqueStm(stm)) stm stm
+    | Ast0.AsStmt _ -> failwith "not possible" in
   Ast0.set_dots_bef_aft res
     (match Ast0.get_dots_bef_aft res with
       Ast0.NoDots -> Ast0.NoDots