Commit graph

58 commits

Author SHA1 Message Date
Nathan Shively-Sanders 527f467926
Remove error when spreading optional any (#37757)
Previously, spreading an optional any gave a bogus error when the name
conflicted with earlier properties in the object literal. Now the code
checks any types for optionality before issuing the error.

Fixes #37740
2020-04-02 15:04:45 -07:00
Nathan Shively-Sanders b481dd4d4b
More precise property-overwritten-by-spread errors (#37192)
* More precise property-overwritten-by-spread errors

Trying to do this check in getSpreadType just doesn't have enough
information, so I moved it to checkObjectLiteral, which is a better
place for issuing errors anyway.

Unfortunately, the approach is kind of expensive in that it

1. creates a new map for each property and
2. iterates over all properties of the spread type, even if it's a
union.

I have some ideas to improve (1) that might work out. I'm not sure how
bad (2) is since we're going to iterate over all properties of all
constituents of a union.

Fixes #36779

* another test and rename
2020-03-03 15:10:19 -08:00
Nathan Shively-Sanders a772c26a71
Error when property is specified more than once via a spread (#36727)
* add tests but not baselines or fixes

* Update original change

Still probably wrong; probably doesn't even compile beacuse I'm just
typing on my laptop.

* fix error code ok

* notes to self

* Error: property is specified more than once via spread

* make jsx tests stricter

* update semicolon error message

* use ?. because it is great

* use maybeTypeOfKind in new code

* restore jsx error

* add tests
2020-02-11 10:23:15 -08:00
Wesley Wigham b9689228b5
When calculating spreads, merge empty object into nonempty object to … (#34853)
* When calculating spreads, merge empty object into nonempty object to produce partial object to reduce complexity

* Actually accept remainder of baselines

* Limit simplification to single prop or partial types
2019-11-22 17:19:17 -08:00
Collins Abitekaniza 2bb2f9ff68 add baseline tests for spreading instantiable type 2019-05-03 05:31:28 +03:00
Anders Hejlsberg 8e4b90da00
Merge pull request #28234 from Microsoft/genericSpread
Generic spread expressions in object literals
2018-10-31 12:52:16 -07:00
Anders Hejlsberg 2ed627aaf1 Update tests 2018-10-30 16:33:14 -07:00
Anders Hejlsberg e0d210d027 Add tests 2018-10-30 08:18:18 -07:00
Nathan Shively-Sanders 64ff195426
Set-only accessors spread to undefined (#28213)
* Set-only accessors spread to undefined

Previously they were skipped. The runtime behaviour is to create a
property of type undefined, unlike (for example) spreading numbers or
other primitives. So now spreading a set-only accessor creates a
property of type undefined:

```ts
const o: { foo: undefined } = { ...{ set foo(v: number) { } } }
```

Notably, `o.foo: undefined` not `number`.

Fixes #26337

* Fix isSpreadableProperty oversimplification
2018-10-29 14:51:12 -07:00
Nathan Shively-Sanders b687caf3eb
No excess property error for spread properties (#26798)
That is, properties in an object literal type that came from a spread
assignment never cause an excess property error.
2018-08-30 16:16:58 -07:00
Andy 639fdcc916
Don't include class getter in spread type (#26287)
* Don't include class getter in spread type

* Code review
2018-08-09 15:34:29 -07:00
Ron Buckton f67afa098f Unpatch vfs resolver and default lib rename 2018-05-03 14:18:50 -07:00
Nathan Shively-Sanders 4bc0d85d29 Test:spread object retains lefthandside
1. Make sure that spreading `object` doesn't lose everything to the left.
2. Update baselines to show that `{ ...object }` is now `{}`.
2017-12-12 08:37:34 -08:00
Nathan Shively-Sanders 39fd0bf2d1 Merge branch 'master' into fix-spread-contextually-typed-by-binding-pattern 2017-11-13 13:11:05 -08:00
Nathan Shively-Sanders 7788d293c4 Test:spread removes readonly from index signatures 2017-11-06 08:16:15 -08:00
Nathan Shively-Sanders 0cb12b32a5 Test:{} in union from spread gets implicit index signature
Also tighten up the existing test code in the file.
2017-10-05 09:03:03 -07:00
Nathan Shively-Sanders 2c04b5510f Test:spread contextually typed by binding pattern 2017-10-03 12:43:23 -07:00
Nathan Shively-Sanders cb8d9d6143 Revert spread-falsy-union/fix spread of primitive
Turns out partialising falsy unions wasn't needed -- I was just
returning the wrong thing when spreading primitives.
2017-09-15 16:11:41 -07:00
Nathan Shively-Sanders f97d5fa11d Update tests with improved spread-falsy-union rules 2017-09-15 10:06:58 -07:00
Nathan Shively-Sanders 18653a5c5d Use removeDefinitelyFalsyTypes for building partial type 2017-09-14 11:18:48 -07:00
Nathan Shively-Sanders d2e2faad5c Update tests and baselines 2017-09-13 15:13:34 -07:00
Nathan Shively-Sanders d951c14052 Allow all possibly falsy types in spreads
And update tests to reflect that
2017-09-13 14:56:15 -07:00
Nathan Shively-Sanders 9cddd1aca2 Update spread tests for booleans in spread types 2017-09-13 14:06:15 -07:00
Nathan Shively-Sanders 26ab0cd138 Merge pull request #16530 from Microsoft/excess-property-check-error-span-for-spread-property
Improve excess property check error span for spread property
2017-06-14 16:16:20 -07:00
Nathan Shively-Sanders 19c564d48d Test:error span for spread prop in excess prop check 2017-06-14 11:29:06 -07:00
Nathan Shively-Sanders 657c469d4f Remove undefined from optional spread properties
Fixes #16509 by making the change from #15938 less strict. This is
technically a hole, but it's not as big a hole as before #15938.
2017-06-14 10:31:11 -07:00
Nathan Shively-Sanders cfb52e0e91 Test spread in unions of null/undefined 2017-06-06 14:13:02 -07:00
Nathan Shively-Sanders ea830d4fad Move spreadUnion* tests into conformance suite 2017-06-06 13:58:54 -07:00
Nathan Shively-Sanders db3696c789 Test:retain undefined in spreads w/strictNullChecks
Add test case and update baselines with new errors
2017-05-18 13:59:07 -07:00
Herrington Darkholme 24bb21c55a address code review 2017-01-24 11:24:30 +08:00
Herrington Darkholme b4c15982ff fix #13556: enable rest/spread on object 2017-01-18 14:57:20 +08:00
Nathan Shively-Sanders 309a361b19 Test method removal of object spread
Test that
1. Only class methods get removed
2. Methods from both left and right get removed.
2017-01-09 08:59:36 -08:00
Mohamed Hegazy 51f5ef6752 Update test 2016-11-29 13:37:21 -08:00
Nathan Shively-Sanders 641948fb0c Test assignability checking of object rests 2016-11-16 13:41:18 -08:00
Nathan Shively-Sanders fe66d9ef9f Add spread tests and update rest tests 2016-11-14 16:23:40 -08:00
Nathan Shively-Sanders 25462c9571 Merge pull request #12028 from Microsoft/object-rest
Object rest
2016-11-10 09:18:13 -08:00
Nathan Shively-Sanders 9b1f43bdda Add strictNullChecks test for object spread 2016-11-09 13:40:21 -08:00
Nathan Shively-Sanders 9977936190 Do not emit __rest for --target esnext 2016-11-07 11:34:37 -08:00
Nathan Shively-Sanders d4a5b0855c Add --target esnext tests and update baselines 2016-11-07 09:56:48 -08:00
Nathan Shively-Sanders a55ed26d2b Spread any types to any 2016-11-04 16:06:33 -07:00
Nathan Shively-Sanders a077fd104a Remove spread type tests from spread tests 2016-11-03 09:39:58 -07:00
Nathan Shively-Sanders f65dd2101c Test index [access] types inside spread types 2016-11-02 11:37:52 -07:00
Nathan Shively-Sanders ff92afd47b Update baselines with new index signature rules 2016-10-21 16:27:32 -07:00
Nathan Shively-Sanders 422f73b1a9 Update and improve spread intersection tests 2016-10-21 10:54:53 -07:00
Nathan Shively-Sanders d9afa34be1 Update spread w/intersection tests 2016-10-20 09:07:01 -07:00
Nathan Shively-Sanders ad10ec56c1 Update tests w/spread assignability+apparent type 2016-10-19 15:05:42 -07:00
Nathan Shively-Sanders 62c186872d Update inference test for spread types 2016-10-19 13:14:20 -07:00
Nathan Shively-Sanders 1728ae1cbc Update baselines with spread string's numeric indexers 2016-10-12 09:01:14 -07:00
Nathan Shively-Sanders 4bc4a008bb Test spread type inference+more index signature tests 2016-10-11 16:14:47 -07:00
Nathan Shively-Sanders 0dd1f0c00f Add tests and update baselines.
1. Union/intersection tests.
2. Primitive tests.
3. Update baselines after removing errors.
2016-10-10 10:07:41 -07:00