* Remove check narrowing only certain types, add test showing issues with this * string literal case test * Reconcile fix with CFA work * Defaultable -> NotNarrowable to align with use * Missed a defaultable in comments * Add test for narrowing to unions of string literals * Actually merge from master * Run fixupParentReferences when parsing isolated jsDocComment * initial revision of unit test support for project system in tsserver * Add non-widening forms of null and undefined * Create separate control flows for property declarations with initializers * Add regression test * Add tests * Remove unused variable * Add null check and CR feedback * Revert "Merge pull request #7235 from weswigham/narrow-all-types" This reverts commitef0f6c8fe4
, reversing changes made to9f087cb62a
. * reuse the fixupParentReferences function * Fix up error from merging with master
85 lines
1.7 KiB
Plaintext
85 lines
1.7 KiB
Plaintext
=== tests/cases/conformance/types/typeRelationships/widenedTypes/arrayLiteralWidened.ts ===
|
|
// array literals are widened upon assignment according to their element type
|
|
|
|
var a = []; // any[]
|
|
>a : any[]
|
|
>[] : undefined[]
|
|
|
|
var a = [,,];
|
|
>a : any[]
|
|
>[,,] : undefined[]
|
|
> : undefined
|
|
> : undefined
|
|
|
|
var a = [null, null];
|
|
>a : any[]
|
|
>[null, null] : null[]
|
|
>null : null
|
|
>null : null
|
|
|
|
var a = [undefined, undefined];
|
|
>a : any[]
|
|
>[undefined, undefined] : undefined[]
|
|
>undefined : undefined
|
|
>undefined : undefined
|
|
|
|
var b = [[], [null, null]]; // any[][]
|
|
>b : any[][]
|
|
>[[], [null, null]] : undefined[][]
|
|
>[] : undefined[]
|
|
>[null, null] : null[]
|
|
>null : null
|
|
>null : null
|
|
|
|
var b = [[], []];
|
|
>b : any[][]
|
|
>[[], []] : undefined[][]
|
|
>[] : undefined[]
|
|
>[] : undefined[]
|
|
|
|
var b = [[undefined, undefined]];
|
|
>b : any[][]
|
|
>[[undefined, undefined]] : undefined[][]
|
|
>[undefined, undefined] : undefined[]
|
|
>undefined : undefined
|
|
>undefined : undefined
|
|
|
|
var c = [[[]]]; // any[][][]
|
|
>c : any[][][]
|
|
>[[[]]] : undefined[][][]
|
|
>[[]] : undefined[][]
|
|
>[] : undefined[]
|
|
|
|
var c = [[[null]],[undefined]]
|
|
>c : any[][][]
|
|
>[[[null]],[undefined]] : null[][][]
|
|
>[[null]] : null[][]
|
|
>[null] : null[]
|
|
>null : null
|
|
>[undefined] : undefined[]
|
|
>undefined : undefined
|
|
|
|
// no widening when one or more elements are non-widening
|
|
|
|
var x: undefined = undefined;
|
|
>x : undefined
|
|
>undefined : undefined
|
|
|
|
var d = [x];
|
|
>d : undefined[]
|
|
>[x] : undefined[]
|
|
>x : undefined
|
|
|
|
var d = [, x];
|
|
>d : undefined[]
|
|
>[, x] : undefined[]
|
|
> : undefined
|
|
>x : undefined
|
|
|
|
var d = [undefined, x];
|
|
>d : undefined[]
|
|
>[undefined, x] : undefined[]
|
|
>undefined : undefined
|
|
>x : undefined
|
|
|