Skip to content

Commit 9b1f43b

Browse files
committed
Add strictNullChecks test for object spread
1 parent fcf32c4 commit 9b1f43b

File tree

4 files changed

+212
-0
lines changed

4 files changed

+212
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//// [objectSpreadStrictNull.ts]
2+
3+
function f(
4+
definiteBoolean: { sn: boolean },
5+
definiteString: { sn: string },
6+
optionalString: { sn?: string },
7+
optionalNumber: { sn?: number },
8+
undefinedString: { sn: string | undefined },
9+
undefinedNumber: { sn: number | undefined }) {
10+
// optional
11+
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
12+
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
13+
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
14+
15+
// undefined
16+
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
17+
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
18+
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
19+
20+
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
21+
}
22+
23+
24+
//// [objectSpreadStrictNull.js]
25+
var __assign = (this && this.__assign) || Object.assign || function(t) {
26+
for (var s, i = 1, n = arguments.length; i < n; i++) {
27+
s = arguments[i];
28+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
29+
t[p] = s[p];
30+
}
31+
return t;
32+
};
33+
function f(definiteBoolean, definiteString, optionalString, optionalNumber, undefinedString, undefinedNumber) {
34+
// optional
35+
var optionalUnionStops = __assign({}, definiteBoolean, definiteString, optionalNumber);
36+
var optionalUnionDuplicates = __assign({}, definiteBoolean, definiteString, optionalString, optionalNumber);
37+
var allOptional = __assign({}, optionalString, optionalNumber);
38+
// undefined
39+
var undefinedUnionStops = __assign({}, definiteBoolean, definiteString, undefinedNumber);
40+
var undefinedUnionDuplicates = __assign({}, definiteBoolean, definiteString, undefinedString, undefinedNumber);
41+
var allUndefined = __assign({}, undefinedString, undefinedNumber);
42+
var undefinedWithOptionalContinues = __assign({}, definiteBoolean, undefinedString, optionalNumber);
43+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadStrictNull.ts ===
2+
3+
function f(
4+
>f : Symbol(f, Decl(objectSpreadStrictNull.ts, 0, 0))
5+
6+
definiteBoolean: { sn: boolean },
7+
>definiteBoolean : Symbol(definiteBoolean, Decl(objectSpreadStrictNull.ts, 1, 11))
8+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 2, 22))
9+
10+
definiteString: { sn: string },
11+
>definiteString : Symbol(definiteString, Decl(objectSpreadStrictNull.ts, 2, 37))
12+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 3, 21))
13+
14+
optionalString: { sn?: string },
15+
>optionalString : Symbol(optionalString, Decl(objectSpreadStrictNull.ts, 3, 35))
16+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 4, 21))
17+
18+
optionalNumber: { sn?: number },
19+
>optionalNumber : Symbol(optionalNumber, Decl(objectSpreadStrictNull.ts, 4, 36))
20+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 5, 21))
21+
22+
undefinedString: { sn: string | undefined },
23+
>undefinedString : Symbol(undefinedString, Decl(objectSpreadStrictNull.ts, 5, 36))
24+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 6, 22))
25+
26+
undefinedNumber: { sn: number | undefined }) {
27+
>undefinedNumber : Symbol(undefinedNumber, Decl(objectSpreadStrictNull.ts, 6, 48))
28+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 7, 22))
29+
30+
// optional
31+
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
32+
>optionalUnionStops : Symbol(optionalUnionStops, Decl(objectSpreadStrictNull.ts, 9, 7))
33+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 9, 29))
34+
35+
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
36+
>optionalUnionDuplicates : Symbol(optionalUnionDuplicates, Decl(objectSpreadStrictNull.ts, 10, 7))
37+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 10, 34))
38+
39+
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
40+
>allOptional : Symbol(allOptional, Decl(objectSpreadStrictNull.ts, 11, 7))
41+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 11, 22))
42+
43+
// undefined
44+
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
45+
>undefinedUnionStops : Symbol(undefinedUnionStops, Decl(objectSpreadStrictNull.ts, 14, 7))
46+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 14, 30))
47+
48+
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
49+
>undefinedUnionDuplicates : Symbol(undefinedUnionDuplicates, Decl(objectSpreadStrictNull.ts, 15, 7))
50+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 15, 35))
51+
52+
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
53+
>allUndefined : Symbol(allUndefined, Decl(objectSpreadStrictNull.ts, 16, 7))
54+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 16, 23))
55+
56+
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
57+
>undefinedWithOptionalContinues : Symbol(undefinedWithOptionalContinues, Decl(objectSpreadStrictNull.ts, 18, 7))
58+
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 18, 41))
59+
}
60+
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
=== tests/cases/conformance/types/spread/objectSpreadStrictNull.ts ===
2+
3+
function f(
4+
>f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void
5+
6+
definiteBoolean: { sn: boolean },
7+
>definiteBoolean : { sn: boolean; }
8+
>sn : boolean
9+
10+
definiteString: { sn: string },
11+
>definiteString : { sn: string; }
12+
>sn : string
13+
14+
optionalString: { sn?: string },
15+
>optionalString : { sn?: string | undefined; }
16+
>sn : string | undefined
17+
18+
optionalNumber: { sn?: number },
19+
>optionalNumber : { sn?: number | undefined; }
20+
>sn : number | undefined
21+
22+
undefinedString: { sn: string | undefined },
23+
>undefinedString : { sn: string | undefined; }
24+
>sn : string | undefined
25+
26+
undefinedNumber: { sn: number | undefined }) {
27+
>undefinedNumber : { sn: number | undefined; }
28+
>sn : number | undefined
29+
30+
// optional
31+
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
32+
>optionalUnionStops : { sn: string | number; }
33+
>sn : string | number
34+
>{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; }
35+
>definiteBoolean : any
36+
>definiteString : any
37+
>optionalNumber : any
38+
39+
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
40+
>optionalUnionDuplicates : { sn: string | number; }
41+
>sn : string | number
42+
>{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; }
43+
>definiteBoolean : any
44+
>definiteString : any
45+
>optionalString : any
46+
>optionalNumber : any
47+
48+
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
49+
>allOptional : { sn?: string | number | undefined; }
50+
>sn : string | number | undefined
51+
>{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; }
52+
>optionalString : any
53+
>optionalNumber : any
54+
55+
// undefined
56+
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
57+
>undefinedUnionStops : { sn: string | number; }
58+
>sn : string | number
59+
>{ ...definiteBoolean, ...definiteString, ...undefinedNumber } : { sn: string | number; }
60+
>definiteBoolean : any
61+
>definiteString : any
62+
>undefinedNumber : any
63+
64+
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
65+
>undefinedUnionDuplicates : { sn: string | number; }
66+
>sn : string | number
67+
>{ ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber } : { sn: string | number; }
68+
>definiteBoolean : any
69+
>definiteString : any
70+
>undefinedString : any
71+
>undefinedNumber : any
72+
73+
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
74+
>allUndefined : { sn: string | number | undefined; }
75+
>sn : string | number | undefined
76+
>{ ...undefinedString, ...undefinedNumber } : { sn: string | number | undefined; }
77+
>undefinedString : any
78+
>undefinedNumber : any
79+
80+
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
81+
>undefinedWithOptionalContinues : { sn: string | number | boolean; }
82+
>sn : string | number | boolean
83+
>{ ...definiteBoolean, ...undefinedString, ...optionalNumber } : { sn: string | number | boolean; }
84+
>definiteBoolean : any
85+
>undefinedString : any
86+
>optionalNumber : any
87+
}
88+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// @strictNullChecks: true
2+
3+
function f(
4+
definiteBoolean: { sn: boolean },
5+
definiteString: { sn: string },
6+
optionalString: { sn?: string },
7+
optionalNumber: { sn?: number },
8+
undefinedString: { sn: string | undefined },
9+
undefinedNumber: { sn: number | undefined }) {
10+
// optional
11+
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
12+
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
13+
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
14+
15+
// undefined
16+
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
17+
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
18+
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
19+
20+
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
21+
}

0 commit comments

Comments
 (0)