Commit Graph

3879 Commits

Author SHA1 Message Date
LowR
b45cf0d694 disentangle the meaning of SymbolLinks.target (#47098) 2022-04-07 15:40:39 -07:00
jihndai
b18141b0bc Do not reset control flow analysis on index signatures (#48427)
* do not flag index signatures as a control flow container

* add tests and baselines
2022-04-07 13:29:07 -07:00
Wesley Wigham
4d2fb5407c Preserve the distributivity of inlined conditional types in declaration emit (#48592) 2022-04-06 17:21:46 -07:00
Wesley Wigham
94d33ba85d Ensure late painted statements are only transformed once, so inner substitutions are consistently read (#48558)
* Ensure late painted statements are only transformed once, so inner substitutions are consistently read

* PR suggestion

* Fix lint
2022-04-06 16:36:42 -07:00
Zzzen
370d34cdca narrow type for generic variables inside TypeQuery (#48434) 2022-04-05 09:33:19 -07:00
Jake Bailey
276719753e Allow arrow function parameter parsing to bail out during speculation, redo (#48493)
* Allow arrow function parameter parsing to bail out during speculation, redo

* Add correct baselines

* Allow await/yield keywords for more graceful error reporting

* Add test for other parser issue

* Address some PR feedback

* Add extra comment

* Add async variants
2022-04-04 16:57:26 -07:00
Gabriela Araujo Britto
99ea99b386 Properly check singleton labeled tuple before unwrapping (#48554)
* properly check if singleton labeled tuple has optional element

* also check if labeled element is rest
2022-04-04 15:53:41 -07:00
Anders Hejlsberg
3f483d87b4 No contextual typing from return types for boolean literals (#48380)
* No contextual typing from return types for boolean literals

* Accept new baselines

* Add regression tests
2022-03-30 16:32:24 -07:00
Adam Foxman
41aca7c337 Add a new compiler option moduleSuffixes to expand the node module resolver's search algorithm (#48189)
* Add moduleSuffixes compiler option and related tests. Update baselines for compiler options tests.

* Add a flag to the command-line parser which allows "list" params to preserve "falsy" values such as empty strings. Falsy values are normally stripped out.

* Add tests. Rework resolver logic to only run module-suffix code when needed.

* PR feedback

* Add test

* Remove unnecessary conditional.
2022-03-30 15:23:26 -07:00
Anders Hejlsberg
df7ed82dd5 Revise accessor resolution logic and error reporting (#48459)
* Revise accessor resolution logic and error reporting

* Accept new baselines

* Update isTypeElement

* Add tests
2022-03-28 10:44:11 -07:00
Oleksandr T
c720ad6ffb fix(48166): skip checking module.exports in a truthiness call expression (#48337) 2022-03-28 08:23:20 -07:00
Oleksandr T
f4d76e5b93 fix(48031): show circularity error for self referential get accessor annotations (#48050) 2022-03-25 15:36:22 -07:00
Andrew Casey
e7426251b0 Revert "Fix contextual discrimination for omitted members (#43937)" (#48426)
This reverts commit 751c114126, which caused check time for our MUI benchmark to increase by ~25%.
2022-03-25 13:09:19 -07:00
Mateusz Burzyński
3ec1b04808 Add explicit tests for unconstrained type param not being assignable to {} and Record<string, any> (#48421) 2022-03-25 05:36:02 -07:00
islandryu
bf0eef4353 fix(48034): Get a literal string of type intersection in a template literal type (#48044) 2022-03-22 13:38:24 -07:00
Andrew Branch
df1faa09b8 Add isolatedModules error for ambiguous imports referenced in decorator metadata (#42915)
* Add isolatedModules error for ambiguous imports referenced in decorator metadata

* Improve test and accept baselines

* Error only for es2015+

* Add namespace import to error message as workaround

* Add codefix

* Fix merge fallout
2022-03-17 12:00:23 -07:00
Wesley Wigham
7f652509b6 Handle JS synthetic rest args in contextual parameter assignment (#48263)
* Handle JS synthetic rest args in contextual parameter assignment

* Limit fixing to only unannotated js rest parameters

* Minimize test

* Add annotated version

* Remove explicit CheckFlags.RestParameter check since apparently not all rest parameters are CheckFlags.RestParameter
2022-03-16 11:04:07 -07:00
Wesley Wigham
92bc2ddc3c Consistently avoid pulling on the source return type when the target return type is any (#47306) 2022-03-15 18:16:05 -07:00
Anders Hejlsberg
8e5a84a696 Exclude mapped types with optionality modifiers and 'as' clauses from constraint logic (#48273)
* Exclude mapped types with optionality modifiers and 'as' clauses

* Add regression tests
2022-03-15 17:37:46 -07:00
Jesse Trinity
111ca92646 Fix parser regression for bad related diagnostic on missing matching brackets (#44158)
* Revert "Revert #43460 and #40884 (#44175)"

This reverts commit 5770434891.

* fix missing opening brace match error

* refactor parseExpectedMatchingBrackets

* use getNodePos

* accept baselines

* delete mistakenly added files

* Revert getNodePos addition

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2022-03-15 17:29:41 -07:00
Oleksandr T
4a58fbce17 fix(48081): omit error on importing variables defined with require() (#48115) 2022-03-14 09:55:12 -07:00
Mateusz Burzyński
ca65a1a05b Add boolean to supported literals within Object.freeze (#48117) 2022-03-14 09:07:31 -07:00
Wesley Wigham
d1fa945261 Add moduleDetection compiler flag to allow for changing how modules are parsed (#47495)
* Add moduleDetection compiler flag to allow for changing how modules are parsed

The default setting is 'auto', where JSX containing files under react-jsx and react-jsxdev are
always parsed as modules, and esm-format files under module: node12+ are always parsed as modules,
in addition to the 'legacy' detection mode's conditions for other files. (Declaration files are exempt from
these new conditions)

The 'legacy' mode preserves TS's behavior prior to the introduction of this flag - a file is
parsed as a module if it contains an import, export, or import.meta expression.

In addition, there is a 'force' mode that forces all non-declaration files to be parsed as modules.
(Declaration files are still only modules if they contain a top-level import or export.)

This technically breaks the parser API, but it's kinda-sorta backwards compatible so long
as you don't need the functionality associated with more recent compiler flags.

* Fix post-merge lint

* Rename function

* Update default value documentation

* PR feedback

* Fix lint and typo
2022-03-11 10:36:00 -08:00
Anders Hejlsberg
0271738047 Properly reduce intersections to never in identity relation (#48111)
* Exclude types that may simplify to other forms

* Add regression test
2022-03-11 10:18:04 -08:00
Wesley Wigham
3f63804878 Make direct assignments to cjs exports considered literal contexts (#39816)
* Make direct assignments to cjs exports considered literal contexts

* Style feedback from PR

* Trailing whitespaaaaace
2022-03-09 13:27:39 -08:00
Wesley Wigham
f76452cb27 Fix conditional type type parameter leak (#31455)
* Fix conditional type type parameter leak

* Monkey with comment text per code review

* Conditionally clone type param

* Reuse input array and avoid making mapper where possible
2022-03-09 13:25:14 -08:00
Wesley Wigham
fc82c67357 Don't eagerly simplify reducible generic union index types (#46812) 2022-03-09 12:02:11 -08:00
Wesley Wigham
ea4791d4d7 Preserve the homomorphism of inlined mapped types in declaration emit (#48091) 2022-03-09 10:31:54 -08:00
Ryan Cavanaugh
af027f34fa Bail on 0- and 1-length lists in removeSubtypes to avoid spurious circularity problems (#46981)
* Creates a reasonable workaround for #46939

* Remove unrelated newline

* Do the cheap length check ahead of the cache check

* Actually do it.
2022-03-08 08:50:07 -08:00
jihndai
5f6ebf9d78 Show error when trying to instantiate a union of abstract and concrete constructors (#48114)
* check composite signatures for abstract flag

* add tests and baselines

* refactor someSignature into a single function
2022-03-04 17:39:05 -08:00
jihndai
857889a4e6 Fix crash when this is typed as a generic T with no type constraints (#47991)
* fix this type validations for protected fields

* update previous baselines

* add new tests and baselines

* ClassOrInterface can be returned as enclosingClass

* inline function code and remove unnecessary blank lines

* refactor enclosingClass checks
2022-03-04 17:08:44 -08:00
Oleksandr T
82fc9b19ba fix(43154): emit typeof type for static methods with a computed name (#46923) 2022-03-04 17:07:38 -08:00
Oleksandr T
162713fac9 fix(40617): handle uninitialized class member with computed key (#45974) 2022-03-04 16:03:36 -08:00
Zzzen
f9ae305dda support generic type when checking implicit conversion of symbol to string (#44578)
Co-authored-by: Wesley Wigham <wewigham@microsoft.com>
2022-03-04 15:57:34 -08:00
Erik Brinkman
751c114126 Fix contextual discrimination for omitted members (#43937)
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
2022-03-04 14:07:37 -08:00
liewrichmond
ae62da9413 Fixes #35735: Avoids listing missing properties for types with only call/construct signatures (#40973)
* Fixes #35735

* fixes #35735

* PR feedback

Co-authored-by: Wesley Wigham <wewigham@microsoft.com>
2022-03-04 13:54:38 -08:00
Jake Bailey
112dd24ede Add test for call (#48015) 2022-03-03 09:40:10 -08:00
magic-akari
06d426c966 Fix const enum comments (#47990)
* chore: add test case

* fix: const enum comment

* fix: replace all unsafe pattern

* chore: run regex only if element access
2022-03-03 09:10:02 -08:00
Wesley Wigham
ff1f7b15b7 Esm imports of cjs files should unconditionally have a default patched on (#48062) 2022-03-02 08:53:31 -08:00
Oleksandr T
063714886e fix(47946): check literal types in export assignments with declared JSDoc types (#47951) 2022-03-01 14:44:36 -08:00
Wesley Wigham
71918750f9 Use full isReadonlySymbol check rather than declaration flags (#48064)
* Use full `isReadonlySymbol` check rather than declaration flags

* Limit subtype readonly consistency check to strict subtype relation

* Update comment
2022-02-28 14:35:33 -08:00
Wesley Wigham
03c11c8f70 Add missing getReducedType call in getConditionalTypeInstantiation (#48061) 2022-02-28 13:41:10 -08:00
islandryu
ff3b458714 fix(47158): Removes comments when line variable declaration (#47407)
Co-authored-by: Jake Bailey <5341706+jakebailey@users.noreply.github.com>
2022-02-23 09:33:41 -08:00
Gabriela Araujo Britto
78818e0390 early return if pattern type is never (#47927) 2022-02-22 17:34:02 -08:00
Anders Hejlsberg
db226a80e8 Remove unnecessary check in getNarrowableTypeForReference (#47953)
* Remove unnecessary check in getNarrowableTypeForReference

* Add regression test
2022-02-18 11:03:48 -08:00
islandryu
b8b1201e44 fix(47024):fix type of DateTimeFormat and NumberFormat (#47117)
* fix type of DateTimeFormat and NumberFormat

* add NumberFormat to esnext.intl.d.ts

* Update src/lib/esnext.intl.d.ts

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>

* better unification of previous changes

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2022-02-17 15:37:43 -08:00
DetachHead
092018bd7e fix issue where duplicate default exports aren't detected (#46871)
* 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>
2022-02-17 13:17:31 -08:00
Jonas Hübotter
fb1066e5d9 Uncalled function checks only works with single conditional (#42835)
* 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>
2022-02-17 11:37:55 -08:00
Anders Hejlsberg
5afbfbcbd0 Instantiation expressions (#47607)
* 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
2022-02-16 13:27:16 -08:00
Zzzen
81d1457738 mark length of readonly tuple as readonly (#47717) 2022-02-15 15:02:36 -08:00