mirror of
https://github.com/github/codeql.git
synced 2025-12-25 21:26:37 +01:00
113 lines
1.7 KiB
JavaScript
113 lines
1.7 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
|
|
});
|
|
}
|
|
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
|
|
});
|
|
|
|
// semmle-extractor-options: --experimental
|