Files
codeql/javascript/ql/test/query-tests/Statements/UselessConditional/UselessConditional.js
2020-05-19 15:30:36 +01:00

193 lines
3.2 KiB
JavaScript

function getLastLine(input) {
var lines = [], nextLine;
while ((nextLine = readNextLine(input)))
lines.push(nextLine);
if (!lines)
throw new Error("No lines!");
return lines[lines.length-1];
}
function lookup(cache, k) {
var v;
return k in cache ? cache[k] : (v = new Entry(recompute())) && (cache[k] = v);
}
function test(a, b) {
if (!a && !b) {
if (a);
if (b);
}
if (!(a || b)) {
if (a);
if (b);
}
var x = new X();
if(x){}
if (new X()){}
if((x)){}
if(((x))){}
if ((new X())){}
x = 0n;
if (x) // NOT OK
;
}
async function awaitFlow(){
var v;
if (y)
v = await f()
if (v) { // OK
}
}
(function(){
function knownF() {
return false;
}
var known = knownF();
if (known)
return;
if (known)
return;
var unknown = unknownF();
if (unknown)
return;
if (unknown) // NOT OK
return;
});
(function (...x) {
x || y // NOT OK
});
(function() {
function f1(x) {
x || y // NOT OK, but whitelisted
}
f1(true);
function f2(x) {
while (true)
x || y // NOT OK
}
f2(true);
function f3(x) {
(function(){
x || y // NOT OK, but whitelisted
});
}
f3(true);
});
(function() {
if ((x, true));
});
(function (x, y) {
if (!x) {
while (x) { // NOT OK
f();
}
while (true) { // OK
break;
}
if (true && true) {} // NOT OK
if (y && x) {} // NOT OK
if (y && (x)) {} // NOT OK
do { } while (x); // NOT OK
}
});
(function(x,y) {
let obj = (x && {}) || y; // OK
if ((x && {}) || y) {} // NOT OK
});
(function(){
function constantFalse1() {
return false;
}
if (constantFalse1()) // OK
return;
function constantFalse2() {
return false;
}
let constantFalse = unknown? constantFalse1 : constantFalse2;
if (constantFalse2()) // OK
return;
function constantUndefined() {
return undefined;
}
if (constantUndefined()) // NOT OK
return;
function constantFalseOrUndefined1() {
return unknown? false: undefined;
}
if (constantFalseOrUndefined1()) // NOT OK
return;
let constantFalseOrUndefined2 = unknown? constantFalse1 : constantUndefined;
if (constantFalseOrUndefined2()) // NOT OK
return;
});
(function () {
function p() {
return {};
}
if (p()) { // NOT OK
}
var v = p();
if (v) { // NOT OK
}
if (v) { // NOT OK, but not detected due to SSA limitations
}
});
(function() {
function findOrThrow() {
var e = find();
if (e) return e;
throw new Error();
}
if(findOrThrow()){ // NOT OK
}
var v = findOrThrow();
if (v) { // NOT OK
}
if (v) { // NOT OK, but not detected due to SSA limitations
}
});
(function () {
function f(){ return { v: unkown };}
f();
var { v } = f();
if (v) { // OK
}
});
(function() {
function outer(x) {
addEventListener("click", () => {
if (!x && something()) { // NOT OK, but whitelisted
something();
}
});
}
function inner() {
outer(); // Omit parameter
}
inner();
});