Make the *technically* correct construction illegal:
```ts
declare function f(n: number): void;
declare var ns: number[];
f(1, ...ns);
```
This call only makes sense if `ns = []`, but in that case, why pass
`ns` at all? Allowing this call masks other errors when functions are
refactored to have fewer parameters, or to stop using rest parameters:
```ts
declare function old(...ns: number[]): void;
declare function new(ns: number | number[]): void;
old(1, ...ns); // Fine!
new(1, ...ns); // Should error!
```
This change the error for excess spread arguments to be more
understandable:
"Expected 3 arguments, but got least 4".
Previously the error would have been
"Expected 3 argument, but got at least 3", which is, again, technically
correct, but not understandable.
* Update JSX intrinsic element test to match babel’s
* Update baseline
* Move regex out of isIntrinsicJsxName
* Switch to non-regex intrinsic name test
* add types for escape and unescape methods #18813
although the issue is marked working as expected, it is important to mention that most major browsers maintain support for escape and unescape, and some javascript codebases moving to typescript may have escape and unescape in them. They are valid JavaScript, and thus they should be included in the global definition.
* add escape and unescape types to lib in tests
* update tests to turn CI green
* Break out of speculative parsing on bad parameter initializer
* Remove uses of 'finally'
* give up -> stop
* Do without exceptions
* Remove `resetAfterSpeculation`
* Use Fail and FailList objects
* Remove `inSpeculation` parameter to parseDelimitedList
* Don't use `createNodeArray`, it's not always in scope
* Move Fail and FailList inside initializeState
* More code review
* More code review
If there is a test.json in the directory, it expects to find a
submodule in the directory. The submodule should have the same name as
the directory itself. test.json contains a list of global types that
need to be available, or the empty list if none.
* Consider the commonjs module indicator as an indicator that something is effectively an external module
* Only use commonjs module indicator when targeting commonjs