File: typeGuardsNestedAssignments.js

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (85 lines) | stat: -rw-r--r-- 1,679 bytes parent folder | download | duplicates (5)
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
//// [typeGuardsNestedAssignments.ts]
class Foo {
    x: string;
}

declare function getFooOrNull(): Foo | null;
declare function getStringOrNumberOrNull(): string | number | null;

function f1() {
    let foo: Foo | null;
    if ((foo = getFooOrNull()) !== null) {
        foo;  // Foo
    }
}

function f2() {
    let foo1: Foo | null;
    let foo2: Foo | null;
    if ((foo1 = getFooOrNull(), foo2 = foo1) !== null) {
        foo1;  // Foo | null
        foo2;  // Foo
    }
}

function f3() {
    let obj: Object | null;
    if ((obj = getFooOrNull()) instanceof Foo) {
        obj;
    }
}

function f4() {
    let x: string | number | null;
    if (typeof (x = getStringOrNumberOrNull()) === "number") {
        x;
    }
}

// Repro from #8851

const re = /./g
let match: RegExpExecArray | null

while ((match = re.exec("xxx")) != null) {
    const length = match[1].length + match[2].length
}

//// [typeGuardsNestedAssignments.js]
var Foo = /** @class */ (function () {
    function Foo() {
    }
    return Foo;
}());
function f1() {
    var foo;
    if ((foo = getFooOrNull()) !== null) {
        foo; // Foo
    }
}
function f2() {
    var foo1;
    var foo2;
    if ((foo1 = getFooOrNull(), foo2 = foo1) !== null) {
        foo1; // Foo | null
        foo2; // Foo
    }
}
function f3() {
    var obj;
    if ((obj = getFooOrNull()) instanceof Foo) {
        obj;
    }
}
function f4() {
    var x;
    if (typeof (x = getStringOrNumberOrNull()) === "number") {
        x;
    }
}
// Repro from #8851
var re = /./g;
var match;
while ((match = re.exec("xxx")) != null) {
    var length_1 = match[1].length + match[2].length;
}