* Remove Node12, add Node16.
* Accepted baselines.
* Refactor checking for top-level await, give a better error message in CJS files.
* Accepted baselines.
* Stop erroring on JSON module imports in node ESM since they're no longer experimental.
* Accepted baselines.
* More refactoring, do the same checks for for-await loops.
* Accepted baselines.
* Adjust phrasing to permit for-await on CJS error.
* Accepted baselines.
* Accepted baselines.
* Fix lints.
* WIP
* fix cross-project renaming logic
* only use configure if prefix opt is defined
* refactor skipAlias into stopAtAlias
* fix stopAtAlias
* update another stopAtAlias location
* Use fixed time for vfs so baselining is consistent
* Baseline buildinfos
* Write new file text in baseline even if the file wasnt read on the shadow
* Remove unnecessary debugger statement
* If we are writing dts file and have used file text as version, we can update the signature when doing actual emit
* Make WriteFileCallback Api ready for future
* Assert that there is only single source file when emitting d.ts file
* Prototype resolving to JS when go-to-def aliases all resolve to ambient declarations
* Add test infrastructure
* Start fleshing out test coverage
* Fix some go-to-def stuff
* Finish lodash test case
* Make go-to-implementation never return ambient results
* Build new functionality into go-to-implementation
* Update baselines
* Two more test cases
* Refine definition searches for unresolved imports
* Revert "Build new functionality into go-to-implementation"
This reverts commit 381799d0f1.
* Fix tests
* Revert go-to-implementation changes
* Wow a bunch of code was unnecessary
* Update baselines and go-to-def test
* Fix navigation on symbols that are not aliases but resolve through aliases in chain
* Temporarily replace go-to-def with new command implementation
* Revert "Temporarily replace go-to-def with new command implementation"
This reverts commit 34c6cfdebb.
* Revert "Wow a bunch of code was unnecessary"
This reverts commit 1cb2ba646c.
* Bring back some deleted code needed for a new test case
* Clean up a little
* Rename more stuff
* Update test
* Update API baseline
* Temporarily replace go-to-def with new command implementation
* PR review fixes
* Fix getTopMostDeclarationNamesInFile
* Rename local
* Use hash set
* Remove option from commandLineParser
* Keep noDtsResolution project around
* Handle AuxiliaryProject kind in ScriptInfo getDefaultProject etc.
* Do not run updateGraph in the background for AuxiliaryProject
* Don’t create auxiliary project outside of semantic mode
* No-op on scheduled invalidation
* Add comments to unit test
* Sync compiler options to auxiliary project
* Fix case sensitivity
* Update extensionIsOk with new file extensions
* PR feedback
* Update API baseline
* Mark scheduleInvalidateResolutionsOfFailedLookupLocations internal
* Use same heuristics on property accesses of loosely-resolvable aliases as unresolvable named imports
* Rename command, and no need to return the bound span
* Update API baseline
* Don't report isDefinition unless the starting node is a declaration
* Drop isDefinition everywhere it isn't specifically needed
* Fix tsserver tests
* Update shim comment
* Update baselines
* Add tests for isDefinition
* Update doc comment
* Clear isDefinition from all references if the first one lacks it
* add label details to completion entry
* Use label details for obj literal method completions
* add label details support flag
* add label details support to fourslash
* support both label details and non-label details in object literal method snippets
* CR fixes
* fixes after rebasing
* fix tsserver tests
* skeleton of new feature
* working prototype
* refactor print and format code into its own function
* minor changes; don't support overloads
* have two completion entries
* get rid of accessor support
* add snippet support
* add formatting
* add trailing comma
* add sourcedisplay
* support auto-imports via completion details
* add user preference option and fix ordering of entries
* cleanup
* don't return code actions for no import fixes
* make sortText lower priority for snippets
* get rid of flag
* use optional member sort text
* update baselines
* don't collect method symbols if insert text is not supported
* remove comment
* return undefined if type is not function type
* only slice if needed
* use union reduction; more test cases
* WIP: modify sort text system
* Improve new sort text system
* add signature and union type check
* re-add flag
* fix tests
* rename sort text helper
* fix test and code for union case
* add new flag to protocol type
* fix spaces
* CR: minor fixes
* CR: more fixes
* CR: restructure main flow
* minor fix
* 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
* tmp
* fix jsdoc inheritage for property and setter/getter
* fix test
* fix test
* fix mirrors
* add more tests
* add tests of jsdoc for intance of class
* Sort resolved auto-import completions by number of directory separators
* Sort completions in services layer
* Finish tests
* Fix more tests
* Respect SortText in completions
* Update tests to use `unsorted` assertion
Instead, search for stuff up the directory tree, with the main
functionality being to look for `Gulpfile.js` and assume the resulting
directory is the root.
(Unfortunatley, this is implemented twice, one in `scripts` and another
in `src`. It's not possible to use a single implementation for both
since that would require assuming a directory structure which this is
intended to avoid.)
Also, in `scripts/build/projects.js`, abstracdt common exec
functionality into a local helper, and use full paths based on the above
search instead of assuming relative paths assuming CWD being in the
project root.
* Initial support for module: node12
* Add allowJs and declaration emit enabled tests
* Fix typos
* cts, mts, cjs, mjs, etc extension support
* Fix watch of files whose intepretation changes due to a package.json update
* Minor PR feedback
* Adjust error message
* Initial import/export/self-name support
* Accept new error codes
* TypesVersions support in export/import map conditions
* Fix import suggestion and autoimport default extensions under new resolution modes
* Add tests for import maps non-relative name lookup feature
* Fix isDeclarationFileName for .d.mts and .d.cts
* Preserve new extensions when generating module specifiers
* Fix spurious implict any suggestion caused by file ordering bug and optimize import name format detection by relying on parents being set
* Fix a bunch of incremental bugs that dont repro under fourslash for some reason
* Accept updated baseline
* Always include extensions on completions for cjs/mjs style imports
* String completion relative import suggestions respect the mode of the import when choosing if they provide extensions
* Style feedback
* Change diagnostic case
* Remove referenceGroups/noReferences from fourslash
I left most singleReferenceGroups because there were so many, and my current
PR doesn't affect many of them.
* update fourslash/server too
* Explicitly sort keys
Needed for node 10 compatibility
* Revert "Explicitly sort keys"
This reverts commit 1d1c58a4e3.
It shouldn't be needed now that we're not testing with node 10
* Adds 'Awaited' type alias and updates to Promise.all/race/allSettled/any
* Use Awaited<T> with 'await'
* Clean up overloads
* Further restrict 'Awaited<T>' auto-wrapping for 'await'
* Mark properties defined in Annex B as deprecated
* Tweak
* Update baselines
* Update fourslash tests
* Add completionsStringMethods.ts test
* Fix sortText value in fourslash test for deprecated tags
* Update package-lock.json
* Update package-lock.json
* Mark Non-standard RegExp Constructor properties as deprecated
* Update baselines
Co-authored-by: TypeScript Bot <typescriptbot@microsoft.com>
* Make getSourceOfProjectReferenceRedirect take a Path
* Add useCaseSensitiveFileNames to ModuleResolutionHost
...so that path comparisons can use it during module resolution.
* Re-enable realpathSync.native for case-insensitive file systems
* Simple first version
Doesn't cover or test any complicated variations.
* Lots of cases work
Destructuring does not. But
- skipping node_modules and lib.* does.
- call expressions does
- property access, including with private identifiers, does
* Support variable declarations, property assignments, destructuring
As long as it's not nested
* More cleanup
* skip all d.ts, not just node_modules/lib
* Offer a codefix for a lot more cases
* remove incorrect tuple check
* Use getSymbolId instead of converting to string
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
* add test + switch to tracking number symbol ids
* Address PR comments
* Exclude tuples from suggestion
* Better way to get error node
Plus add a check that errorNode is an argument to the call, not the
call's expression.
* fix semicolon lint
* fix another crash
* Simplify: add undefined to all optional propertie
whether or not somebody tried to assign undefined to them in the
erroneous assignment
* remove fix-all
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
* Update tsc-instrumented for project build
loggedIO has a weird build that never got updated for the project build
system. This PR just adds a project for it in a straightforward way. It
might be less efficient than the old way, but that's not a big concern
for recording RWC test cases.
However, I may have done things wrong. If anybody knows
tsc-instrumented, please comment.
* Create a second loggedIO tsconfig for tsc-instrumented
The normal tsconfig should not have `prepend`; the standalone one for
tsc-instrumented should.
* fix semicolon lint