* Support multiple completions with the same name but different source module
* Use optional parameters for source
* Simplify use of `uniques`
* Update test
* Fix `undefined` error
* Fix#19257: Ensure a generated signature has a return type
* Ensure generated properties have types
* Use the same context for multiple inferences to the same property access
* checker.ts: Remove null check on symbols
* tsserverProjectSystem.ts: add two tests
* client.ts, completions.ts, types.ts: Add codeActions member to CompletionEntryDetails
* protocol.ts, session.ts: Add codeActions member to CompletionEntryDetails protocol
* protocol.ts, session.ts, types.ts: add hasAction to CompletionEntry
* session.ts, services.ts, types.ts: Add formattingOptions parameter to getCompletionEntryDetails
* completions.ts: define SymbolOriginInfo type
* completions.ts, services.ts: Add allSourceFiles parameter to getCompletionsAtPosition
* completions.ts, services.ts: Plumb allSourceFiles into new function getSymbolsFromOtherSourceFileExports inside getCompletionData
* completions.ts: add symbolToOriginInfoMap parameter to getCompletionEntriesFromSymbols and to return value of getCompletionData
* utilities.ts: Add getOtherModuleSymbols, getUniqueSymbolIdAsString, getUniqueSymbolId
* completions.ts: Set CompletionEntry.hasAction when symbol is found in symbolToOriginInfoMap (meaning there's an import action)
* completions.ts: Populate list with possible exports (implement getSymbolsFromOtherSourceFileExports)
* completions.ts, services.ts: Plumb host and rulesProvider into getCompletionEntryDetails
* completions.ts: Add TODO comment
* importFixes.ts: Add types ImportDeclarationMap and ImportCodeFixContext
* Move getImportDeclarations into getCodeActionForImport, immediately after the implementation
* importFixes.ts: Move createChangeTracker into getCodeActionForImport, immediately after getImportDeclarations
* importFixes.ts: Add convertToImportCodeFixContext function and reference it from the getCodeActions lambda
* importFixes.ts: Add context: ImportCodeFixContext parameter to getCodeActionForImport, update call sites, destructure it, use compilerOptions in getModuleSpecifierForNewImport
* importFixes.ts: Remove moduleSymbol parameter from getImportDeclarations and use the ambient one
* importFixes.ts: Use cachedImportDeclarations from context in getCodeActionForImport
* importFixes.ts: Move createCodeAction out, immediately above convertToImportCodeFixContext
* Move the declaration for lastImportDeclaration out of the getCodeActions lambda into getCodeActionForImport
* importFixes.ts: Use symbolToken in getCodeActionForImport
* importFixes.ts: Remove useCaseSensitiveFileNames altogether from getCodeActions lambda
* importFixes.ts: Remove local getUniqueSymbolId function and add checker parameter to calls to it
* importFixes.ts: Move getCodeActionForImport out into an export, immediately below convertToImportCodeFixContext
* completions.ts: In getCompletionEntryDetails, if there's symbolOriginInfo, call getCodeActionForImport
* importFixes.ts: Create and use importFixContext within getCodeActions lambda
* importFixes.ts: Use local newLineCharacter instead of context.newLineCharacter in getCodeActionForImport
* importFixes.ts: Use local host instead of context.host in getCodeActionForImport
* importFixes.ts: Remove dummy getCanonicalFileName line
* Filter symbols after gathering exports instead of before
* Lint
* Test, fix bugs, refactor
* Suggestions from code review
* Update api baseline
* Fix bug if previousToken is not an Identifier
* Replace `startsWith` with `stringContainsCharactersInOrder`
* Infer from usage quick fix
* Change full function singature
* Add property/element access support
* Fix a few issues
* Some cleanup
* Expose getArrayType and getPromiseType
* Switch to collecting all usage before infering
* Infer array and promise type arguments
* Handel enums in binary operators
* consolidate usage of addCandidateTypes
* Handel rest paramters
* Properly handel `+=` and `+` inference for numbers and strings
* Add print quickfixes debug helper
* Add rest param tests
* Add optional paramter tests
* Handel set accessors
* Support getters
* Support no implicit any error for variable at use site
* Support properties
* Only offer quick fix if an infered type other than any is available
* Rename functions
* Move to a separate namespace
* Check cancellation token
* Cleanup
* Check for accesibile symbols where serializing types
* Remove JS support
* Reorganize functions
* Mark APIs as internal
* Fix lint errors
* Removed conflict markers.
* Update 'createSymbol' to use '__String'.
* Fixed most problems relating to '__String' and 'includeJsDocComments' in the fix itself.
* Addressed most API changes.
* Make all helpers internal
* Use a diffrent writer and not the built-in single line write
* Infer types for all parameters in a parameter list instead of one at a time
* Accept baselines
* Code review commments
* Respond to code review comments
* Don't count a write-only reference as a use
* Split isWriteAccess to isWriteOnlyAccess and isReadOnlyAccess
* Update "unusedParameterUsedInTypeOf" to use "b"
* Update diagnostic messages: "is never used" -> "its value is never read"
* Use a WriteKind enum
* Rename enum and move documentation to enum members
* Add test with bug
* Fix for import placement
* Consolidate comment recognition functions into utilities
* Add another test with all 3 kinds
* Recognize path directives as part of triple slash directives
* Also handle no-default-lib triple-slash comments
* Test for all the triple-slash kinds
* Keep import-placement logic in the quickfix, since its not really a node start; accept new baselines
* Work in not-ES6, use a real no-lib comment
* Remove no default lib triple slash comment, it disables checking and thereby quick fixes
* Copy regex rather than have a regex copy
* Include export assignment properties when looking for module exports
* Create new API function for tryGetMemberInModuleExportsAndProperties
* Cleanup based on review feedback
- We didn't locate the package.json correctly in cases where the module to be imported is in a subdirectory of the package
- We didn't look at the types element in package.json (just typings)
- We didn't remove /index.js from the path if the main module was in a subdirectory
Fixes#16963
Instead of trying to walk the type structure in the codefix, I changed
to call getTypeFromTypeNode in the checker and then calling
typeToString. Together, these two functions normalise out JSDoc.
Note that you only get `T | null` for `?T` if you have --strict on. This
is technically correct -- adding a null union does nothing without
strict -- but it would still serve as documentation.
For ?, provide two code fixes, one for jsdoc/closure semantics
(`?t -> t | null)` and one for flow semantics
(`?t -> t | null | undefined`).
The current way of doing this is the hackiest thing you can imagine, but
it was easier than lifting everything into the list monad for a code fix
that I might not actually keep.
1. Still pretty janky.
2. Type Reference code doesn't work yet.
3. Other transforms just aren't done.
4. Always replaces, even when there isn't any transformation of JSDoc
types. (This probably isn't an issue since we wouldn't issue an error unless there were
some JSDoc to change.)