* Modify flow loop cache key to include all inputs
* Add test case, cache similarly to loop cache, reuse loop cache key (now corrected)
* Use simpler singleton key and type cache for FlowAssignment nodes
* Add unmeasurable variance kind for marking types whose variance result is unreliable
* Remove now-unneeded nongeneric checks
* Add rule allowing `Readonly<any>` to be `any` instead of `{readonly [index: string]: any}`
* All Unmeasurable variances to still shortcut structural comparisons in some cases
* Separate unmeasurable from unreliable to reduce the impact of this change, for now
* Fix lint
* Remove Readonly<any> -> any callout
* Add fix for circularity error triggered by deep signature return type comparisons with `this` types
* Scan backticks in jsdoc as a single token less often
Previously, matching backticks in jsdoc would always be scanned as one
token to aid parsing incorrect jsdoc that uses backticks for parameter
names:
``js
/** @param {string} `nope`
* @param {number} `not needed`
*/
```
However, this is wrong for code fences, which use triple backticks. This
fix parses a single backtick as a single token if it's immediately
followed by another backtick or by a newline. It retains the
questionable tokenisation of backticks-as-pairs in other cases, however.
A better fix might be to have the parser ignore backticks in jsdoc
instead.
* Add test case
* Handle jsdoc backticks in the parser, not scanner
Previously, the jsdoc scanner had ad-hoc handling of backticks that was
similar in structure to the normal scanner's handling, but much simpler.
This was a smaller code change, but is handled backwards: the special
case of backtick-quoted parameter names was handled in the scanner
instead of in the jsdoc identifier parsing code. That made it overapply
and block correct handling of asterisks across newlines, which was most
obvious in code fences inside jsdoc, as in #23517.
Fixes#23517
* More cleanup
* Perform excess property checking on intersection and union members
* Allow partial union props to contain the undefined type
* Add test case from #30771
* Un-terse getPossiblePropertiesOfUnionType side-effecting code
* Fix bug exposed in RWC
* Cache results of getPossiblePropertiesOfUnionType
* Fix whitespace
* Use const contexts and tuple mapped types to simplify some explicitly elucidated types
* Fix lint
* Further cleanup - refactor mapped type into its own alias for readability
* Slightly more cleanup - PragmaPsuedoMap neednt be partial, thus removing tons of nonull assertions
* Remove GH#18217 comments
* Unify substitution type `any` handling into costruction and instantiation
* Strengthen supertype reduction check to reduce breakage
* Rename conditional type fields per convention
* Explicitly handle anyish signatures in compareSignaturesRelated so strict variance doesnt kill subtyping
* Allow tuple expansions to an `any` rest to be considered an `any` signature as well
* check if rest parameter is of tuple type in isOptionalParameter
* expose isArrayType and isTupleType in checker
* don't offer refactor if rest parameter type is neither array nor tuple type
* add tests for rest parameters
* fix tests for renamed refactor
* remove unnecessary conditional operator