Hi, I'm trying to change the type of variables that match a certain rule. Abstracting away this specific rule and only looking at coming up with a rule to match variable declarations, I have a few newbie questions.
Say I want to replace all long declarations into ints, this simple rule seems to be working fine: --- @@ identifier var; type T = long; expression E; @@ ( - T var; + int var; | - T var = E; + int var = E; ) --- I tried to write it as --- - T + int var ? = E ; --- but that doesn't seem to be a valid syntax. Now, I'd like to match declarations of several variables in a single statement as well. Say I want to get something like - long a, b = 2, c, d = 42, e; + long a, b = 2, c, e; + int d = 42; (match on longs initialized to 42) My current attempt is --- @@ identifier var; type T = long; expression L, R; @@ T L, - var = 42 R; + int var; --- But that isn't valid either. How should I go about writing this sort of rule? If you're curious, there's more context about what I'm trying to achieve at: https://lore.kernel.org/lkml/20190902210558.GA23013@avx2/ Thanks, Valentin _______________________________________________ Cocci mailing list [email protected] https://systeme.lip6.fr/mailman/listinfo/cocci
