I apologize, I misunderstood your email. It is the same as RFC v2.
On Sat, Aug 15, 2015 at 1:30 PM, Julia Lawall <julia.law...@lip6.fr> wrote: > > > On Sat, 15 Aug 2015, Kris Borer wrote: > >> Add a semantic patch for fixing some cases of checkpatch.pl error: >> >> ERROR: do not use assignment in if condition >> >> Reviewed-by: Julia Lawall <julia.law...@lip6.fr> > > Sorry, but I'm not done reviewing it. I have a lot of changes to propose. > Is this different than the RFC v2? > > julia > >> Signed-off-by: Kris Borer <kbo...@gmail.com> >> --- >> scripts/coccinelle/style/assignment_in_if.cocci | 92 >> +++++++++++++++++++++++++ >> 1 file changed, 92 insertions(+) >> create mode 100644 scripts/coccinelle/style/assignment_in_if.cocci >> >> diff --git a/scripts/coccinelle/style/assignment_in_if.cocci >> b/scripts/coccinelle/style/assignment_in_if.cocci >> new file mode 100644 >> index 0000000..22ab161 >> --- /dev/null >> +++ b/scripts/coccinelle/style/assignment_in_if.cocci >> @@ -0,0 +1,92 @@ >> +// find checkpatch.pl errors of the type: >> +// ERROR: do not use assignment in if condition >> +// >> +// This script is designed to correct code where assignments exist in if >> +// conditions. It is only capable of handling a subset of such problems. >> +// >> +// For example: >> +// >> +// if(result = myfun()) >> +// >> +// would become: >> +// >> +// result = myfun(); >> +// if(result) >> +// >> +// Confidence: Moderate >> + >> + >> +// if ( ret = call() ) >> +@if1@ >> +identifier i; >> +expression E; >> +statement S1, S2; >> +@@ >> + >> ++ i = E; >> + if ( >> +- (i = E) >> ++ i >> + ) S1 else S2 >> + >> + >> +// if ( (ret = call()) < 0 ) >> +@if2@ >> +identifier i; >> +expression E; >> +statement S1, S2; >> +binary operator b; >> +@@ >> + >> ++ i = E; >> + if ( >> +- (i = E) >> ++ i >> + b ... ) S1 else S2 >> + >> +// if ( ptr->fun && (ret = ptr->fun()) < 0 ) >> +@if3@ >> +identifier i, i2; >> +expression E1, E2; >> +constant c; >> +binary operator b; >> +@@ >> + >> ++ if( E1->i ) { >> ++ i2 = E2; >> ++ if (i2 b c) { >> +- if( E1->i && ((i2 = E2) b c) ) { >> + ... >> +- } >> ++ } >> ++ } >> + >> +// if ( (ret = call()) < 0 && ret != -1 ) >> +@if4@ >> +identifier i; >> +expression E, E2; >> +statement S1, S2; >> +binary operator b; >> +@@ >> + >> ++ i = E; >> + if ( >> +- (i = E) >> ++ i >> + b >> + ... && E2 ) S1 else S2 >> + >> +// if ( (ret = call()) < 0 && ret != -1 && ret != -2 ) >> +@if5@ >> +identifier i; >> +expression E, E2, E3; >> +statement S1, S2; >> +binary operator b; >> +@@ >> + >> ++ i = E; >> + if ( >> +- (i = E) >> ++ i >> + b >> + ... && E2 && E3 ) S1 else S2 >> -- >> 1.9.1 >> >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/