Files
codeql/javascript/ql/test/library-tests/Generators/generators.js
Asger F 9372f7993d JS: Update Generators test
Data flow difference is benign
2023-10-13 13:15:07 +02:00

74 lines
1.1 KiB
JavaScript

(function () {
var source = "source";
sink(source); // NOT OK
function *gen1() {
yield source;
}
for (const x of gen1()) {
sink(x); // NOT OK
}
function *gen2() {
yield "safe";
return source;
}
sink(gen2()); // OK
Array.from(gen1()).forEach(x => sink(x)); // NOT OK
function gen3() {
yield source;
}
Array.from(gen3()).forEach(x => sink(x)); // NOT OK
function *gen4() {
throw source;
}
try {
Array.from(gen4());
} catch (e) {
sink(e); // NOT OK
}
try {
gen4();
} catch (e) {
sink(e); // OK - exception is only thrown upon iteration
}
const iterator = gen4();
try {
for (let v of iterator) {
sink(v); // OK
}
} catch (e) {
sink(e); // NOT OK
}
try {
Array.from(iterator);
} catch (e) {
sink(e); // NOT OK
}
function *delegating() {
yield* delegate();
}
function *delegate() {
yield source;
}
Array.from(delegating()).forEach(x => sink(x)); // NOT OK
function *delegating2() {
yield* returnsTaint();
}
function returnsTaint() {
return source;
}
Array.from(delegating2()).forEach(x => sink(x)); // OK
});