1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun/// 3*4882a593Smuzhiyun/// Remove unneeded semicolon. 4*4882a593Smuzhiyun/// 5*4882a593Smuzhiyun// Confidence: Moderate 6*4882a593Smuzhiyun// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. 7*4882a593Smuzhiyun// URL: http://coccinelle.lip6.fr/ 8*4882a593Smuzhiyun// Comments: Some false positives on empty default cases in switch statements. 9*4882a593Smuzhiyun// Options: --no-includes --include-headers 10*4882a593Smuzhiyun 11*4882a593Smuzhiyunvirtual patch 12*4882a593Smuzhiyunvirtual report 13*4882a593Smuzhiyunvirtual context 14*4882a593Smuzhiyunvirtual org 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun@r_default@ 17*4882a593Smuzhiyunposition p; 18*4882a593Smuzhiyun@@ 19*4882a593Smuzhiyunswitch (...) 20*4882a593Smuzhiyun{ 21*4882a593Smuzhiyundefault: ...;@p 22*4882a593Smuzhiyun} 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun@r_case@ 25*4882a593Smuzhiyunposition p; 26*4882a593Smuzhiyun@@ 27*4882a593Smuzhiyun( 28*4882a593Smuzhiyunswitch (...) 29*4882a593Smuzhiyun{ 30*4882a593Smuzhiyuncase ...:;@p 31*4882a593Smuzhiyun} 32*4882a593Smuzhiyun| 33*4882a593Smuzhiyunswitch (...) 34*4882a593Smuzhiyun{ 35*4882a593Smuzhiyuncase ...:... 36*4882a593Smuzhiyuncase ...:;@p 37*4882a593Smuzhiyun} 38*4882a593Smuzhiyun| 39*4882a593Smuzhiyunswitch (...) 40*4882a593Smuzhiyun{ 41*4882a593Smuzhiyuncase ...:... 42*4882a593Smuzhiyuncase ...: 43*4882a593Smuzhiyuncase ...:;@p 44*4882a593Smuzhiyun} 45*4882a593Smuzhiyun) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun@r1@ 48*4882a593Smuzhiyunstatement S; 49*4882a593Smuzhiyunposition p1; 50*4882a593Smuzhiyunposition p != {r_default.p, r_case.p}; 51*4882a593Smuzhiyunidentifier label; 52*4882a593Smuzhiyun@@ 53*4882a593Smuzhiyun( 54*4882a593Smuzhiyunlabel:; 55*4882a593Smuzhiyun| 56*4882a593SmuzhiyunS@p1;@p 57*4882a593Smuzhiyun) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun@script:python@ 60*4882a593Smuzhiyunp << r1.p; 61*4882a593Smuzhiyunp1 << r1.p1; 62*4882a593Smuzhiyun@@ 63*4882a593Smuzhiyunif p[0].line != p1[0].line_end: 64*4882a593Smuzhiyun cocci.include_match(False) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun@depends on patch@ 67*4882a593Smuzhiyunposition r1.p; 68*4882a593Smuzhiyun@@ 69*4882a593Smuzhiyun-;@p 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun@script:python depends on report@ 72*4882a593Smuzhiyunp << r1.p; 73*4882a593Smuzhiyun@@ 74*4882a593Smuzhiyuncoccilib.report.print_report(p[0],"Unneeded semicolon") 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun@depends on context@ 77*4882a593Smuzhiyunposition r1.p; 78*4882a593Smuzhiyun@@ 79*4882a593Smuzhiyun*;@p 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun@script:python depends on org@ 82*4882a593Smuzhiyunp << r1.p; 83*4882a593Smuzhiyun@@ 84*4882a593Smuzhiyuncocci.print_main("Unneeded semicolon",p) 85