Skip to content

Commit b45165d

Browse files
committed
strictNullChecks pragma tests, including cross-file type behavior
1 parent f5134a5 commit b45165d

30 files changed

+7548
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
tests/cases/conformance/pragma/strictNullChecks/file1.ts(9,14): error TS2322: Type 'undefined' is not assignable to type 'string'.
2+
tests/cases/conformance/pragma/strictNullChecks/file1.ts(11,1): error TS2322: Type 'B' is not assignable to type 'A'.
3+
tests/cases/conformance/pragma/strictNullChecks/file1.ts(16,20): error TS2322: Type 'undefined' is not assignable to type 'string'.
4+
tests/cases/conformance/pragma/strictNullChecks/file1.ts(25,1): error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
5+
tests/cases/conformance/pragma/strictNullChecks/file1.ts(31,1): error TS2322: Type 'B' is not assignable to type 'A'.
6+
tests/cases/conformance/pragma/strictNullChecks/file2.ts(18,1): error TS2322: Type 'B' is not assignable to type 'A'.
7+
Types of property 'member' are incompatible.
8+
Type 'string | undefined' is not assignable to type 'string'.
9+
Type 'undefined' is not assignable to type 'string'.
10+
tests/cases/conformance/pragma/strictNullChecks/file2.ts(24,1): error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
11+
Types of property 'member' are incompatible.
12+
Type 'string | undefined' is not assignable to type 'string'.
13+
Type 'undefined' is not assignable to type 'string'.
14+
tests/cases/conformance/pragma/strictNullChecks/file2.ts(27,1): error TS2322: Type 'B' is not assignable to type 'A'.
15+
Types of property 'member' are incompatible.
16+
Type 'string | undefined' is not assignable to type 'string'.
17+
Type 'undefined' is not assignable to type 'string'.
18+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(5,14): error TS2322: Type 'undefined' is not assignable to type 'string'.
19+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(7,16): error TS2322: Type 'undefined' is not assignable to type 'string'.
20+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(8,16): error TS2322: Type 'undefined' is not assignable to type 'string'.
21+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(10,1): error TS2322: Type 'B' is not assignable to type 'A'.
22+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(20,1): error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
23+
tests/cases/conformance/pragma/strictNullChecks/file3.ts(26,1): error TS2322: Type 'B' is not assignable to type 'A'.
24+
tests/cases/conformance/pragma/strictNullChecks/file4.ts(10,1): error TS2322: Type 'B' is not assignable to type 'A'.
25+
tests/cases/conformance/pragma/strictNullChecks/file4.ts(20,1): error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
26+
tests/cases/conformance/pragma/strictNullChecks/file4.ts(26,1): error TS2322: Type 'B' is not assignable to type 'A'.
27+
28+
29+
==== tests/cases/conformance/pragma/strictNullChecks/file1.ts (5 errors) ====
30+
// @ts-strictNullChecks
31+
export interface A {
32+
member: string;
33+
}
34+
export interface B {
35+
member: string | undefined;
36+
}
37+
38+
let a: A = { member: undefined };
39+
~~~~~~
40+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
41+
!!! related TS6500 tests/cases/conformance/pragma/strictNullChecks/file1.ts:3:5: The expected type comes from property 'member' which is declared here on type 'A'
42+
declare var b: B;
43+
a = b;
44+
~
45+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
46+
b = a;
47+
48+
import {A as OtherA, B as OtherB} from "./file2";
49+
50+
let a2: OtherA = { member: undefined };
51+
~~~~~~
52+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
53+
!!! related TS6500 /.src/tests/cases/conformance/pragma/strictNullChecks/file2.ts:3:5: The expected type comes from property 'member' which is declared here on type 'A'
54+
declare var b2: OtherB;
55+
a2 = b2;
56+
b2 = a2;
57+
58+
a = a2;
59+
a2 = a;
60+
61+
b = b2;
62+
b2 = b;
63+
~~
64+
!!! error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
65+
66+
a = b2;
67+
b2 = a;
68+
69+
b = a2;
70+
a2 = b;
71+
~~
72+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
73+
74+
==== tests/cases/conformance/pragma/strictNullChecks/file2.ts (3 errors) ====
75+
// loose
76+
export interface A {
77+
member: string;
78+
}
79+
export interface B {
80+
member: string | undefined;
81+
}
82+
83+
let a: A = { member: undefined };
84+
declare var b: B;
85+
a = b;
86+
b = a;
87+
88+
import {A as OtherA, B as OtherB} from "./file1";
89+
90+
let a2: OtherA = { member: undefined };
91+
declare var b2: OtherB;
92+
a2 = b2;
93+
~~
94+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
95+
!!! error TS2322: Types of property 'member' are incompatible.
96+
!!! error TS2322: Type 'string | undefined' is not assignable to type 'string'.
97+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
98+
b2 = a2;
99+
100+
a = a2;
101+
a2 = a;
102+
103+
b = b2;
104+
~
105+
!!! error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
106+
!!! error TS2322: Types of property 'member' are incompatible.
107+
!!! error TS2322: Type 'string | undefined' is not assignable to type 'string'.
108+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
109+
b2 = b;
110+
111+
a = b2;
112+
~
113+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
114+
!!! error TS2322: Types of property 'member' are incompatible.
115+
!!! error TS2322: Type 'string | undefined' is not assignable to type 'string'.
116+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
117+
b2 = a;
118+
119+
b = a2;
120+
a2 = b;
121+
122+
==== tests/cases/conformance/pragma/strictNullChecks/file3.ts (6 errors) ====
123+
// @ts-strictNullChecks
124+
import {A, B} from "./file1";
125+
import {A as A2, B as B2} from "./file2";
126+
127+
let a: A = { member: undefined };
128+
~~~~~~
129+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
130+
!!! related TS6500 tests/cases/conformance/pragma/strictNullChecks/file1.ts:3:5: The expected type comes from property 'member' which is declared here on type 'A'
131+
let b: B = { member: undefined };
132+
let a2: A2 = { member: undefined };
133+
~~~~~~
134+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
135+
!!! related TS6500 /.src/tests/cases/conformance/pragma/strictNullChecks/file2.ts:3:5: The expected type comes from property 'member' which is declared here on type 'A'
136+
let b2: B2 = { member: undefined };
137+
~~~~~~
138+
!!! error TS2322: Type 'undefined' is not assignable to type 'string'.
139+
!!! related TS6500 /.src/tests/cases/conformance/pragma/strictNullChecks/file2.ts:6:5: The expected type comes from property 'member' which is declared here on type 'B'
140+
141+
a = b;
142+
~
143+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
144+
b = a;
145+
146+
a2 = b2;
147+
b2 = a2;
148+
149+
a = a2;
150+
a2 = a;
151+
152+
b = b2;
153+
b2 = b;
154+
~~
155+
!!! error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
156+
157+
a = b2;
158+
b2 = a;
159+
160+
b = a2;
161+
a2 = b;
162+
~~
163+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
164+
165+
==== tests/cases/conformance/pragma/strictNullChecks/file4.ts (3 errors) ====
166+
// loose
167+
import {A, B} from "./file1";
168+
import {A as A2, B as B2} from "./file2";
169+
170+
let a: A = { member: undefined };
171+
let b: B = { member: undefined };
172+
let a2: A2 = { member: undefined };
173+
let b2: B2 = { member: undefined };
174+
175+
a = b;
176+
~
177+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
178+
b = a;
179+
180+
a2 = b2;
181+
b2 = a2;
182+
183+
a = a2;
184+
a2 = a;
185+
186+
b = b2;
187+
b2 = b;
188+
~~
189+
!!! error TS2322: Type 'import("tests/cases/conformance/pragma/strictNullChecks/file1").B' is not assignable to type 'import("tests/cases/conformance/pragma/strictNullChecks/file2").B'.
190+
191+
a = b2;
192+
b2 = a;
193+
194+
b = a2;
195+
a2 = b;
196+
~~
197+
!!! error TS2322: Type 'B' is not assignable to type 'A'.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
//// [tests/cases/conformance/pragma/strictNullChecks/strictNullChecksPragma1.ts] ////
2+
3+
//// [file1.ts]
4+
// @ts-strictNullChecks
5+
export interface A {
6+
member: string;
7+
}
8+
export interface B {
9+
member: string | undefined;
10+
}
11+
12+
let a: A = { member: undefined };
13+
declare var b: B;
14+
a = b;
15+
b = a;
16+
17+
import {A as OtherA, B as OtherB} from "./file2";
18+
19+
let a2: OtherA = { member: undefined };
20+
declare var b2: OtherB;
21+
a2 = b2;
22+
b2 = a2;
23+
24+
a = a2;
25+
a2 = a;
26+
27+
b = b2;
28+
b2 = b;
29+
30+
a = b2;
31+
b2 = a;
32+
33+
b = a2;
34+
a2 = b;
35+
36+
//// [file2.ts]
37+
// loose
38+
export interface A {
39+
member: string;
40+
}
41+
export interface B {
42+
member: string | undefined;
43+
}
44+
45+
let a: A = { member: undefined };
46+
declare var b: B;
47+
a = b;
48+
b = a;
49+
50+
import {A as OtherA, B as OtherB} from "./file1";
51+
52+
let a2: OtherA = { member: undefined };
53+
declare var b2: OtherB;
54+
a2 = b2;
55+
b2 = a2;
56+
57+
a = a2;
58+
a2 = a;
59+
60+
b = b2;
61+
b2 = b;
62+
63+
a = b2;
64+
b2 = a;
65+
66+
b = a2;
67+
a2 = b;
68+
69+
//// [file3.ts]
70+
// @ts-strictNullChecks
71+
import {A, B} from "./file1";
72+
import {A as A2, B as B2} from "./file2";
73+
74+
let a: A = { member: undefined };
75+
let b: B = { member: undefined };
76+
let a2: A2 = { member: undefined };
77+
let b2: B2 = { member: undefined };
78+
79+
a = b;
80+
b = a;
81+
82+
a2 = b2;
83+
b2 = a2;
84+
85+
a = a2;
86+
a2 = a;
87+
88+
b = b2;
89+
b2 = b;
90+
91+
a = b2;
92+
b2 = a;
93+
94+
b = a2;
95+
a2 = b;
96+
97+
//// [file4.ts]
98+
// loose
99+
import {A, B} from "./file1";
100+
import {A as A2, B as B2} from "./file2";
101+
102+
let a: A = { member: undefined };
103+
let b: B = { member: undefined };
104+
let a2: A2 = { member: undefined };
105+
let b2: B2 = { member: undefined };
106+
107+
a = b;
108+
b = a;
109+
110+
a2 = b2;
111+
b2 = a2;
112+
113+
a = a2;
114+
a2 = a;
115+
116+
b = b2;
117+
b2 = b;
118+
119+
a = b2;
120+
b2 = a;
121+
122+
b = a2;
123+
a2 = b;
124+
125+
//// [file2.js]
126+
"use strict";
127+
exports.__esModule = true;
128+
var a = { member: undefined };
129+
a = b;
130+
b = a;
131+
var a2 = { member: undefined };
132+
a2 = b2;
133+
b2 = a2;
134+
a = a2;
135+
a2 = a;
136+
b = b2;
137+
b2 = b;
138+
a = b2;
139+
b2 = a;
140+
b = a2;
141+
a2 = b;
142+
//// [file1.js]
143+
"use strict";
144+
exports.__esModule = true;
145+
var a = { member: undefined };
146+
a = b;
147+
b = a;
148+
var a2 = { member: undefined };
149+
a2 = b2;
150+
b2 = a2;
151+
a = a2;
152+
a2 = a;
153+
b = b2;
154+
b2 = b;
155+
a = b2;
156+
b2 = a;
157+
b = a2;
158+
a2 = b;
159+
//// [file3.js]
160+
"use strict";
161+
exports.__esModule = true;
162+
var a = { member: undefined };
163+
var b = { member: undefined };
164+
var a2 = { member: undefined };
165+
var b2 = { member: undefined };
166+
a = b;
167+
b = a;
168+
a2 = b2;
169+
b2 = a2;
170+
a = a2;
171+
a2 = a;
172+
b = b2;
173+
b2 = b;
174+
a = b2;
175+
b2 = a;
176+
b = a2;
177+
a2 = b;
178+
//// [file4.js]
179+
"use strict";
180+
exports.__esModule = true;
181+
var a = { member: undefined };
182+
var b = { member: undefined };
183+
var a2 = { member: undefined };
184+
var b2 = { member: undefined };
185+
a = b;
186+
b = a;
187+
a2 = b2;
188+
b2 = a2;
189+
a = a2;
190+
a2 = a;
191+
b = b2;
192+
b2 = b;
193+
a = b2;
194+
b2 = a;
195+
b = a2;
196+
a2 = b;

0 commit comments

Comments
 (0)