Skip to content

Commit e0ccb0d

Browse files
committed
Accept new baselines
1 parent 5aff92b commit e0ccb0d

6 files changed

+472
-60
lines changed

tests/baselines/reference/enumIndexer.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,5 @@ var x = _arr.map(o => MyEnumType[o.key] === enumValue); // these are not same ty
3838
>o.key : string
3939
>o : { key: string; }
4040
>key : string
41-
>enumValue : MyEnumType.foo
41+
>enumValue : MyEnumType
4242

tests/baselines/reference/narrowingPastLastAssignment.errors.txt

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
narrowingPastLastAssignment.ts(67,9): error TS7034: Variable 'x' implicitly has type 'any' in some locations where its type cannot be determined.
2-
narrowingPastLastAssignment.ts(69,20): error TS7005: Variable 'x' implicitly has an 'any' type.
1+
narrowingPastLastAssignment.ts(88,9): error TS7034: Variable 'x' implicitly has type 'any' in some locations where its type cannot be determined.
2+
narrowingPastLastAssignment.ts(90,20): error TS7005: Variable 'x' implicitly has an 'any' type.
33

44

55
==== narrowingPastLastAssignment.ts (2 errors) ====
@@ -66,6 +66,27 @@ narrowingPastLastAssignment.ts(69,20): error TS7005: Variable 'x' implicitly has
6666
action(() => { x /* number */ });
6767
}
6868

69+
function f5a(cond: boolean) {
70+
if (cond) {
71+
let x: number | undefined;
72+
x = 1;
73+
action(() => { x /* number */ });
74+
}
75+
else {
76+
let x: number | undefined;
77+
x = 2;
78+
action(() => { x /* number */ });
79+
}
80+
}
81+
82+
function f5b() {
83+
for (let x = 0; x < 10; x++) {
84+
if (x === 1 || x === 2) {
85+
action(() => { x /* 1 | 2 */ })
86+
}
87+
}
88+
}
89+
6990
// Implicit any variables have a known type following last assignment
7091

7192
function f6() {
@@ -92,6 +113,23 @@ narrowingPastLastAssignment.ts(69,20): error TS7005: Variable 'x' implicitly has
92113
}
93114
}
94115

116+
// Narrowings are not preserved for global variables
117+
118+
let g: string | number;
119+
g = "abc";
120+
action(() => { g /* string | number */ });
121+
122+
// Narrowings are not preserved for exported namespace members
123+
124+
namespace Foo {
125+
export let x: string | number;
126+
x = "abc";
127+
action(() => { x /* string | number */ });
128+
let y: string | number;
129+
y = "abc";
130+
action(() => { y /* string */ });
131+
}
132+
95133
// Repros from #35124
96134

97135
function f10() {
@@ -113,11 +151,13 @@ narrowingPastLastAssignment.ts(69,20): error TS7005: Variable 'x' implicitly has
113151

114152
// Repro from #52104
115153

116-
const fooMap: Map<string,Array<number>> = new Map()
117-
const values = [1, 2, 3, 4, 5];
118-
let foo = fooMap.get("a");
119-
if (foo == null) {
120-
foo = [];
154+
function f12() {
155+
const fooMap: Map<string,Array<number>> = new Map()
156+
const values = [1, 2, 3, 4, 5];
157+
let foo = fooMap.get("a");
158+
if (foo == null) {
159+
foo = [];
160+
}
161+
values.forEach(v => foo.push(v));
121162
}
122-
values.forEach(v => foo.push(v));
123163

tests/baselines/reference/narrowingPastLastAssignment.symbols

Lines changed: 135 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -152,123 +152,214 @@ function f5(x: string | number, cond: () => boolean) {
152152
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 51, 12))
153153
}
154154

155+
function f5a(cond: boolean) {
156+
>f5a : Symbol(f5a, Decl(narrowingPastLastAssignment.ts, 61, 1))
157+
>cond : Symbol(cond, Decl(narrowingPastLastAssignment.ts, 63, 13))
158+
159+
if (cond) {
160+
>cond : Symbol(cond, Decl(narrowingPastLastAssignment.ts, 63, 13))
161+
162+
let x: number | undefined;
163+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 65, 11))
164+
165+
x = 1;
166+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 65, 11))
167+
168+
action(() => { x /* number */ });
169+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
170+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 65, 11))
171+
}
172+
else {
173+
let x: number | undefined;
174+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 70, 11))
175+
176+
x = 2;
177+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 70, 11))
178+
179+
action(() => { x /* number */ });
180+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
181+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 70, 11))
182+
}
183+
}
184+
185+
function f5b() {
186+
>f5b : Symbol(f5b, Decl(narrowingPastLastAssignment.ts, 74, 1))
187+
188+
for (let x = 0; x < 10; x++) {
189+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
190+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
191+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
192+
193+
if (x === 1 || x === 2) {
194+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
195+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
196+
197+
action(() => { x /* 1 | 2 */ })
198+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
199+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 77, 12))
200+
}
201+
}
202+
}
203+
155204
// Implicit any variables have a known type following last assignment
156205

157206
function f6() {
158-
>f6 : Symbol(f6, Decl(narrowingPastLastAssignment.ts, 61, 1))
207+
>f6 : Symbol(f6, Decl(narrowingPastLastAssignment.ts, 82, 1))
159208

160209
let x;
161-
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 66, 7))
210+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 87, 7))
162211

163212
x = "abc";
164-
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 66, 7))
213+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 87, 7))
165214

166215
action(() => { x }); // Error
167216
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
168-
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 66, 7))
217+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 87, 7))
169218

170219
x = 42;
171-
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 66, 7))
220+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 87, 7))
172221

173222
action(() => { x /* number */ });
174223
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
175-
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 66, 7))
224+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 87, 7))
176225
}
177226

178227
// Narrowings on catch variables are preserved past last assignment
179228

180229
function f7() {
181-
>f7 : Symbol(f7, Decl(narrowingPastLastAssignment.ts, 71, 1))
230+
>f7 : Symbol(f7, Decl(narrowingPastLastAssignment.ts, 92, 1))
182231

183232
try {
184233
}
185234
catch (e) {
186-
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 78, 11))
235+
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 99, 11))
187236

188237
if (e instanceof Error) {
189-
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 78, 11))
238+
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 99, 11))
190239
>Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2022.error.d.ts, --, --))
191240

192241
let f = () => { e /* Error */ }
193-
>f : Symbol(f, Decl(narrowingPastLastAssignment.ts, 80, 15))
194-
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 78, 11))
242+
>f : Symbol(f, Decl(narrowingPastLastAssignment.ts, 101, 15))
243+
>e : Symbol(e, Decl(narrowingPastLastAssignment.ts, 99, 11))
195244
}
196245
}
197246
}
198247

248+
// Narrowings are not preserved for global variables
249+
250+
let g: string | number;
251+
>g : Symbol(g, Decl(narrowingPastLastAssignment.ts, 108, 3))
252+
253+
g = "abc";
254+
>g : Symbol(g, Decl(narrowingPastLastAssignment.ts, 108, 3))
255+
256+
action(() => { g /* string | number */ });
257+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
258+
>g : Symbol(g, Decl(narrowingPastLastAssignment.ts, 108, 3))
259+
260+
// Narrowings are not preserved for exported namespace members
261+
262+
namespace Foo {
263+
>Foo : Symbol(Foo, Decl(narrowingPastLastAssignment.ts, 110, 42))
264+
265+
export let x: string | number;
266+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 115, 14))
267+
268+
x = "abc";
269+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 115, 14))
270+
271+
action(() => { x /* string | number */ });
272+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
273+
>x : Symbol(x, Decl(narrowingPastLastAssignment.ts, 115, 14))
274+
275+
let y: string | number;
276+
>y : Symbol(y, Decl(narrowingPastLastAssignment.ts, 118, 7))
277+
278+
y = "abc";
279+
>y : Symbol(y, Decl(narrowingPastLastAssignment.ts, 118, 7))
280+
281+
action(() => { y /* string */ });
282+
>action : Symbol(action, Decl(narrowingPastLastAssignment.ts, 0, 0))
283+
>y : Symbol(y, Decl(narrowingPastLastAssignment.ts, 118, 7))
284+
}
285+
199286
// Repros from #35124
200287

201288
function f10() {
202-
>f10 : Symbol(f10, Decl(narrowingPastLastAssignment.ts, 83, 1))
289+
>f10 : Symbol(f10, Decl(narrowingPastLastAssignment.ts, 121, 1))
203290

204291
let i: number | undefined;
205-
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 88, 7))
292+
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 126, 7))
206293

207294
i = 0;
208-
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 88, 7))
295+
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 126, 7))
209296

210297
return (k: number) => k === i + 1;
211-
>k : Symbol(k, Decl(narrowingPastLastAssignment.ts, 90, 12))
212-
>k : Symbol(k, Decl(narrowingPastLastAssignment.ts, 90, 12))
213-
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 88, 7))
298+
>k : Symbol(k, Decl(narrowingPastLastAssignment.ts, 128, 12))
299+
>k : Symbol(k, Decl(narrowingPastLastAssignment.ts, 128, 12))
300+
>i : Symbol(i, Decl(narrowingPastLastAssignment.ts, 126, 7))
214301
}
215302

216303
function makeAdder(n?: number) {
217-
>makeAdder : Symbol(makeAdder, Decl(narrowingPastLastAssignment.ts, 91, 1))
218-
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 93, 19))
304+
>makeAdder : Symbol(makeAdder, Decl(narrowingPastLastAssignment.ts, 129, 1))
305+
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 131, 19))
219306

220307
n ??= 0;
221-
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 93, 19))
308+
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 131, 19))
222309

223310
return (m: number) => n + m;
224-
>m : Symbol(m, Decl(narrowingPastLastAssignment.ts, 95, 12))
225-
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 93, 19))
226-
>m : Symbol(m, Decl(narrowingPastLastAssignment.ts, 95, 12))
311+
>m : Symbol(m, Decl(narrowingPastLastAssignment.ts, 133, 12))
312+
>n : Symbol(n, Decl(narrowingPastLastAssignment.ts, 131, 19))
313+
>m : Symbol(m, Decl(narrowingPastLastAssignment.ts, 133, 12))
227314
}
228315

229316
function f11() {
230-
>f11 : Symbol(f11, Decl(narrowingPastLastAssignment.ts, 96, 1))
317+
>f11 : Symbol(f11, Decl(narrowingPastLastAssignment.ts, 134, 1))
231318

232319
let r;
233-
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 99, 7))
320+
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 137, 7))
234321

235322
r = "b";
236-
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 99, 7))
323+
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 137, 7))
237324

238325
() => r;
239-
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 99, 7))
326+
>r : Symbol(r, Decl(narrowingPastLastAssignment.ts, 137, 7))
240327
}
241328

242329
// Repro from #52104
243330

244-
const fooMap: Map<string,Array<number>> = new Map()
245-
>fooMap : Symbol(fooMap, Decl(narrowingPastLastAssignment.ts, 106, 5))
331+
function f12() {
332+
>f12 : Symbol(f12, Decl(narrowingPastLastAssignment.ts, 140, 1))
333+
334+
const fooMap: Map<string,Array<number>> = new Map()
335+
>fooMap : Symbol(fooMap, Decl(narrowingPastLastAssignment.ts, 145, 9))
246336
>Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
247337
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 4 more)
248338
>Map : Symbol(Map, Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.collection.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
249339

250-
const values = [1, 2, 3, 4, 5];
251-
>values : Symbol(values, Decl(narrowingPastLastAssignment.ts, 107, 5))
340+
const values = [1, 2, 3, 4, 5];
341+
>values : Symbol(values, Decl(narrowingPastLastAssignment.ts, 146, 9))
252342

253-
let foo = fooMap.get("a");
254-
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 108, 3))
343+
let foo = fooMap.get("a");
344+
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 147, 7))
255345
>fooMap.get : Symbol(Map.get, Decl(lib.es2015.collection.d.ts, --, --))
256-
>fooMap : Symbol(fooMap, Decl(narrowingPastLastAssignment.ts, 106, 5))
346+
>fooMap : Symbol(fooMap, Decl(narrowingPastLastAssignment.ts, 145, 9))
257347
>get : Symbol(Map.get, Decl(lib.es2015.collection.d.ts, --, --))
258348

259-
if (foo == null) {
260-
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 108, 3))
349+
if (foo == null) {
350+
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 147, 7))
261351

262-
foo = [];
263-
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 108, 3))
264-
}
265-
values.forEach(v => foo.push(v));
352+
foo = [];
353+
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 147, 7))
354+
}
355+
values.forEach(v => foo.push(v));
266356
>values.forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --))
267-
>values : Symbol(values, Decl(narrowingPastLastAssignment.ts, 107, 5))
357+
>values : Symbol(values, Decl(narrowingPastLastAssignment.ts, 146, 9))
268358
>forEach : Symbol(Array.forEach, Decl(lib.es5.d.ts, --, --))
269-
>v : Symbol(v, Decl(narrowingPastLastAssignment.ts, 112, 15))
359+
>v : Symbol(v, Decl(narrowingPastLastAssignment.ts, 151, 19))
270360
>foo.push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --))
271-
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 108, 3))
361+
>foo : Symbol(foo, Decl(narrowingPastLastAssignment.ts, 147, 7))
272362
>push : Symbol(Array.push, Decl(lib.es5.d.ts, --, --))
273-
>v : Symbol(v, Decl(narrowingPastLastAssignment.ts, 112, 15))
363+
>v : Symbol(v, Decl(narrowingPastLastAssignment.ts, 151, 19))
364+
}
274365

0 commit comments

Comments
 (0)