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 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 164 165
|
//// [tests/cases/conformance/controlFlow/controlFlowInOperator.ts] ////
=== controlFlowInOperator.ts ===
const a = 'a';
>a : Symbol(a, Decl(controlFlowInOperator.ts, 0, 5))
const b = 'b';
>b : Symbol(b, Decl(controlFlowInOperator.ts, 1, 5))
const d = 'd';
>d : Symbol(d, Decl(controlFlowInOperator.ts, 2, 5))
type A = { [a]: number; };
>A : Symbol(A, Decl(controlFlowInOperator.ts, 2, 14))
>[a] : Symbol([a], Decl(controlFlowInOperator.ts, 4, 10))
>a : Symbol(a, Decl(controlFlowInOperator.ts, 0, 5))
type B = { [b]: string; };
>B : Symbol(B, Decl(controlFlowInOperator.ts, 4, 26))
>[b] : Symbol([b], Decl(controlFlowInOperator.ts, 5, 10))
>b : Symbol(b, Decl(controlFlowInOperator.ts, 1, 5))
declare const c: A | B;
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
>A : Symbol(A, Decl(controlFlowInOperator.ts, 2, 14))
>B : Symbol(B, Decl(controlFlowInOperator.ts, 4, 26))
if ('a' in c) {
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c; // A
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c['a']; // number;
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
>'a' : Symbol([a], Decl(controlFlowInOperator.ts, 4, 10))
}
if ('d' in c) {
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c; // never
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
}
if (a in c) {
>a : Symbol(a, Decl(controlFlowInOperator.ts, 0, 5))
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c; // A
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c[a]; // number;
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
>a : Symbol(a, Decl(controlFlowInOperator.ts, 0, 5))
}
if (d in c) {
>d : Symbol(d, Decl(controlFlowInOperator.ts, 2, 5))
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
c; // never
>c : Symbol(c, Decl(controlFlowInOperator.ts, 7, 13))
}
// repro from https://github.com/microsoft/TypeScript/issues/54790
function uniqueID_54790(
>uniqueID_54790 : Symbol(uniqueID_54790, Decl(controlFlowInOperator.ts, 25, 1))
id: string | undefined,
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
seenIDs: { [key: string]: string }
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 30, 25))
>key : Symbol(key, Decl(controlFlowInOperator.ts, 31, 14))
): string {
if (id === undefined) {
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
>undefined : Symbol(undefined)
id = "1";
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
}
if (!(id in seenIDs)) {
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 30, 25))
return id;
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
}
for (let i = 1; i < Number.MAX_VALUE; i++) {
>i : Symbol(i, Decl(controlFlowInOperator.ts, 39, 10))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 39, 10))
>Number.MAX_VALUE : Symbol(NumberConstructor.MAX_VALUE, Decl(lib.es5.d.ts, --, --))
>Number : Symbol(Number, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
>MAX_VALUE : Symbol(NumberConstructor.MAX_VALUE, Decl(lib.es5.d.ts, --, --))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 39, 10))
const newID = `${id}-${i}`;
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 40, 9))
>id : Symbol(id, Decl(controlFlowInOperator.ts, 29, 24))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 39, 10))
if (!(newID in seenIDs)) {
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 40, 9))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 30, 25))
return newID;
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 40, 9))
}
}
throw Error("heat death of the universe");
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
}
function uniqueID_54790_2(id: string | number, seenIDs: object) {
>uniqueID_54790_2 : Symbol(uniqueID_54790_2, Decl(controlFlowInOperator.ts, 46, 1))
>id : Symbol(id, Decl(controlFlowInOperator.ts, 48, 26))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 48, 46))
id = "a";
>id : Symbol(id, Decl(controlFlowInOperator.ts, 48, 26))
for (let i = 1; i < 3; i++) {
>i : Symbol(i, Decl(controlFlowInOperator.ts, 50, 10))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 50, 10))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 50, 10))
const newID = `${id}`;
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 51, 9))
>id : Symbol(id, Decl(controlFlowInOperator.ts, 48, 26))
if (newID in seenIDs) {
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 51, 9))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 48, 46))
}
}
}
function uniqueID_54790_3(id: string | number, seenIDs: object) {
>uniqueID_54790_3 : Symbol(uniqueID_54790_3, Decl(controlFlowInOperator.ts, 55, 1))
>id : Symbol(id, Decl(controlFlowInOperator.ts, 57, 26))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 57, 46))
id = "a";
>id : Symbol(id, Decl(controlFlowInOperator.ts, 57, 26))
for (let i = 1; i < 3; i++) {
>i : Symbol(i, Decl(controlFlowInOperator.ts, 59, 10))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 59, 10))
>i : Symbol(i, Decl(controlFlowInOperator.ts, 59, 10))
const newID = id;
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 60, 9))
>id : Symbol(id, Decl(controlFlowInOperator.ts, 57, 26))
if (newID in seenIDs) {
>newID : Symbol(newID, Decl(controlFlowInOperator.ts, 60, 9))
>seenIDs : Symbol(seenIDs, Decl(controlFlowInOperator.ts, 57, 46))
}
}
}
|