* Add remove unnecessary await fix
* Add test for removing unnecessary parens after await is gone
* Fix handling of numbers in property access expressions
* Don’t offer suggestion when awaited type is any/unknown
* Fix random other test
* Fix new expression edge cases
* Only remove parens for identifiers and call expressions
* Move package.json related utils to utilities
* Add failing test
* Make first test pass
* Don’t filter when there’s no package.json, fix scoped package imports
* Use type acquisition as a heuristic for whether a JS project is using node core
* Make same fix in getCompletionDetails
* Fix re-exporting
* Change JS node core module heuristic to same-file utilization
* Remove unused method
* Remove other unused method
* Remove unused triple-slash ref
* Update comment
* Refactor findAlias to forEachAlias to reduce iterations
* Really fix re-exporting
* Use getModuleSpecifier instead of custom hack
* Fix offering auto imports to paths within node modules
* Rename things and make comments better
* Add another reexport test
* Inline `symbolHasBeenSeen`
* Simplify forEachAlias to findAlias
* Add note that symbols is mutated
* Symbol order doesn’t matter here
* Style nits
* Add test with nested package.jsons
* Fix and add tests for export * re-exports
* Start prototyping addMissingAwait codefix
* Filter by diagnostics that have missing-await related info
* Start writing tests and checking precedence
* Implement codeFixAll, add test for binary expressions
* Add test for iterables
* Add test for passing argument
* Add test for call/construct signatures
* Add test for awaiting initializer
* Improve assertion error
* Replace specific property access error with general one and add await related info
* Add test for property access
* Require code to be inside a function body to offer await
* Accept suggestion
Co-Authored-By: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
* Add explicit test for code fix being not available unless something is a Promise
* Skip looking for function body if already in AwaitContext flags
* Inline getCodeActions function for symmetry
1. When calling a non-callable expression the error span is on the call target not on the whole call
2. When calling a method, the error for overload resolution now includes the arguments (this was previously regressed by #31414)
* Added --noImplicitThis code fix for functions used as object properties
Before trying out all the various possibilities for where these functions could be used, I figured I'd start out with a relatively simple use case to verify this is the right approach. Is it? 😄
Starts on #28964.
* Fixed function expression names; included new baselines
* Got JSDocs to work, hooray!
* Added test for 'any' case of no function uses
* Refactored for inferFunctionReferencesFromUsage
* Fixed inference bug: undefined references cause parameters to default
* Removed dead code comments
* add action for enabling experimentalDescorators option in user config file, change error message for this case #29035
* add missing changes in tests
* Add "experimental decorators" tests for jsconfig file
Starts on #29035 by creating a codefix to enable the `experimentalDecorators` setting in a user's config file, if one exists. The issue's discussion also mentions giving a more precise error message if the user has a jsconfig or tsconfig or creating one if not; I'd rather tackle those in separate PRs to keep this one small.
Doesn't create the code action if no config file is present. Otherwise keeps to the precedent of returning without action when the config file contents aren't the expected JSON structure (looking at `fixCannotFindModule.ts`). Moves a couple JSON helpers from that file into the sibling `helpers.ts` so both codefixes can use them.
* Infer from arrows from usage.
Previously only function expressions were, and only those with an easily
accessible name. Now any arrow function or function expression will
infer from usage.
* remove isApplicableFunctionForInference
*all* functions are applicable for inference now.
* constructor functions infer from call+construct
Also fix an incorrect combining of inferences for rest parameters: the
inferred types will be arrays in the body of the function and the
arguments from outside the function will be the element type.
* All functions infer from call+construct contexts