Coccinelle release 1.0.0-rc1
[bpt/coccinelle.git] / parsing_cocci / get_constants2.ml
index 0b542d6..53e2aa3 100644 (file)
@@ -269,9 +269,10 @@ let do_get_constants constants keywords env neg_pos =
     else (try List.assoc nm1 env with Not_found -> False) in
   let minherited name = inherited (Ast.unwrap_mcode name) in
   let mcode _ x =
-    match Ast.get_pos_var x with
-      Ast.MetaPos(name,constraints,_,keep,inh) -> minherited name
-    | _ -> option_default in
+    List.fold_left bind option_default
+      (List.map
+        (function Ast.MetaPos(name,constraints,_,keep,inh) -> minherited name)
+        (Ast.get_pos_var x)) in
 
   (* if one branch gives no information, then we have to take anything *)
   let disj_union_all = List.fold_left build_or False in
@@ -360,6 +361,8 @@ let do_get_constants constants keywords env neg_pos =
     match Ast.unwrap d with
       Ast.MetaDecl(name,_,_) | Ast.MetaField(name,_,_) ->
        bind (k d) (minherited name)
+    | Ast.MetaFieldList(name,Ast.MetaListLen(lenname,_,_),_,_) ->
+       bind (minherited name) (bind (minherited lenname) (k d))
     | Ast.DisjDecl(decls) ->
        disj_union_all (List.map r.V.combiner_declaration decls)
     | Ast.OptDecl(decl) -> option_default
@@ -661,4 +664,3 @@ let get_constants rules neg_pos_vars =
   | Flag.IdUtils ->
       let res = run rules neg_pos_vars in
       (interpret_grep true res,None,Some res)
-