Предел Coccinelle соответствует выражению данного типа - PullRequest
0 голосов
/ 04 октября 2018

Преобразование, подобное приведенному ниже, работает для func_1(&something->field), когда что-то является foo_t, но не учитывает случаи, когда v само является полем, таким как func_1(&something->v->field)

@@
typedef foo_t;
foo_t *v;
@@

- func_1(&v->field)
+ func_2(v)

С другой стороныстороны, если я использую выражение, подобное этому:

@@
expression v;
@@

- func_1(&v->field)
+ func_2(v)

Это работает, но слишком активно и может соответствовать случаям, когда тип не foo_t, просто потому, что какой-то другой тип имеет такое же имя поля.

Есть ли способ получить совпадение для выражений, но ограничить тип выражения foo_t?

...