<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello all,<br>I am facing this problem with typedefs, what I am trying to achieve is convering multiple typedefs into single ones. <br><br><br>typedef int x,y;<div><br></div><div>into :<br><br>typedef  int x;</div><div>typedef int y;</div><div><br></div><div><br></div><div>when I try to replace them inside functions, everything works as expected\</div><div><br></div><div>My Rule :<br><div>@rule1@</div><div>identifier fn;</div><div>type t;</div><div>metavariable mm;</div><div>@@</div><div><br></div><div>++ typedef t mm;</div><div>fn(...){</div><div><+...</div><div>- typedef t mm;</div><div>...+></div><div>}<br><br>The C Code <br><div><br></div><div>typedef int;</div><div>typedef int mr,e4;</div><div><br></div><div>int main()</div><div>{</div><div>    typedef int sss, ssd;</div><div>}<br><br>The Diff :<br><div>diff =</div><div>--- typedef.c</div><div>+++ /tmp/cocci-output-91048-e42770-typedef.c</div><div>@@ -3,7 +3,8 @@</div><div> typedef int;</div><div> typedef int mr,e4;</div><div><br></div><div>+typedef int ssd;</div><div>+typedef int sss;</div><div> int main()</div><div> {</div><div>-    typedef int sss, ssd;</div><div> }</div><div>\ No newline at end of file</div><div><br><br>However if I try to generalize it <br><br><div>@rule1@</div><div>type t;</div><div>metavariable mm;</div><div>@@</div><div><br></div><div>++ typedef t mm;</div><div>- typedef t mm;</div><div><br></div><div><br><br>The C Code:<br><br></div></div>

<div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">typedef int;</div><div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">typedef int mr,e4;</div><div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">int main()</div><div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">{</div><div style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">    typedef int sss, ssd;</div><div style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">}<br><br>What I get is this :<br><br><div> typedef int;</div><div>-typedef int mr,e4;</div><div>+typedef int e4;</div><div>+typedef int mr;</div><div>+typedef int;</div><div><br></div><div> int main()</div><div> {</div><div>-    typedef int sss, ssd;</div><div>+    typedef int ssd;</div><div>+    typedef int sss;</div><div>+    typedef int;</div><div> }</div><div>\ No newline at end of file</div><div style="font-size:small"><br><br>You can notice the extra  "<span style="background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">+  typedef int;" , why are those produced ? is there a way to achieve what  want without them ?<br><br>Thank you very much.</span></div></div>

<br><br></div></div><div><br><br><br><br></div><br><br></div></div></div></div></div></div></div>