+(*
+ * 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.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
+# 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