| 12
 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
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 
 | === tests/cases/conformance/controlFlow/controlFlowDestructuringDeclaration.ts ===
function f1() {
>f1 : Symbol(f1, Decl(controlFlowDestructuringDeclaration.ts, 0, 0))
    let x: string | number = 1;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 1, 7))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 1, 7))
    let y: string | undefined = "";
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 3, 7))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 3, 7))
}
function f2() {
>f2 : Symbol(f2, Decl(controlFlowDestructuringDeclaration.ts, 5, 1))
    let [x]: [string | number] = [1];
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 8, 9))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 8, 9))
    let [y]: [string | undefined] = [""];
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 10, 9))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 10, 9))
    let [z = ""]: [string | undefined] = [undefined];
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 12, 9))
>undefined : Symbol(undefined)
    z;
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 12, 9))
}
function f3() {
>f3 : Symbol(f3, Decl(controlFlowDestructuringDeclaration.ts, 14, 1))
    let [x]: (string | number)[] = [1];
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 17, 9))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 17, 9))
    let [y]: (string | undefined)[] = [""];
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 19, 9))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 19, 9))
    let [z = ""]: (string | undefined)[] = [undefined];
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 21, 9))
>undefined : Symbol(undefined)
    z;
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 21, 9))
}
function f4() {
>f4 : Symbol(f4, Decl(controlFlowDestructuringDeclaration.ts, 23, 1))
    let { x }: { x: string | number } = { x: 1 };
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 26, 9))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 26, 16))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 26, 41))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 26, 9))
    let { y }: { y: string | undefined } = { y: "" };
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 28, 9))
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 28, 16))
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 28, 44))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 28, 9))
    let { z = "" }: { z: string | undefined } = { z: undefined };
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 30, 9))
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 30, 21))
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 30, 49))
>undefined : Symbol(undefined)
    z;
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 30, 9))
}
function f5() {
>f5 : Symbol(f5, Decl(controlFlowDestructuringDeclaration.ts, 32, 1))
    let { x }: { x?: string | number } = { x: 1 };
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 35, 9))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 35, 16))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 35, 42))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 35, 9))
    let { y }: { y?: string | undefined } = { y: "" };
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 37, 9))
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 37, 16))
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 37, 45))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 37, 9))
    let { z = "" }: { z?: string | undefined } = { z: undefined };
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 39, 9))
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 39, 21))
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 39, 50))
>undefined : Symbol(undefined)
    z;
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 39, 9))
}
function f6() {
>f6 : Symbol(f6, Decl(controlFlowDestructuringDeclaration.ts, 41, 1))
    let { x }: { x?: string | number } = {};
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 44, 9))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 44, 16))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 44, 9))
    let { y }: { y?: string | undefined } = {};
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 46, 9))
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 46, 16))
    y;
>y : Symbol(y, Decl(controlFlowDestructuringDeclaration.ts, 46, 9))
    let { z = "" }: { z?: string | undefined } = {};
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 48, 9))
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 48, 21))
    z;
>z : Symbol(z, Decl(controlFlowDestructuringDeclaration.ts, 48, 9))
}
function f7() {
>f7 : Symbol(f7, Decl(controlFlowDestructuringDeclaration.ts, 50, 1))
    let o: { [x: string]: number } = { x: 1 };
>o : Symbol(o, Decl(controlFlowDestructuringDeclaration.ts, 53, 7))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 53, 14))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 53, 38))
    let { x }: { [x: string]: string | number } = o;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 54, 9))
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 54, 18))
>o : Symbol(o, Decl(controlFlowDestructuringDeclaration.ts, 53, 7))
    x;
>x : Symbol(x, Decl(controlFlowDestructuringDeclaration.ts, 54, 9))
}
 |