In short, the fix I submitted looked at the union ofproperties, but it
really should have looked at the intersection.
Two sytlistic notes. I couldn't find the best way to get the unique
strings of an array like `[...new Set()]` would, so I created a small
helper function, but didn't put it in a great place. Also, before the
second concatenated array of discriminators at least matched the first
in complexity, but now it's much worse. I don't think that section is
particularly easy to read, but I also don't see a significantly reusable
part.
fixes#41759
* Add import assertions for type-only imports and import types to change resolver modes
* By popular request, only allow mode assertions on top-level type only imports
* Add specifier options parameter to specifier generation
* Use full `isReadonlySymbol` check rather than declaration flags
* Limit subtype readonly consistency check to strict subtype relation
* Update comment
* add Intl.Locale param type to locales argument in BigInt, Number, and Date methods
* update baselines
* add test for locales object arguments
* fix indentation
* Only issue @param suggestions with codefixes in TS
Previously, there were 2 JS errors that were issued as suggestions in TS
files. But there was no codefix for these errors, and the errors were
incorrect in TS.
This PR only issues the JS-specific errors on JS files.
* Minimise test
* fix issue where duplicate default exports aren't detected when there's an interface
* accept baseline change
* add `exportDefaultInterfaceClassAndValue` test
* add more tests for multiple default exports
* add two interfaces test
Co-authored-by: DetachHead <detachhead@users.noreply.github.com>
* Uncalled function checks only works with single conditional
* fix type errors in compiler
* remove uncalled function checks with negations
* review
* fix test
* Cleanup after merge, accept baselines
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
`ThisParameterType<(...args: X) => void>` expands to
`(...args: X) => void extends (this: infer U, ...args: any[]) => any`.
When `X` is an unresolved type parameter it is not possible to determine
that `any[]` is assignable to `X`. However `never` is always assignable
to `X`, so we use that instead.
* Permit type arguments in references to generic functions
* Accept new baselines
* Delete pointless fourslash test
* Fix lint issue
* Finalize implementation
* Add tests
* Accept new baselines
* Properly handle instantiation of instantiation expression types
* Accept new API baselines
* Fix lint error
* Add more tests
* Properly handle unions/intersections of generic types
* Add more tests
* More permissive parsing of type arguments in member expressions
* Update tests
* Accept new baselines