Add strictNullChecks test for object spread
This commit is contained in:
parent
fcf32c444f
commit
9b1f43bdda
4 changed files with 212 additions and 0 deletions
43
tests/baselines/reference/objectSpreadStrictNull.js
Normal file
43
tests/baselines/reference/objectSpreadStrictNull.js
Normal file
|
@ -0,0 +1,43 @@
|
|||
//// [objectSpreadStrictNull.ts]
|
||||
|
||||
function f(
|
||||
definiteBoolean: { sn: boolean },
|
||||
definiteString: { sn: string },
|
||||
optionalString: { sn?: string },
|
||||
optionalNumber: { sn?: number },
|
||||
undefinedString: { sn: string | undefined },
|
||||
undefinedNumber: { sn: number | undefined }) {
|
||||
// optional
|
||||
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
|
||||
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
|
||||
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
|
||||
|
||||
// undefined
|
||||
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
|
||||
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
|
||||
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
|
||||
|
||||
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
|
||||
}
|
||||
|
||||
|
||||
//// [objectSpreadStrictNull.js]
|
||||
var __assign = (this && this.__assign) || Object.assign || function(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||||
t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
function f(definiteBoolean, definiteString, optionalString, optionalNumber, undefinedString, undefinedNumber) {
|
||||
// optional
|
||||
var optionalUnionStops = __assign({}, definiteBoolean, definiteString, optionalNumber);
|
||||
var optionalUnionDuplicates = __assign({}, definiteBoolean, definiteString, optionalString, optionalNumber);
|
||||
var allOptional = __assign({}, optionalString, optionalNumber);
|
||||
// undefined
|
||||
var undefinedUnionStops = __assign({}, definiteBoolean, definiteString, undefinedNumber);
|
||||
var undefinedUnionDuplicates = __assign({}, definiteBoolean, definiteString, undefinedString, undefinedNumber);
|
||||
var allUndefined = __assign({}, undefinedString, undefinedNumber);
|
||||
var undefinedWithOptionalContinues = __assign({}, definiteBoolean, undefinedString, optionalNumber);
|
||||
}
|
60
tests/baselines/reference/objectSpreadStrictNull.symbols
Normal file
60
tests/baselines/reference/objectSpreadStrictNull.symbols
Normal file
|
@ -0,0 +1,60 @@
|
|||
=== tests/cases/conformance/types/spread/objectSpreadStrictNull.ts ===
|
||||
|
||||
function f(
|
||||
>f : Symbol(f, Decl(objectSpreadStrictNull.ts, 0, 0))
|
||||
|
||||
definiteBoolean: { sn: boolean },
|
||||
>definiteBoolean : Symbol(definiteBoolean, Decl(objectSpreadStrictNull.ts, 1, 11))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 2, 22))
|
||||
|
||||
definiteString: { sn: string },
|
||||
>definiteString : Symbol(definiteString, Decl(objectSpreadStrictNull.ts, 2, 37))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 3, 21))
|
||||
|
||||
optionalString: { sn?: string },
|
||||
>optionalString : Symbol(optionalString, Decl(objectSpreadStrictNull.ts, 3, 35))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 4, 21))
|
||||
|
||||
optionalNumber: { sn?: number },
|
||||
>optionalNumber : Symbol(optionalNumber, Decl(objectSpreadStrictNull.ts, 4, 36))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 5, 21))
|
||||
|
||||
undefinedString: { sn: string | undefined },
|
||||
>undefinedString : Symbol(undefinedString, Decl(objectSpreadStrictNull.ts, 5, 36))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 6, 22))
|
||||
|
||||
undefinedNumber: { sn: number | undefined }) {
|
||||
>undefinedNumber : Symbol(undefinedNumber, Decl(objectSpreadStrictNull.ts, 6, 48))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 7, 22))
|
||||
|
||||
// optional
|
||||
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
|
||||
>optionalUnionStops : Symbol(optionalUnionStops, Decl(objectSpreadStrictNull.ts, 9, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 9, 29))
|
||||
|
||||
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
|
||||
>optionalUnionDuplicates : Symbol(optionalUnionDuplicates, Decl(objectSpreadStrictNull.ts, 10, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 10, 34))
|
||||
|
||||
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
|
||||
>allOptional : Symbol(allOptional, Decl(objectSpreadStrictNull.ts, 11, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 11, 22))
|
||||
|
||||
// undefined
|
||||
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
|
||||
>undefinedUnionStops : Symbol(undefinedUnionStops, Decl(objectSpreadStrictNull.ts, 14, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 14, 30))
|
||||
|
||||
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
|
||||
>undefinedUnionDuplicates : Symbol(undefinedUnionDuplicates, Decl(objectSpreadStrictNull.ts, 15, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 15, 35))
|
||||
|
||||
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
|
||||
>allUndefined : Symbol(allUndefined, Decl(objectSpreadStrictNull.ts, 16, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 16, 23))
|
||||
|
||||
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
|
||||
>undefinedWithOptionalContinues : Symbol(undefinedWithOptionalContinues, Decl(objectSpreadStrictNull.ts, 18, 7))
|
||||
>sn : Symbol(sn, Decl(objectSpreadStrictNull.ts, 18, 41))
|
||||
}
|
||||
|
88
tests/baselines/reference/objectSpreadStrictNull.types
Normal file
88
tests/baselines/reference/objectSpreadStrictNull.types
Normal file
|
@ -0,0 +1,88 @@
|
|||
=== tests/cases/conformance/types/spread/objectSpreadStrictNull.ts ===
|
||||
|
||||
function f(
|
||||
>f : (definiteBoolean: { sn: boolean; }, definiteString: { sn: string; }, optionalString: { sn?: string | undefined; }, optionalNumber: { sn?: number | undefined; }, undefinedString: { sn: string | undefined; }, undefinedNumber: { sn: number | undefined; }) => void
|
||||
|
||||
definiteBoolean: { sn: boolean },
|
||||
>definiteBoolean : { sn: boolean; }
|
||||
>sn : boolean
|
||||
|
||||
definiteString: { sn: string },
|
||||
>definiteString : { sn: string; }
|
||||
>sn : string
|
||||
|
||||
optionalString: { sn?: string },
|
||||
>optionalString : { sn?: string | undefined; }
|
||||
>sn : string | undefined
|
||||
|
||||
optionalNumber: { sn?: number },
|
||||
>optionalNumber : { sn?: number | undefined; }
|
||||
>sn : number | undefined
|
||||
|
||||
undefinedString: { sn: string | undefined },
|
||||
>undefinedString : { sn: string | undefined; }
|
||||
>sn : string | undefined
|
||||
|
||||
undefinedNumber: { sn: number | undefined }) {
|
||||
>undefinedNumber : { sn: number | undefined; }
|
||||
>sn : number | undefined
|
||||
|
||||
// optional
|
||||
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
|
||||
>optionalUnionStops : { sn: string | number; }
|
||||
>sn : string | number
|
||||
>{ ...definiteBoolean, ...definiteString, ...optionalNumber } : { sn: string | number; }
|
||||
>definiteBoolean : any
|
||||
>definiteString : any
|
||||
>optionalNumber : any
|
||||
|
||||
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
|
||||
>optionalUnionDuplicates : { sn: string | number; }
|
||||
>sn : string | number
|
||||
>{ ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber } : { sn: string | number; }
|
||||
>definiteBoolean : any
|
||||
>definiteString : any
|
||||
>optionalString : any
|
||||
>optionalNumber : any
|
||||
|
||||
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
|
||||
>allOptional : { sn?: string | number | undefined; }
|
||||
>sn : string | number | undefined
|
||||
>{ ...optionalString, ...optionalNumber } : { sn?: string | number | undefined; }
|
||||
>optionalString : any
|
||||
>optionalNumber : any
|
||||
|
||||
// undefined
|
||||
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
|
||||
>undefinedUnionStops : { sn: string | number; }
|
||||
>sn : string | number
|
||||
>{ ...definiteBoolean, ...definiteString, ...undefinedNumber } : { sn: string | number; }
|
||||
>definiteBoolean : any
|
||||
>definiteString : any
|
||||
>undefinedNumber : any
|
||||
|
||||
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
|
||||
>undefinedUnionDuplicates : { sn: string | number; }
|
||||
>sn : string | number
|
||||
>{ ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber } : { sn: string | number; }
|
||||
>definiteBoolean : any
|
||||
>definiteString : any
|
||||
>undefinedString : any
|
||||
>undefinedNumber : any
|
||||
|
||||
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
|
||||
>allUndefined : { sn: string | number | undefined; }
|
||||
>sn : string | number | undefined
|
||||
>{ ...undefinedString, ...undefinedNumber } : { sn: string | number | undefined; }
|
||||
>undefinedString : any
|
||||
>undefinedNumber : any
|
||||
|
||||
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
|
||||
>undefinedWithOptionalContinues : { sn: string | number | boolean; }
|
||||
>sn : string | number | boolean
|
||||
>{ ...definiteBoolean, ...undefinedString, ...optionalNumber } : { sn: string | number | boolean; }
|
||||
>definiteBoolean : any
|
||||
>undefinedString : any
|
||||
>optionalNumber : any
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
// @strictNullChecks: true
|
||||
|
||||
function f(
|
||||
definiteBoolean: { sn: boolean },
|
||||
definiteString: { sn: string },
|
||||
optionalString: { sn?: string },
|
||||
optionalNumber: { sn?: number },
|
||||
undefinedString: { sn: string | undefined },
|
||||
undefinedNumber: { sn: number | undefined }) {
|
||||
// optional
|
||||
let optionalUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalNumber };
|
||||
let optionalUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...optionalString, ...optionalNumber };
|
||||
let allOptional: { sn?: string | number } = { ...optionalString, ...optionalNumber };
|
||||
|
||||
// undefined
|
||||
let undefinedUnionStops: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedNumber };
|
||||
let undefinedUnionDuplicates: { sn: string | number } = { ...definiteBoolean, ...definiteString, ...undefinedString, ...undefinedNumber };
|
||||
let allUndefined: { sn: string | number | undefined } = { ...undefinedString, ...undefinedNumber };
|
||||
|
||||
let undefinedWithOptionalContinues: { sn: string | number | boolean } = { ...definiteBoolean, ...undefinedString, ...optionalNumber };
|
||||
}
|
Loading…
Reference in a new issue