Cast attributes are added to the SmPL AST. Reflect these changes in
iso_pattern.ml.

Signed-off-by: Jaskaran Singh <jaskaransingh7654...@gmail.com>
---
 parsing_cocci/iso_pattern.ml | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/parsing_cocci/iso_pattern.ml b/parsing_cocci/iso_pattern.ml
index b751f3e8..6e75c5c3 100644
--- a/parsing_cocci/iso_pattern.ml
+++ b/parsing_cocci/iso_pattern.ml
@@ -575,7 +575,7 @@ let match_maker checks_needed context_required 
whencode_allowed =
                        (* all caps is a const *)
                        Str.string_match all_caps nm 0
                    | _ -> false)
-               | Ast0.Cast(lp,ty,rp,e) -> matches e
+               | Ast0.Cast(lp,ty,attr,rp,e) -> matches e
                | Ast0.SizeOfExpr(se,exp) -> true
                | Ast0.SizeOfType(se,lp,ty,rp) -> true
                | Ast0.MetaExpr(nm,_,_,Ast.CONST,p,_bitfield) ->
@@ -586,7 +586,7 @@ let match_maker checks_needed context_required 
whencode_allowed =
              let rec matches e =
                match Ast0.unwrap e with
                  Ast0.Ident(c) -> true
-               | Ast0.Cast(lp,ty,rp,e) -> matches e
+               | Ast0.Cast(lp,ty,attr,rp,e) -> matches e
                | Ast0.MetaExpr(nm,_,_,Ast.ID,p,_bitfield) ->
                    (Ast0.lub_pure p pure) = pure
                | _ -> false in
@@ -757,10 +757,16 @@ let match_maker checks_needed context_required 
whencode_allowed =
               conjunct_many_bindings
                 [check_mcode opa op; match_expr expa expb;
                   match_ident fielda fieldb]
-         | (Ast0.Cast(lp1,tya,rp1,expa),Ast0.Cast(lp,tyb,rp,expb)) ->
+         | (Ast0.Cast(lp1,tya,attra,rp1,expa),
+             Ast0.Cast(lp,tyb,attrb,rp,expb)) ->
+              if (List.length attra = List.length attrb &&
+                  List.fold_left2 (fun p a b -> p && mcode_equal a b) true
+                  attra attrb)
+              then
              conjunct_many_bindings
                [check_mcode lp1 lp; check_mcode rp1 rp;
                  match_typeC tya tyb; match_expr expa expb]
+              else return false
          | (Ast0.SizeOfExpr(szf1,expa),Ast0.SizeOfExpr(szf,expb)) ->
              conjunct_bindings (check_mcode szf1 szf) (match_expr expa expb)
          | (Ast0.SizeOfType(szf1,lp1,tya,rp1),
-- 
2.21.1

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

Reply via email to