@@ -2286,7 +2286,7 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
22862286 multipleConditionalSuccessorKinds ( node , t1 , t2 , succ1 , succ2 )
22872287 )
22882288 or
2289- query = "directAndConditionalSuccessor " and
2289+ query = "directAndConditionalSuccessors " and
22902290 results =
22912291 strictcount ( ControlFlowNode node , ConditionalSuccessor t1 , DirectSuccessor t2 ,
22922292 ControlFlowNode succ1 , ControlFlowNode succ2 |
@@ -2295,6 +2295,19 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
22952295 or
22962296 query = "selfLoop" and
22972297 results = strictcount ( ControlFlowNode node , SuccessorType t | selfLoop ( node , t ) )
2298+ or
2299+ query = "bodyPartNonOverlap" and
2300+ results = strictcount ( Callable c | bodyPartNonOverlap ( c ) )
2301+ or
2302+ query = "parameterNonOverlap" and
2303+ results = strictcount ( Callable c , Parameter p | parameterNonOverlap ( c , p ) )
2304+ or
2305+ query = "parameterEnclosingCallable" and
2306+ results = strictcount ( Parameter p , Callable c | parameterEnclosingCallable ( p , c ) )
2307+ or
2308+ query = "multipleDefaultCases" and
2309+ results =
2310+ strictcount ( Switch s , int defaultCases | multipleDefaultCases ( s , defaultCases ) )
22982311 }
22992312
23002313 /**
@@ -2495,6 +2508,16 @@ module Make0<LocationSig Location, AstSig<Location> Ast> {
24952508 p = callableGetParameter ( c , _) and
24962509 not c = getEnclosingCallable ( p )
24972510 }
2511+
2512+ /**
2513+ * Holds if a switch `s` has multiple default cases.
2514+ *
2515+ * A well-formed switch statement should have at most one default case.
2516+ */
2517+ query predicate multipleDefaultCases ( Switch s , int defaultCases ) {
2518+ defaultCases = strictcount ( DefaultCase c | s .getCase ( _) = c ) and
2519+ defaultCases > 1
2520+ }
24982521 }
24992522 }
25002523 }
0 commit comments