Skip to content

Commit 7983a20

Browse files
committed
test: add failing test for microsoft#19577
1 parent 4caa3f1 commit 7983a20

File tree

4 files changed

+120
-0
lines changed

4 files changed

+120
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//// [nonNullFullInference.ts]
2+
// https://github.com/microsoft/TypeScript/issues/19577
3+
4+
function testNonNullInference(numbers: number[]) {
5+
let last;
6+
7+
for (const n of numbers) {
8+
if (n % 2) {
9+
return n;
10+
}
11+
12+
last = n;
13+
}
14+
15+
last; // number | undefined
16+
last!; // number
17+
}
18+
19+
20+
//// [nonNullFullInference.js]
21+
// https://github.com/microsoft/TypeScript/issues/19577
22+
function testNonNullInference(numbers) {
23+
var last;
24+
for (var _i = 0, numbers_1 = numbers; _i < numbers_1.length; _i++) {
25+
var n = numbers_1[_i];
26+
if (n % 2) {
27+
return n;
28+
}
29+
last = n;
30+
}
31+
last; // number | undefined
32+
last; // number
33+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
=== tests/cases/compiler/nonNullFullInference.ts ===
2+
// https://github.com/microsoft/TypeScript/issues/19577
3+
4+
function testNonNullInference(numbers: number[]) {
5+
>testNonNullInference : Symbol(testNonNullInference, Decl(nonNullFullInference.ts, 0, 0))
6+
>numbers : Symbol(numbers, Decl(nonNullFullInference.ts, 2, 30))
7+
8+
let last;
9+
>last : Symbol(last, Decl(nonNullFullInference.ts, 3, 7))
10+
11+
for (const n of numbers) {
12+
>n : Symbol(n, Decl(nonNullFullInference.ts, 5, 14))
13+
>numbers : Symbol(numbers, Decl(nonNullFullInference.ts, 2, 30))
14+
15+
if (n % 2) {
16+
>n : Symbol(n, Decl(nonNullFullInference.ts, 5, 14))
17+
18+
return n;
19+
>n : Symbol(n, Decl(nonNullFullInference.ts, 5, 14))
20+
}
21+
22+
last = n;
23+
>last : Symbol(last, Decl(nonNullFullInference.ts, 3, 7))
24+
>n : Symbol(n, Decl(nonNullFullInference.ts, 5, 14))
25+
}
26+
27+
last; // number | undefined
28+
>last : Symbol(last, Decl(nonNullFullInference.ts, 3, 7))
29+
30+
last!; // number
31+
>last : Symbol(last, Decl(nonNullFullInference.ts, 3, 7))
32+
}
33+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
=== tests/cases/compiler/nonNullFullInference.ts ===
2+
// https://github.com/microsoft/TypeScript/issues/19577
3+
4+
function testNonNullInference(numbers: number[]) {
5+
>testNonNullInference : (numbers: number[]) => number
6+
>numbers : number[]
7+
8+
let last;
9+
>last : any
10+
11+
for (const n of numbers) {
12+
>n : number
13+
>numbers : number[]
14+
15+
if (n % 2) {
16+
>n % 2 : number
17+
>n : number
18+
>2 : 2
19+
20+
return n;
21+
>n : number
22+
}
23+
24+
last = n;
25+
>last = n : number
26+
>last : any
27+
>n : number
28+
}
29+
30+
last; // number | undefined
31+
>last : number | undefined
32+
33+
last!; // number
34+
>last! : number
35+
>last : number | undefined
36+
}
37+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// @noImplicitAny: true
2+
// https://github.com/microsoft/TypeScript/issues/19577
3+
4+
function testNonNullInference(numbers: number[]) {
5+
let last;
6+
7+
for (const n of numbers) {
8+
if (n % 2) {
9+
return n;
10+
}
11+
12+
last = n;
13+
}
14+
15+
last; // number | undefined
16+
last!; // number
17+
}

0 commit comments

Comments
 (0)