(*
+ * 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
* This file is part of Coccinelle.
*)
+# 0 "./get_constants.ml"
(* get a list of all of the constants in the - slice of a SmPL file, to be
used to select which files to process *)
| Ast.DisjExpr(exps) ->
disj_union_all (List.map r.V.combiner_expression exps)
| Ast.Edots(_,_) | Ast.Ecircles(_,_) | Ast.Estars(_,_) -> []
- | Ast.NestExpr(expr_dots,whencode,false) -> []
- | Ast.NestExpr(expr_dots,whencode,true) ->
+ | Ast.NestExpr(starter,expr_dots,ender,whencode,false) -> []
+ | Ast.NestExpr(starter,expr_dots,ender,whencode,true) ->
r.V.combiner_expression_dots expr_dots
| _ -> k e in
Ast.Disj(stmt_dots) ->
disj_union_all (List.map r.V.combiner_statement_dots stmt_dots)
| Ast.Dots(d,whn,_,_) | Ast.Circles(d,whn,_,_) | Ast.Stars(d,whn,_,_) -> []
- | Ast.Nest(stmt_dots,whn,false,_,_) -> []
- | Ast.Nest(stmt_dots,whn,true,_,_) -> r.V.combiner_statement_dots stmt_dots
+ | Ast.Nest(starter,stmt_dots,ender,whn,false,_,_) -> []
+ | Ast.Nest(starter,stmt_dots,ender,whn,true,_,_) ->
+ r.V.combiner_statement_dots stmt_dots
| _ -> k e in
V.combiner bind option_default
let rec type_collect res = function
TC.ConstVol(_,ty) | TC.Pointer(ty) | TC.FunctionPointer(ty)
| TC.Array(ty) -> type_collect res ty
- | TC.MetaType(tyname,_,_) -> inherited tyname
+ | TC.MetaType(tyname,_,_) ->
+ inherited tyname
| ty -> res in
let strictexpr recursor k e =
let strictdecls recursor k d =
match Ast.unwrap d with
- Ast.DisjDecl(decls) -> option_default
+ Ast.MetaDecl(name,_,_) | Ast.MetaField(name,_,_) ->
+ bind (k p) (minherited name)
+ | Ast.DisjDecl(decls) -> option_default
| _ -> k d in
let strictfullType recursor k ty =
function r ->
match r with
Ast.ScriptRule (_,_,_,_)
- | Ast.InitialScriptRule (_,_) | Ast.FinalScriptRule (_,_) ->
+ | Ast.InitialScriptRule (_,_,_) | Ast.FinalScriptRule (_,_,_) ->
(rest_info, in_plus)
| Ast.CocciRule (nm, (dep,_,_), cur, _, _) ->
let (cur_info,cur_plus) = rule_fn cur in_plus in