This semantic patch looks for semicolons that can be removed without
changing the semantics of the code. The confidence is moderate
because there are some false positives on cases like:
b/drivers/mmc/host/cb710-mmc.c:589
                break;
        case MMC_POWER_UP:
        default:
-               /* ignore */;
        }
There are 37 patches accepted reported by this semantic patch and
more than 300 fixes to be applied.
Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
		
	
			
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
///
 | 
						|
/// Removes unneeded semicolon.
 | 
						|
///
 | 
						|
// Confidence: Moderate
 | 
						|
// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6.  GPLv2.
 | 
						|
// URL: http://coccinelle.lip6.fr/
 | 
						|
// Comments: Some false positives on empty default cases in switch statements.
 | 
						|
// Options: --no-includes --include-headers
 | 
						|
 | 
						|
virtual patch
 | 
						|
virtual report
 | 
						|
virtual context
 | 
						|
virtual org
 | 
						|
 | 
						|
@r_default@
 | 
						|
position p;
 | 
						|
@@
 | 
						|
switch (...)
 | 
						|
{
 | 
						|
default: ...;@p
 | 
						|
}
 | 
						|
 | 
						|
@r_case@
 | 
						|
position p;
 | 
						|
@@
 | 
						|
(
 | 
						|
switch (...)
 | 
						|
{
 | 
						|
case ...:;@p
 | 
						|
}
 | 
						|
|
 | 
						|
switch (...)
 | 
						|
{
 | 
						|
case ...:...
 | 
						|
case ...:;@p
 | 
						|
}
 | 
						|
|
 | 
						|
switch (...)
 | 
						|
{
 | 
						|
case ...:...
 | 
						|
case ...:
 | 
						|
case ...:;@p
 | 
						|
}
 | 
						|
)
 | 
						|
 | 
						|
@r1@
 | 
						|
statement S;
 | 
						|
position p1;
 | 
						|
position p != {r_default.p, r_case.p};
 | 
						|
identifier label;
 | 
						|
@@
 | 
						|
(
 | 
						|
label:;
 | 
						|
|
 | 
						|
S@p1;@p
 | 
						|
)
 | 
						|
 | 
						|
@script:python@
 | 
						|
p << r1.p;
 | 
						|
p1 << r1.p1;
 | 
						|
@@
 | 
						|
if p[0].line != p1[0].line_end:
 | 
						|
	cocci.include_match(False)
 | 
						|
 | 
						|
@depends on patch@
 | 
						|
position r1.p;
 | 
						|
@@
 | 
						|
-;@p
 | 
						|
 | 
						|
@script:python depends on report@
 | 
						|
p << r1.p;
 | 
						|
@@
 | 
						|
coccilib.report.print_report(p[0],"Unneeded semicolon")
 | 
						|
 | 
						|
@depends on context@
 | 
						|
position r1.p;
 | 
						|
@@
 | 
						|
*;@p
 | 
						|
 | 
						|
@script:python depends on org@
 | 
						|
p << r1.p;
 | 
						|
@@
 | 
						|
cocci.print_main("Unneeded semicolon",p)
 |