File: controlFlowInOperator.symbols

package info (click to toggle)
node-typescript 5.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 497,488 kB
  • sloc: javascript: 2,107,274; makefile: 6; sh: 1
file content (165 lines) | stat: -rw-r--r-- 5,631 bytes parent folder | download
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))
    }
  }
}