1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
//// [controlFlowLoopAnalysis.ts]
// Repro from #8418
let cond: boolean;
function foo(x: number): number { return 1; }
function test1() {
let x: number | undefined;
while (cond) {
while (cond) {
while (cond) {
x = foo(x);
}
}
x = 1;
}
}
// Repro from #8418
function test2() {
let x: number | undefined;
x = 1;
while (cond) {
while (cond) {
x = foo(x);
}
}
}
// Repro from #8511
function mapUntilCant<a, b>(
values: a[],
canTake: (value: a, index: number) => boolean,
mapping: (value: a, index: number) => b
): b[] {
let result: b[] = [];
for (let index = 0, length = values.length; index < length; index++) {
let value = values[index];
if (canTake(value, index)) {
result.push(mapping(value, index));
} else {
return result;
}
}
return result;
}
//// [controlFlowLoopAnalysis.js]
// Repro from #8418
var cond;
function foo(x) { return 1; }
function test1() {
var x;
while (cond) {
while (cond) {
while (cond) {
x = foo(x);
}
}
x = 1;
}
}
// Repro from #8418
function test2() {
var x;
x = 1;
while (cond) {
while (cond) {
x = foo(x);
}
}
}
// Repro from #8511
function mapUntilCant(values, canTake, mapping) {
var result = [];
for (var index = 0, length_1 = values.length; index < length_1; index++) {
var value = values[index];
if (canTake(value, index)) {
result.push(mapping(value, index));
}
else {
return result;
}
}
return result;
}
|