cocci.inria.fr archive mirror
 help / color / mirror / Atom feed
From: Jaskaran Singh <jaskaran.singh@collabora.com>
To: cocci@systeme.lip6.fr
Subject: [Cocci] [PATCH 01/24] parsing_cocci: visitor_ast0: Add attributefn to SmPL AST0 visitor
Date: Thu, 16 Jul 2020 18:29:52 +0530	[thread overview]
Message-ID: <20200716130016.23729-2-jaskaran.singh@collabora.com> (raw)
In-Reply-To: <20200716130016.23729-1-jaskaran.singh@collabora.com>

Add a public function for visiting attributes to the SmPL AST0 visitor.

Signed-off-by: Jaskaran Singh <jaskaran.singh@collabora.com>
---
 parsing_cocci/visitor_ast0.ml        | 21 +++++++++++++++++----
 parsing_cocci/visitor_ast0.mli       |  2 ++
 parsing_cocci/visitor_ast0_types.ml  |  6 ++++++
 parsing_cocci/visitor_ast0_types.mli |  6 ++++++
 4 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/parsing_cocci/visitor_ast0.ml b/parsing_cocci/visitor_ast0.ml
index a5902f8c..090fe625 100644
--- a/parsing_cocci/visitor_ast0.ml
+++ b/parsing_cocci/visitor_ast0.ml
@@ -25,7 +25,7 @@ let visitor mode bind option_default
     dotsenumdeclfn dotscasefn dotsdefparfn
     identfn exprfn assignOpfn binaryOpfn tyfn initfn paramfn declfn fieldfn
     enumdeclfn
-    stmtfn forinfofn casefn string_fragmentfn topfn =
+    stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
   let multibind l =
     let rec loop = function
 	[] -> option_default
@@ -1155,7 +1155,7 @@ let visitor mode bind option_default
           Ast0.Attribute(attr) ->
             let (attr_n,attr) = string_mcode attr in
             (attr_n,Ast0.Attribute(attr))) in
-    k a
+    attributefn all_functions k a
 
   (* we only include the when string mcode w because the parameterised
      string_mcodefn function might have side-effects *)
@@ -1370,6 +1370,7 @@ let visitor mode bind option_default
       VT0.case_line = case_line;
       VT0.define_param = define_param;
       VT0.string_fragment = string_fragment;
+      VT0.attribute = attribute;
       VT0.top_level = top_level;
       VT0.expression_dots = expression_dots;
       VT0.statement_dots = statement_dots;
@@ -1419,6 +1420,7 @@ let combiner_functions =
    VT0.combiner_forinfofn = (fun r k e -> k e);
    VT0.combiner_casefn = (fun r k e -> k e);
    VT0.combiner_string_fragmentfn = (fun r k e -> k e);
+   VT0.combiner_attributefn = (fun r k e -> k e);
    VT0.combiner_topfn = (fun r k e -> k e)}
 
 let combiner_dz r =
@@ -1458,6 +1460,8 @@ let combiner_dz r =
       (function e -> let (n,_) = r.VT0.define_param e in n);
       VT0.combiner_rec_string_fragment =
       (function e -> let (n,_) = r.VT0.string_fragment e in n);
+      VT0.combiner_rec_attribute =
+      (function e -> let (n,_) = r.VT0.attribute e in n);
       VT0.combiner_rec_top_level =
       (function e -> let (n,_) = r.VT0.top_level e in n);
       VT0.combiner_rec_expression_dots =
@@ -1524,6 +1528,7 @@ let combiner bind option_default functions =
     (fun r k e -> (functions.VT0.combiner_forinfofn (dz r) (xk k) e, e))
     (fun r k e -> (functions.VT0.combiner_casefn (dz r) (xk k) e, e))
     (fun r k e -> (functions.VT0.combiner_string_fragmentfn (dz r) (xk k) e,e))
+    (fun r k e -> (functions.VT0.combiner_attributefn (dz r) (xk k) e, e))
     (fun r k e -> (functions.VT0.combiner_topfn (dz r) (xk k) e, e)))
 
 let flat_combiner bind option_default
@@ -1534,7 +1539,7 @@ let flat_combiner bind option_default
     dotsenumdeclfn dotscasefn dotsdefparfn
     identfn exprfn assignOpfn binaryOpfn tyfn initfn paramfn declfn fieldfn
     enumdeclfn
-    stmtfn forinfofn casefn string_fragmentfn topfn =
+    stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
   let dz = combiner_dz in
   let xk k e = let (n,_) = k e in n in
   combiner_dz (visitor COMBINER bind option_default
@@ -1575,6 +1580,7 @@ let flat_combiner bind option_default
     (fun r k e -> (forinfofn (dz r) (xk k) e, e))
     (fun r k e -> (casefn (dz r) (xk k) e, e))
     (fun r k e -> (string_fragmentfn (dz r) (xk k) e, e))
+    (fun r k e -> (attributefn (dz r) (xk k) e, e))
     (fun r k e -> (topfn (dz r) (xk k) e, e)))
 
 let rebuilder_functions =
@@ -1615,6 +1621,7 @@ let rebuilder_functions =
    VT0.rebuilder_forinfofn = (fun r k e -> k e);
    VT0.rebuilder_casefn = (fun r k e -> k e);
    VT0.rebuilder_string_fragmentfn = (fun r k e -> k e);
+   VT0.rebuilder_attributefn = (fun r k e -> k e);
    VT0.rebuilder_topfn = (fun r k e -> k e)}
 
 let rebuilder_dz r =
@@ -1652,6 +1659,8 @@ let rebuilder_dz r =
       (function e -> let (_,e) = r.VT0.case_line e in e);
       VT0.rebuilder_rec_string_fragment =
       (function e -> let (_,e) = r.VT0.string_fragment e in e);
+      VT0.rebuilder_rec_attribute =
+      (function e -> let (_,e) = r.VT0.attribute e in e);
       VT0.rebuilder_rec_top_level =
       (function e -> let (_,e) = r.VT0.top_level e in e);
       VT0.rebuilder_rec_expression_dots =
@@ -1714,6 +1723,7 @@ let rebuilder functions =
     (fun r k e -> ((),functions.VT0.rebuilder_casefn (dz r) (xk k) e))
     (fun r k e ->
       ((),functions.VT0.rebuilder_string_fragmentfn (dz r) (xk k) e))
+    (fun r k e -> ((),functions.VT0.rebuilder_attributefn (dz r) (xk k) e))
     (fun r k e -> ((),functions.VT0.rebuilder_topfn (dz r) (xk k) e)))
 
 let flat_rebuilder
@@ -1725,7 +1735,7 @@ let flat_rebuilder
     dotsenumdeclfn dotscasefn dotsdefparfn
     identfn exprfn assignOpfn arithOpfn tyfn initfn paramfn declfn fieldfn
     enumdeclfn
-    stmtfn forinfofn casefn string_fragmentfn topfn =
+    stmtfn forinfofn casefn string_fragmentfn attributefn topfn =
   let dz = rebuilder_dz in
   let xk k e = let (_,e) = k e in e in
   rebuilder_dz
@@ -1767,6 +1777,7 @@ let flat_rebuilder
     (fun r k e -> ((),forinfofn (dz r) (xk k) e))
     (fun r k e -> ((),casefn (dz r) (xk k) e))
     (fun r k e -> ((),string_fragmentfn (dz r) (xk k) e))
+    (fun r k e -> ((),attributefn (dz r) (xk k) e))
     (fun r k e -> ((),topfn (dz r) (xk k) e)))
 
 let combiner_rebuilder_functions =
@@ -1821,6 +1832,7 @@ let combiner_rebuilder_functions =
    VT0.combiner_rebuilder_forinfofn = (fun r k e -> k e);
    VT0.combiner_rebuilder_casefn = (fun r k e -> k e);
    VT0.combiner_rebuilder_string_fragmentfn = (fun r k e -> k e);
+   VT0.combiner_rebuilder_attributefn = (fun r k e -> k e);
    VT0.combiner_rebuilder_topfn = (fun r k e -> k e)}
 
 let combiner_rebuilder bind option_default functions =
@@ -1862,4 +1874,5 @@ let combiner_rebuilder bind option_default functions =
     functions.VT0.combiner_rebuilder_forinfofn
     functions.VT0.combiner_rebuilder_casefn
     functions.VT0.combiner_rebuilder_string_fragmentfn
+    functions.VT0.combiner_rebuilder_attributefn
     functions.VT0.combiner_rebuilder_topfn
diff --git a/parsing_cocci/visitor_ast0.mli b/parsing_cocci/visitor_ast0.mli
index e801c983..53d51e4a 100644
--- a/parsing_cocci/visitor_ast0.mli
+++ b/parsing_cocci/visitor_ast0.mli
@@ -50,6 +50,7 @@ val flat_combiner :
     ((Ast0_cocci.forinfo,'a) Visitor_ast0_types.ccode) ->
     ((Ast0_cocci.case_line,'a) Visitor_ast0_types.ccode) ->
     ((Ast0_cocci.string_fragment,'a) Visitor_ast0_types.ccode) ->
+    ((Ast0_cocci.attr,'a) Visitor_ast0_types.ccode) ->
     ((Ast0_cocci.top_level,'a) Visitor_ast0_types.ccode) ->
     'a Visitor_ast0_types.combiner_rec_functions
 
@@ -95,6 +96,7 @@ val flat_rebuilder :
     (Ast0_cocci.forinfo Visitor_ast0_types.rcode) ->
     (Ast0_cocci.case_line Visitor_ast0_types.rcode) ->
     (Ast0_cocci.string_fragment Visitor_ast0_types.rcode) ->
+    (Ast0_cocci.attr Visitor_ast0_types.rcode) ->
     (Ast0_cocci.top_level Visitor_ast0_types.rcode) ->
       Visitor_ast0_types.rebuilder_rec_functions
 
diff --git a/parsing_cocci/visitor_ast0_types.ml b/parsing_cocci/visitor_ast0_types.ml
index 7a00c702..65892483 100644
--- a/parsing_cocci/visitor_ast0_types.ml
+++ b/parsing_cocci/visitor_ast0_types.ml
@@ -28,6 +28,7 @@ type 'n all_functions =
       case_line : (Ast0.case_line,'n) inout;
       define_param : (Ast0.define_param,'n) inout;
       string_fragment : (Ast0.string_fragment,'n) inout;
+      attribute : (Ast0.attr,'n) inout;
       top_level : (Ast0.top_level,'n) inout;
       expression_dots : (Ast0.expression Ast0.dots,'n) inout;
       statement_dots : (Ast0.statement Ast0.dots,'n) inout;
@@ -63,6 +64,7 @@ type 'n combiner_rec_functions =
       combiner_rec_case_line : (Ast0.case_line,'n) combiner_inout;
       combiner_rec_define_param : (Ast0.define_param,'n) combiner_inout;
       combiner_rec_string_fragment : (Ast0.string_fragment,'n) combiner_inout;
+      combiner_rec_attribute : (Ast0.attr,'n) combiner_inout;
       combiner_rec_top_level : (Ast0.top_level,'n) combiner_inout;
       combiner_rec_expression_dots :
 	(Ast0.expression Ast0.dots,'n) combiner_inout;
@@ -122,6 +124,7 @@ type 'n combiner_functions =
    combiner_forinfofn : (Ast0.forinfo,'n) ccode;
    combiner_casefn : (Ast0.case_line,'n) ccode;
    combiner_string_fragmentfn : (Ast0.string_fragment,'n) ccode;
+   combiner_attributefn : (Ast0.attr,'n) ccode;
    combiner_topfn : (Ast0.top_level,'n) ccode}
 
 (* ----------------------------------------------------------------------- *)
@@ -148,6 +151,7 @@ type rebuilder_rec_functions =
       rebuilder_rec_forinfo : Ast0.forinfo rebuilder_inout;
       rebuilder_rec_case_line : Ast0.case_line rebuilder_inout;
       rebuilder_rec_string_fragment : Ast0.string_fragment rebuilder_inout;
+      rebuilder_rec_attribute : Ast0.attr rebuilder_inout;
       rebuilder_rec_top_level : Ast0.top_level rebuilder_inout;
       rebuilder_rec_expression_dots :
 	Ast0.expression Ast0.dots rebuilder_inout;
@@ -208,6 +212,7 @@ type rebuilder_functions =
    rebuilder_forinfofn : Ast0.forinfo rcode;
    rebuilder_casefn : Ast0.case_line rcode;
    rebuilder_string_fragmentfn : Ast0.string_fragment rcode;
+   rebuilder_attributefn : Ast0.attr rcode;
    rebuilder_topfn : Ast0.top_level rcode}
 
 (* ----------------------------------------------------------------------- *)
@@ -256,4 +261,5 @@ type 'n combiner_rebuilder_functions =
    combiner_rebuilder_forinfofn : (Ast0.forinfo,'n) rccode;
    combiner_rebuilder_casefn : (Ast0.case_line,'n) rccode;
    combiner_rebuilder_string_fragmentfn : (Ast0.string_fragment,'n) rccode;
+   combiner_rebuilder_attributefn : (Ast0.attr,'n) rccode;
    combiner_rebuilder_topfn : (Ast0.top_level,'n) rccode}
diff --git a/parsing_cocci/visitor_ast0_types.mli b/parsing_cocci/visitor_ast0_types.mli
index d06baaf7..7c7c31aa 100644
--- a/parsing_cocci/visitor_ast0_types.mli
+++ b/parsing_cocci/visitor_ast0_types.mli
@@ -18,6 +18,7 @@ type 'n all_functions = {
   case_line : (Ast0_cocci.case_line, 'n) inout;
   define_param : (Ast0_cocci.define_param, 'n) inout;
   string_fragment : (Ast0_cocci.string_fragment, 'n) inout;
+  attribute : (Ast0_cocci.attr, 'n) inout;
   top_level : (Ast0_cocci.top_level, 'n) inout;
   expression_dots : (Ast0_cocci.expression Ast0_cocci.dots, 'n) inout;
   statement_dots : (Ast0_cocci.statement Ast0_cocci.dots, 'n) inout;
@@ -48,6 +49,7 @@ type 'n combiner_rec_functions = {
   combiner_rec_case_line : (Ast0_cocci.case_line, 'n) combiner_inout;
   combiner_rec_define_param : (Ast0_cocci.define_param, 'n) combiner_inout;
   combiner_rec_string_fragment : (Ast0_cocci.string_fragment, 'n) combiner_inout;
+  combiner_rec_attribute : (Ast0_cocci.attr, 'n) combiner_inout;
   combiner_rec_top_level : (Ast0_cocci.top_level, 'n) combiner_inout;
   combiner_rec_expression_dots :
     (Ast0_cocci.expression Ast0_cocci.dots, 'n) combiner_inout;
@@ -102,6 +104,7 @@ type 'n combiner_functions = {
   combiner_forinfofn : (Ast0_cocci.forinfo, 'n) ccode;
   combiner_casefn : (Ast0_cocci.case_line, 'n) ccode;
   combiner_string_fragmentfn : (Ast0_cocci.string_fragment, 'n) ccode;
+  combiner_attributefn : (Ast0_cocci.attr, 'n) ccode;
   combiner_topfn : (Ast0_cocci.top_level, 'n) ccode;
 }
 type 'a rebuilder_inout = 'a -> 'a
@@ -123,6 +126,7 @@ type rebuilder_rec_functions = {
   rebuilder_rec_forinfo : Ast0_cocci.forinfo rebuilder_inout;
   rebuilder_rec_case_line : Ast0_cocci.case_line rebuilder_inout;
   rebuilder_rec_string_fragment : Ast0_cocci.string_fragment rebuilder_inout;
+  rebuilder_rec_attribute : Ast0_cocci.attr rebuilder_inout;
   rebuilder_rec_top_level : Ast0_cocci.top_level rebuilder_inout;
   rebuilder_rec_expression_dots : Ast0_cocci.expression Ast0_cocci.dots rebuilder_inout;
   rebuilder_rec_statement_dots : Ast0_cocci.statement Ast0_cocci.dots rebuilder_inout;
@@ -175,6 +179,7 @@ type rebuilder_functions = {
   rebuilder_forinfofn : Ast0_cocci.forinfo rcode;
   rebuilder_casefn : Ast0_cocci.case_line rcode;
   rebuilder_string_fragmentfn : Ast0_cocci.string_fragment rcode;
+  rebuilder_attributefn : Ast0_cocci.attr rcode;
   rebuilder_topfn : Ast0_cocci.top_level rcode;
 }
 type ('mc, 'a) rcmcode = 'a -> 'mc Ast0_cocci.mcode -> 'a * 'mc Ast0_cocci.mcode
@@ -219,5 +224,6 @@ type 'n combiner_rebuilder_functions = {
   combiner_rebuilder_forinfofn : (Ast0_cocci.forinfo, 'n) rccode;
   combiner_rebuilder_casefn : (Ast0_cocci.case_line, 'n) rccode;
   combiner_rebuilder_string_fragmentfn : (Ast0_cocci.string_fragment, 'n) rccode;
+  combiner_rebuilder_attributefn : (Ast0_cocci.attr, 'n) rccode;
   combiner_rebuilder_topfn : (Ast0_cocci.top_level, 'n) rccode;
 }
-- 
2.21.3

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

  reply	other threads:[~2020-07-16 13:02 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-16 12:59 [Cocci] [PATCH 00/24] parsing_cocci: Add attributefn to the SmPL AST0 visitor Jaskaran Singh
2020-07-16 12:59 ` Jaskaran Singh [this message]
2020-07-16 12:59 ` [Cocci] [PATCH 02/24] parsing_cocci: ast0toast: Reflect attributefn in " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 03/24] parsing_cocci: check_meta: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 04/24] parsing_cocci: function_prototypes: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 05/24] parsing_cocci: iso_compile: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 06/24] parsing_cocci: iso_pattern: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 07/24] parsing_cocci: parse_cocci: " Jaskaran Singh
2020-07-16 12:59 ` [Cocci] [PATCH 08/24] parsing_cocci: single_statement: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 09/24] parsing_cocci: unitary_ast0: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 10/24] parsing_cocci: ast0_cocci: Add AttributeTag to SmPL AST0 Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 11/24] parsing_cocci: visitor_ast0: Reflect AttributeTag in " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 12/24] parsing_cocci: iso_pattern: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 13/24] parsing_cocci: unparse_ast0: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 14/24] parsing_cocci: context_neg: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 15/24] parsing_cocci: insert_plus: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 16/24] parsing_cocci: ast_cocci: Add AttributeTag to the SmPL AST Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 17/24] parsing_cocci: pretty_print_cocci: Reflect AttributeTag in " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 18/24] parsing_c: unparse_cocci: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 19/24] parsing_cocci: visitor_ast: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 20/24] parsing_cocci: ast0toast: Reflect AttributeTag in the SmPL ASTs Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 21/24] ocaml: coccilib: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 22/24] parsing_cocci: context_neg: Reflect attributefn in AST0 visitor Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 23/24] parsing_cocci: insert_plus: " Jaskaran Singh
2020-07-16 13:00 ` [Cocci] [PATCH 24/24] tools: spgen: " Jaskaran Singh
2020-07-18 13:59 ` [Cocci] [PATCH 00/24] parsing_cocci: Add attributefn to the SmPL " Julia Lawall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200716130016.23729-2-jaskaran.singh@collabora.com \
    --to=jaskaran.singh@collabora.com \
    --cc=cocci@systeme.lip6.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).