* 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
84 lines
1.6 KiB
Plaintext
84 lines
1.6 KiB
Plaintext
=== tests/cases/conformance/types/typeRelationships/widenedTypes/objectLiteralWidened.ts ===
|
|
// object literal properties are widened to any
|
|
|
|
var x1 = {
|
|
>x1 : { foo: any; bar: any; }
|
|
>{ foo: null, bar: undefined} : { foo: null; bar: undefined; }
|
|
|
|
foo: null,
|
|
>foo : null
|
|
>null : null
|
|
|
|
bar: undefined
|
|
>bar : undefined
|
|
>undefined : undefined
|
|
}
|
|
|
|
var y1 = {
|
|
>y1 : { foo: any; bar: { baz: any; boo: any; }; }
|
|
>{ foo: null, bar: { baz: null, boo: undefined }} : { foo: null; bar: { baz: null; boo: undefined; }; }
|
|
|
|
foo: null,
|
|
>foo : null
|
|
>null : null
|
|
|
|
bar: {
|
|
>bar : { baz: null; boo: undefined; }
|
|
>{ baz: null, boo: undefined } : { baz: null; boo: undefined; }
|
|
|
|
baz: null,
|
|
>baz : null
|
|
>null : null
|
|
|
|
boo: undefined
|
|
>boo : undefined
|
|
>undefined : undefined
|
|
}
|
|
}
|
|
|
|
// these are not widened
|
|
|
|
var u: undefined = undefined;
|
|
>u : undefined
|
|
>undefined : undefined
|
|
|
|
var n: null = null;
|
|
>n : null
|
|
>null : null
|
|
>null : null
|
|
|
|
var x2 = {
|
|
>x2 : { foo: null; bar: undefined; }
|
|
>{ foo: n, bar: u} : { foo: null; bar: undefined; }
|
|
|
|
foo: n,
|
|
>foo : null
|
|
>n : null
|
|
|
|
bar: u
|
|
>bar : undefined
|
|
>u : undefined
|
|
}
|
|
|
|
var y2 = {
|
|
>y2 : { foo: null; bar: { baz: null; boo: undefined; }; }
|
|
>{ foo: n, bar: { baz: n, boo: u }} : { foo: null; bar: { baz: null; boo: undefined; }; }
|
|
|
|
foo: n,
|
|
>foo : null
|
|
>n : null
|
|
|
|
bar: {
|
|
>bar : { baz: null; boo: undefined; }
|
|
>{ baz: n, boo: u } : { baz: null; boo: undefined; }
|
|
|
|
baz: n,
|
|
>baz : null
|
|
>n : null
|
|
|
|
boo: u
|
|
>boo : undefined
|
|
>u : undefined
|
|
}
|
|
}
|