Release coccinelle-0.1.4
[bpt/coccinelle.git] / parsing_cocci / parse_aux.ml
index fb1ff7d..1190521 100644 (file)
@@ -1,5 +1,5 @@
 (*
-* Copyright 2005-2008, Ecole des Mines de Nantes, University of Copenhagen
+* Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
 * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller
 * This file is part of Coccinelle.
 * 
@@ -262,6 +262,7 @@ let check_meta tok =
   | Ast.MetaExpListDecl(Ast.NONE,(rule,name),len_name) ->
       (match lookup rule name with
        Ast.MetaExpListDecl(_,_,_) -> ()
+      | Ast.MetaParamListDecl(_,_,_) when not (!Flag.make_hrule = None) -> ()
       | _ ->
          raise
            (Semantic_cocci.Semantic
@@ -459,9 +460,16 @@ let make_cocci_rule_name_result nm d i a e ee =
       Ast.CocciRulename (Some n,d,i,a,e,ee)
   | None -> Ast.CocciRulename (None,d,i,a,e,ee)
 
-let make_script_rule_name_result scr lang deps =
-  let s = id2name scr in
+let make_generated_rule_name_result nm d i a e ee =
+  match nm with
+    Some nm ->
+      let n = id2name nm in
+      (try let _ =  Hashtbl.find Data.all_metadecls n in
+      raise (Semantic_cocci.Semantic ("repeated rule name"))
+      with Not_found -> ());
+      Ast.GeneratedRulename (Some n,d,i,a,e,ee)
+  | None -> Ast.GeneratedRulename (None,d,i,a,e,ee)
+
+let make_script_rule_name_result lang deps =
   let l = id2name lang in
-  if s <> "script" then 
-    raise (Semantic_cocci.Semantic ("malformed script rule"));
-  Ast.ScriptRulename (l,deps)
+       Ast.ScriptRulename (l,deps)