/// /// 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)