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
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
| Flag.IdUtils ->
let res = run rules neg_pos_vars in
(interpret_grep true res,None,Some res)
-