~npalix/coccinelle/upstream

« back to all changes in this revision

Viewing changes to parsing_cocci/arity.ml

  • Committer: Julia Lawall
  • Author(s): Keisuke Nishimura
  • Date: 2021-06-19 21:45:04 UTC
  • Revision ID: git-v1:4d1edb18c28dc480671a1c59c560cb7a31c45d63
parser_cocci/ast0: Add support for attributes in function decl

This series adds support for attributes in function declarations in the SmPL parser.
int __attribute__((attr)) func();

These styles of attributes are common in the Linux kernel.

Signed-off-by: Keisuke Nishimura <mumumu0722@gmail.com>

Show diffs side-by-side

added added

removed removed

Lines of Context:
582
582
      let endattr = List.map (attribute arity) endattr in
583
583
      let sem = mcode sem in
584
584
      make_decl decl tgt arity (Ast0.UnInit(stg,ty,midattr,id,endattr,sem))
585
 
  | Ast0.FunProto(fi,name,lp1,params,va,rp1,sem) ->
 
585
  | Ast0.FunProto(fi,attr,name,lp1,params,va,rp1,sem) ->
586
586
    let tokens = match va with
587
587
      | None -> [lp1;rp1;sem]
588
588
      | Some (c1,e1) -> [lp1;c1;e1;rp1;sem] in
590
590
        all_same true tgt (mcode2line lp1)
591
591
          (List.map mcode2arity tokens) in
592
592
      let fi = List.map (fninfo arity) fi in
 
593
      let attr = List.map (attribute arity) attr in
593
594
      let name = ident false arity name in
594
595
      let lp1 = mcode lp1 in
595
596
      let params = parameter_list tgt params in
598
599
        | Some (c1, e1) -> Some (mcode c1, mcode e1) in
599
600
      let rp1 = mcode rp1 in
600
601
      let sem = mcode sem in
601
 
      make_decl decl tgt arity (Ast0.FunProto(fi,name,lp1,params,va,rp1,sem))
 
602
      make_decl decl tgt arity (Ast0.FunProto(fi,attr,name,lp1,params,va,rp1,sem))
602
603
  | Ast0.MacroDecl(stg,name,lp,args,rp,attr,sem) ->
603
604
      let arity =
604
605
        all_same true tgt (mcode2line lp)