TypeScript/tests/baselines/reference/arrayLiteralWidened.types
Yui f619282af1 [Transforms] Update transforms with recent master (#8960)
* 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 commit ef0f6c8fe4, reversing
changes made to 9f087cb62a.

* reuse the fixupParentReferences function

* Fix up error from merging with master
2016-06-03 11:02:35 -07:00

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