Files
codeql/java/ql/test/query-tests/ContinueInFalseLoop/A.java
Anders Schack-Mulligen 3462624995 Java: Add test.
2019-10-23 16:24:26 +02:00

85 lines
1.5 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());
// --- while, for loops ---
while (false) {
if (c.cond())
continue; // GOOD [never reached, if the condition changed so it was then the result would no longer apply]
if (c.cond())
break;
}
for (i = 0; false; i++) {
if (c.cond())
continue; // GOOD [never reached, if the condition changed so it was then the result would no longer apply]
if (c.cond())
break;
}
// --- 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);
}
}