Hi all, I was trying to do the following transformation: @@ identifier M; expression E; @@ - struct foo M = E; + struct foo M; + copy_struct(&M, &E);
but without inserting the function call in the middle of the declarations and instead pushing it past them. This is one attempt: @decl@ identifier M; expression E; @@ - struct foo M = E; + struct foo M; @copy@ identifier decl.M; expression decl.E; declaration D; statement S; @@ struct foo M; ... D + copy_struct(&M, &E); S The copy rule fails to match anything when I have != 1 declarations after the struct. So the ... doesn't seem to eat the extra declarations for some reason. Also tried some other tricks with <... ...> but that just resulted in the code being inserted into every if block in the function. Not what I wanted. I guess what I might need is something along the lines of: @copy@ ... declaration list[N] D; @@ struct foo M; D + copy_struct(&M, &E); S but that's not supported it seems. Is there any way to achieve this atm? -- Ville Syrjälä Intel _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
