This patch series aims to add cast attributes to the C and SmPL ASTs, and match them in C source code. This is a continuation of the series "cocci: Improve C parsing of attributes"[1].
Three test cases are included: - detect_cast_attr: Test case to detect a parameter attribute. - remove_cast_attr: Test case to remove a parameter attribute as per the given SmPL. - remove_cast_attr_allminus: Test case to replace a type in a cast and checking if the attribute is removed as well. [1]https://www.mail-archive.com/cocci@systeme.lip6.fr/msg07133.html Changes in v2: -------------- parsing_c: parser: Pass attribute list from type_name - Warn about dropped attributes in typeof and sizeof productions parsing_cocci: parser: Parse cast attributes - Mention in commit message that cast attributes are matched anywhere in a cast. parsing_cocci: arity: Reflect Cast attributes - Apply mcode2arity on attributes as well. parsing_cocci: visitor_ast: Visit cast attributes - Typo in commit message (AST0 -> AST). parsing_c: pretty_print_c: Reflect Cast attributes - Less space in front of [ parsing_c: ast_c: Add Cast attributes - Switch places of expression and attributes in Cast type. parsing_c: parser: Parse Cast attributes - Switch places of expression and attributes in Cast type. parsing_c: pretty_print_c: Reflect Cast attributes - Switch places of expression and attributes in Cast type. - Change printing order of cast elements. parsing_c: type_annoter_c: Reflect Cast attributes - Switch places of expression and attributes in Cast type. parsing_c: visitor_c: Visit Cast attributes - Switch places of expression and attributes in Cast type. - Change visitor order of cast elements. engine: cocci_vs_c: Match Cast attributes - Switch places of expression and attributes in C AST Cast type. ocaml: coccilib: Reflect Cast attributes - Switch places of expression and attributes in C AST Cast type. Jaskaran Singh (32): parsing_c: parser: Pass attribute list from type_name parsing_cocci: ast0_cocci: Add cast attributes parsing_cocci: parser: Parse cast attributes parsing_cocci: visitor_ast0: Visit cast attributes parsing_cocci: unparse_ast0: Reflect cast attributes parsing_cocci: index: Reflect Cast attributes parsing_cocci: iso_pattern: Reflect Cast attributes parsing_cocci: type_infer: Reflect Cast attributes parsing_cocci: arity: Reflect Cast attributes parsing_cocci: check_meta: Reflect Cast attributes parsing_cocci: compute_lines: Reflect Cast attributes parsing_cocci: context_neg: Reflect Cast attributes parsing_cocci: single_statement: Reflect Cast attributes parsing_cocci: ast_cocci: Add cast attributes parsing_cocci: visitor_ast: Visit cast attributes parsing_cocci: pretty_print_cocci: Print cast attributes parsing_cocci: ast0toast: Reflect Cast attributes parsing_cocci: disjdistr: Reflect Cast attributes parsing_cocci: unify_ast: Reflect Cast attributes parsing_c: ast_c: Add Cast attributes parsing_c: parser: Parse Cast attributes parsing_c: pretty_print_c: Reflect Cast attributes parsing_c: type_annoter_c: Reflect Cast attributes parsing_c: unparse_cocci: Reflect Cast attributes parsing_c: visitor_c: Visit Cast attributes engine: check_exhaustive_pattern: Reflect Cast attributes engine: cocci_vs_c: Match Cast attributes ocaml: coccilib: Reflect Cast attributes tools: spgen: Reflect Cast attrs tests: Add test case to check cast attribute allminus tests: Add test case to remove cast attributes tests: Add test case to detect cast attributes engine/check_exhaustive_pattern.ml | 2 +- engine/cocci_vs_c.ml | 24 +++++++++++++++++------- ocaml/coccilib.mli | 9 +++++---- parsing_c/ast_c.ml | 2 +- parsing_c/ast_c.mli | 2 +- parsing_c/parse_c.ml | 4 +++- parsing_c/parser_c.mly | 27 ++++++++++++++++++--------- parsing_c/pretty_print_c.ml | 7 ++++--- parsing_c/type_annoter_c.ml | 4 ++-- parsing_c/unparse_cocci.ml | 6 ++++-- parsing_c/visitor_c.ml | 11 +++++++++-- parsing_cocci/arity.ml | 8 +++++--- parsing_cocci/ast0_cocci.ml | 4 ++-- parsing_cocci/ast0_cocci.mli | 4 ++-- parsing_cocci/ast0toast.ml | 5 +++-- parsing_cocci/ast_cocci.ml | 4 ++-- parsing_cocci/ast_cocci.mli | 4 ++-- parsing_cocci/check_meta.ml | 3 ++- parsing_cocci/compute_lines.ml | 5 +++-- parsing_cocci/context_neg.ml | 2 +- parsing_cocci/disjdistr.ml | 5 +++-- parsing_cocci/index.ml | 2 +- parsing_cocci/iso_pattern.ml | 12 +++++++++--- parsing_cocci/parser_cocci_menhir.mly | 9 +++++---- parsing_cocci/pretty_print_cocci.ml | 4 +++- parsing_cocci/single_statement.ml | 2 +- parsing_cocci/type_infer.ml | 2 +- parsing_cocci/unify_ast.ml | 6 ++++-- parsing_cocci/unparse_ast0.ml | 4 +++- parsing_cocci/visitor_ast.ml | 10 ++++++---- parsing_cocci/visitor_ast0.ml | 6 ++++-- tests/detect_cast_attr.c | 10 ++++++++++ tests/detect_cast_attr.cocci | 11 +++++++++++ tests/detect_cast_attr.res | 10 ++++++++++ tests/remove_cast_attr.c | 10 ++++++++++ tests/remove_cast_attr.cocci | 10 ++++++++++ tests/remove_cast_attr.res | 10 ++++++++++ tests/remove_cast_attr_allminus.c | 10 ++++++++++ tests/remove_cast_attr_allminus.cocci | 9 +++++++++ tests/remove_cast_attr_allminus.res | 10 ++++++++++ tools/spgen/source/position_generator.ml | 4 ++-- 41 files changed, 219 insertions(+), 74 deletions(-) _______________________________________________ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci