mirror of
https://github.com/github/codeql.git
synced 2025-12-17 17:23:36 +01:00
85 lines
1.1 KiB
Java
85 lines
1.1 KiB
Java
public class A {
|
|
|
|
public interface Cond {
|
|
boolean cond();
|
|
}
|
|
|
|
void test1(int x, Cond c) {
|
|
int i;
|
|
|
|
// --- do loops ---
|
|
|
|
do {
|
|
if (c.cond())
|
|
continue; // BAD
|
|
if (c.cond())
|
|
break;
|
|
} while (false);
|
|
|
|
do {
|
|
if (c.cond())
|
|
continue;
|
|
if (c.cond())
|
|
break;
|
|
} while (true);
|
|
|
|
do {
|
|
if (c.cond())
|
|
continue;
|
|
if (c.cond())
|
|
break;
|
|
} while (c.cond());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// --- nested loops ---
|
|
|
|
do {
|
|
do {
|
|
if (c.cond())
|
|
continue; // BAD
|
|
if (c.cond())
|
|
break;
|
|
} while (false);
|
|
if (c.cond())
|
|
break;
|
|
} while (true);
|
|
|
|
do {
|
|
do {
|
|
if (c.cond())
|
|
continue; // GOOD
|
|
if (c.cond())
|
|
break;
|
|
} while (true);
|
|
} while (false);
|
|
|
|
do {
|
|
switch (x) {
|
|
case 1:
|
|
// do [1]
|
|
break; // break out of the switch
|
|
default:
|
|
// do [2]
|
|
// break out of the loop entirely, skipping [3]
|
|
continue; // BAD; labelled break is better
|
|
};
|
|
// do [3]
|
|
} while (false);
|
|
}
|
|
}
|