| // Highlight object declarations that don't look like object class but | |
| // accidentally inherit from it. | |
| @match@ | |
| identifier obj_t, fld; | |
| type parent_t =~ ".*Class$"; | |
| @@ | |
| struct obj_t { | |
| parent_t fld; | |
| ... | |
| }; | |
| @script:python filter depends on match@ | |
| obj_t << match.obj_t; | |
| @@ | |
| is_class_obj = obj_t.endswith('Class') | |
| cocci.include_match(not is_class_obj) | |
| @replacement depends on filter@ | |
| identifier match.obj_t, match.fld; | |
| type match.parent_t; | |
| @@ | |
| struct obj_t { | |
| * parent_t fld; | |
| ... | |
| }; |