Commit Graph

3948 Commits

Author SHA1 Message Date
Ryan Cavanaugh 79d3058b83 Don't crash when renaming a JS property declared via module.exports (#40297)
Fixes #38070

When the originating definition was of the form
```js
module.exports.foo = expr
```
we were incorrectly trying to call `resolveName` on just the `foo` portion to get the "local" symbol, which simply failed to resolve (or would have resolved to the wrong thing), but for this form, the local symbol is just the containing property access expression
2021-03-11 07:23:19 -08:00
Wenlu Wang b20331a4db Fix missing func modifier (#40379)
* Fix missing function modifier

* Update src/services/refactors/convertArrowFunctionOrFunctionExpression.ts

Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>

Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
2021-03-10 09:34:31 -08:00
Nathan Shively-Sanders 3d53661605 Don't inherit jsdoc tags from overloaded signatures (#43165)
Previously, when getting jsdoc for signatures, the services layer would
get the jsdoc tags for the base symbol of a signature if it was
present. This is fine except when the base was overloaded. In that case,
the multiple signatures of the overload would all contribute jsdoc,
which is not correct.

A more correct fix would be to resolve overloads to the base, but
the compiler doesn't have this capability and adding it or jury-rigging
it seems like it would be complex, inappropriate for a fix to ship in a
patch version.

Co-authored-by: Orta Therox <git@orta.io>

Co-authored-by: Orta Therox <git@orta.io>
2021-03-09 12:28:36 -08:00
Nathan Shively-Sanders 5dbb110497 Baseline completions and signature help (#43049)
* Initial implementation+first big transitions

* about 10 more

* Change baseline filename + more baselines

1. Use containing file name instead of first @Filename.
2. Switch the rest of the tests I need for @link over to baselines.

* fix lint

* Remove unused/incorrectly named fourslash baselines

* fix incorrectly updated baselines

* dedupe non-unique filenames

* Add names to marker baselines

Also rename another duped test filename.

* Fix semicolon lint
2021-03-02 16:33:32 -08:00
Oleksandr T f1c911b6c6 fix(43006): skip trivia in a function name (#43021) 2021-03-02 16:32:28 -08:00
Andrew Branch 4b67b4a7bc Support go-to-definition for imports of arbitrary files (#42539)
* Support go-to-definition for imports of scripts and arbitrary files

* Support go-to-definition for non-existent files

* Add missing file property

* Use `isExternalModuleNameRelative` instead of `!pathIsBareSpecifier`

* Add partial semantic test

* Combine with symbol search for non-source-file file references

* Fix and accept API baselines

* Fix useless or

* A definition is unverified if the file path was a guess, even if a source file has that path
2021-03-01 15:15:09 -08:00
Andrew Branch 993c503c84 Add 'data' property to completion entry for better coordination between completions and completion details (#42890)
* Add 'data' property to completion entry for better cooperation between completions and completion details

* Add doc comment

* Update API baselines

* Add server test

* Test session’s Full result

* Fix tests

* stableSort to fix server fourslash test

* Explicit verification of data parameter
2021-03-01 12:09:45 -08:00
Andrew Branch 3c32f6e154 Fix preserveSourceNewlines sibling node comparison (fixes extra newlines in organize imports) (#42630)
* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* Update package-lock.json

* More sophisticated check for source position comparability

* Fix organize imports by looking at the nodes positions

* Rollback formatting changes

* Added tests, fixed organizeImports algorithm

* Fix autoformatting again

* Make sibling node comparison work for all lists

* Don’t run siblingNodePositionsAreComparable at all unless `preserveSourceNewlines` is true

* Move getNodeAtPosition back

* Optimize

* Use node array index check instead of tree walk

* Revert unneeded change

Co-authored-by: TypeScript Bot <typescriptbot@microsoft.com>
Co-authored-by: Armando Aguirre <armanio123@outlook.com>
2021-02-26 10:37:51 -08:00
Armando Aguirre 0791bb0f84 Merge pull request #42332 from a-tarasyuk/fix/42259
fix(42259): Outline and breadcrumb show wrong namespace name
2021-02-24 17:35:36 -08:00
Oleksandr T 896a2b49ac fix(42923): add go-to-definition on unresolved shorthand properties (#42924) 2021-02-24 10:53:27 -08:00
Oleksandr T 9de8dbbfb8 fix(42833): add return type to methods with overloads (#42881) 2021-02-23 14:24:47 +00:00
Wesley Wigham 87d10eb055 Eliminate well known symbols as a concept in the checker and rely on unique symbols (#42543)
* Eliminate well-known symbols in the checker: 2021 edition

* Actually update the lib text to say unique symbol, too (this is unneeded with compat code in place, but this makes goto-def make more sense)

* Add test showing mismatched symbol constructor type interop

* Add more test cases for some other related issues this fixes

* Revert computed name change

* Style comments
2021-02-22 14:43:28 -08:00
Andrew Branch 1fd71478f9 Fix duplicate auto-import completions (#42850)
* Fix duplicate auto-import completions

* Update src/services/completions.ts

Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>

Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
2021-02-18 10:06:37 -08:00
Oleksandr T 7fca9267e6 fix(41740): disallow renaming/exclude from references default keyword (#41947) 2021-02-17 17:07:31 -08:00
Amin Pakseresht 20ce292484 Provide completion for partial expression on closing jsx tags (#42029)
* Provide completion for partial expression on closing jsx tags

* Add more cases and cover opening tag is parent parent of location

* Fix code style indentation

* Add some more notes

* Guarding null pointer

* Guarding null pointer 2

* PR reviews & adjustments 1

* Fix typos

* Better namings

* Remove failing test-case

* PR reviews & adjustments 2 - new approach

* More comments

* More comments 2

* PR reviews & adjustments 3

* Revert previous test-case file changes

* Write explicit completions from ranges

* PR reviews & adjustments 4 - adding exact entry

* Add another missing test-case

* Find jsx closing element by findAncestor

* Walk up till find jsx closing element

* Add one more test-case

* PR reviews & adjustments 4 - Pattern matching to get jsx closing element

* Minor change

* Linting fixes
2021-02-17 17:06:13 -08:00
Jesse Trinity d640313ff2 Expand extractSymbol ranges (#42770)
* allow partial selections of node ranges

* separate tests for better failure investigation

* gate span expansion behind invoked command

* add invoked test

* comment wording

* for test
2021-02-17 12:55:12 -08:00
Wenlu Wang d6a32e31ae Fix import fix on react or react dev (#41950) 2021-02-16 10:28:48 -08:00
Jack Works bb8b9db9f7 Add error for missing await in conditionals 2021-02-16 12:00:41 -05:00
Oleksandr T e5294b4d3c fix(42519): fix infer function return type quick fix with arrow functions without parens (#42532) 2021-02-12 14:38:29 -08:00
Oleksandr T ff5ae3561f feat(42735): add single line comments to selection ranges (#42763) 2021-02-11 17:14:55 -08:00
Oleksandr T b7922147d3 fix(42714): do not show inferFunctionReturnType QF on function body (#42737) 2021-02-11 10:46:48 -08:00
Jesse Trinity 1b19af0f14 Refactor params for interface (#42652)
* apply refactor to interface methods

* handle calls

* no available refactors for union type

* add tests

* Update src/services/refactors/convertParamsToDestructuredObject.ts

Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>

* address comments

* Update src/services/refactors/convertParamsToDestructuredObject.ts

Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>

* Update src/services/refactors/convertParamsToDestructuredObject.ts

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

Co-authored-by: Daniel Rosenwasser <DanielRosenwasser@users.noreply.github.com>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2021-02-09 13:30:31 -08:00
Oleksandr T 60a6240210 feat(42637): add generateReturn option to UserPreferences (#42642) 2021-02-05 15:24:48 -08:00
Andrew Branch 79ed041b6a Fix Format Selection on JSDoc comments (#42411) 2021-02-05 10:37:47 -08:00
Nathan Shively-Sanders f1583f08a0 Signature help turns off current-parameter display for non-trailing rest parameters (#42592)
* Signature help: support non-trailing rest parameters

In signature help, the first rest parameter will always be the *last*
'current' parameter (disregarding types). Previously, the signature help
current-parameter highlight was only correct for trailing rest
parameters. However, with tuple types, you can now create non-trailing
rest parameters. This PR now correctly highlights non-trailing rest
parameters as the last 'current' parameter.

For example, `names` should be the current parameter in all the calls
below:

```ts
declare function loading(...args: [...names: string[], allCaps: boolean, extra: boolean]): void;

leading(/**/
leading('one', /**/
leading('one', 'two', /**/
```

And, because signature help doesn't do real overload resolution, `names`
is also the current parameter for other calls:

```ts
leading(1, 2, 3, 'ill-typed', /**/
leading('fine', true, /**/
```

* Change 'variadic' to 'rest'

* fix missed rename

* use single, original tuple instead

* Revert "use single, original tuple instead"

This reverts commit f0896f32ea.

* Improve sig help of trailing rest too

1. Trailing rest keeps highlight at end instead of going off the end.
2. Non-trailing rest disable highlight entirely (by putting the index
one past the end).

* update API baselines
2021-02-05 09:37:28 -08:00
Wesley Wigham 19db9ad675 Swapping the quote style of a string for completions should swap _all_ quotes in the string (#42650) 2021-02-04 13:56:34 -08:00
Andrew Branch 258be217a6 Fix completions crash on transient exported property named 'default' (#42583)
* Fix completions crash on transient exported property named default

* Revert simplification, both conditions were needed
2021-02-04 10:22:15 -08:00
Andrew Branch 1c25b009f2 Sort import fixes by number of directory separators (#42614)
* Add failing test

* Sort all import fixes by number of directory separators
2021-02-03 10:42:13 -08:00
Andrew Branch 96cc9b96fe Make object literal properties new identifier locations when not contextually typed (#42612)
* Make object literal properties new identifier locations when not contextually typed

* Fix completions after comma in object literal

* Update other test
2021-02-02 16:17:55 -08:00
Andrew Branch 8523ca4fa3 Don’t create missing nodes for identifiers that would be valid in a newer script target (#42520)
* Add test

* Don’t create missing nodes for identifiers that would be valid in a newer script target

* Add to test

* Remove unnecessary assignment
2021-01-29 14:10:29 -08:00
Andrew Branch 9d21a5b56c Fix indentation of multiline conditional expressions (#42484)
* Fix indentation of multiline conditional expressions

* Add more comment

* Fix comment typo

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

* Fix suggestion formatting

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2021-01-29 12:07:57 -08:00
Andrew Branch 65e4d60d81 Fix formatter determination of initial indentation of list items after the first (#42352)
* Add failing test

* Fix determination of initial indentation of list items after the first
2021-01-29 09:49:47 -08:00
Armando Aguirre 871096b3a1 Merge pull request #42356 from armanio123/FixJSDocFormatting
Fix double asterisk formatting in JSDoc
2021-01-25 15:05:44 -08:00
M.Yoshimura 701493fb80 Support top level "for await of" (#37424)
* Support Top Level "for await of".

* Add test cases for top level "for await of".

* Apply suggestions from code review

* add test cases

* remove redundant variables

* fix test baselines

* Update diagnostic message and tests

Co-authored-by: Ron Buckton <ron.buckton@microsoft.com>
2021-01-25 13:40:45 -08:00
AnyhowStep f529115b41 fixes microsoft/TypeScript#41286 (#41294)
* fixes microsoft/TypeScript#41286

* Added period to end of deprecation message

* Search Symbol.declarations for deprecated tag instead of Symbol.valueDeclaration

* renamed arg0 to deprecatedEntity, narrowed param type

* Added different deprecation message if signature is available

* address PR comments

Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
2021-01-25 13:33:28 -08:00
Amin Pakseresht 290af69b73 Filter out global keywords of UMD module export declarations in completion providing auto import suggestions (#42141)
* Add AutoImportSuggestions for UMD module export declarations instead of global keywords

* Add test for scripts

* Add more comments

* Provide auto import suggestion only for modules and not scripts

* PR review #1

* PR review #1
2021-01-25 09:29:13 -08:00
Andrew Branch 0383b5cb4c Optimize import fixes for projects with many symlinks (#42150)
* Create symlink cache when a pnpm module is found

* Keep pnpm-internal symlinks out of the symlink cache

* Filter out  pnpm path from realpath module specifier too

* Optimize symlink module specifier generation

* Add trailing directory separators

* Remove unneeded change

* Fix paths losing case in cache

* Fix missing absolutification
2021-01-20 12:15:36 -08:00
Armando Aguirre a231b23772 Fix start position on JSDoc parsin 2021-01-19 23:02:56 -08:00
Armando Aguirre 98e9e77255 Fixed JSDoc with only one asterisk in comment 2021-01-19 15:55:01 -08:00
chenjigeng d1e1e9dccc Feat/exclude completions of variable initializers (#42087)
* feat: exclude declared variable when Object literal completions

* feat: check undeclareVariable when completion

* feat: add completion test case

* feat: code optimization

* feat: support shorthand property assignment

* feat: add shorthand property assignment test case

* feat: update completionPropertyShorthandForObjectLiteral test cases

* feat: exclude completions of variable initializers

* feat: update test cases

* feat: add completionListWithoutVariableinitializer test case

* feat: perfect the completionListWithoutVariableinitializer test case

* feat: remove isIdentifier limit

* feat: update test cases

* feat: code optimization and filter out some binding cases

* feat: update test case

* feat: handle arrow function expressions without braces

* feat: add arrow function expressions without braces test case

* feat: check node.parent exist first

* feat: optimization name

* feat: optimize test cases

* chore: code formatting

* feat: perfect type
2021-01-15 15:57:18 -08:00
Oleksandr T 8324dec9e9 feat(33715): include methods of class defined in a property (#42164) 2021-01-15 09:52:46 -08:00
Armando Aguirre 995023c2a7 Fix double asterisk formatting in JSDoc 2021-01-14 21:50:22 -08:00
Andrew Branch 33ea6c581a Fix indentation for closing > of ExpressionWithTypeArguments (#42341) 2021-01-14 14:48:40 -08:00
Oleksandr T 8eaf58fd13 fix(42259): omit merging modules with different names 2021-01-14 15:27:28 +02:00
Andrew Branch 33046e389a Do not suggest paths inside node_modules/.pnpm as module specifiers (#42095)
* Create symlink cache when a pnpm module is found

* Keep pnpm-internal symlinks out of the symlink cache

* Filter out  pnpm path from realpath module specifier too

* Use ignoredPaths instead of pnpm-specific path
2021-01-12 14:04:03 -08:00
Anders Hejlsberg 6aeb8c12cc Preserve type aliases for union and intersection types (#42149)
* Create separate types for equivalent aliased unions

* Accept new baselines

* Preserve original types for union types

* Accept new baselines

* Preserve intersection origin for union types

* Accept new baselines

* Accept new baselines

* Preserve aliases during relationship checks

* Accept new baselines

* Preserve aliases for intersection and indexed access types

* Accept new baselines

* Compute intersection-of-unions cross product without recursion

* Accept new baselines

* Use denormalized type objects for origin / support 'keyof' origins

* Accept new baselines

* Fix fourslash test

* Recursively extract named union types

* Accept new baselines

* Map on union origin in mapType to better preserve aliases and origins

* Remove redundant call

* Accept new baselines

* Revert back to declared type when branches produce equivalent union

* Accept new baselines

* Don't include denormal origin types in regular type statistics

* Fix issue with unions not being marked primitive-only

* Allow new alias to be associated with type alias instantiation

* Accept new baselines

* Revert "Accept new baselines"

This reverts commit 4507270cc1.

* Revert "Allow new alias to be associated with type alias instantiation"

This reverts commit 2c2d06dfe1.
2021-01-08 15:19:58 -10:00
Oleksandr T 0c58edeb29 feat(26217): Add missing member fix should work for missing function (#41215)
* feat(26217): Add missing function declaration QF

* use codeFixAvailable instead of codeFix

* add diagnostics messages 'Method not implemented.' and 'Function not implemented.'

* use codeFixAvailable instead of codeFix

* fix signature types
2021-01-08 16:10:50 -08:00
Oleksandr T 042bf4eb15 feat(14248): add returns tag to JSDoc template (#42068) 2021-01-07 17:57:23 -08:00
Oleksandr T 0876feb7cb fix(42160): omit unnecessary parentheses around assertions (#42169) 2021-01-04 11:24:37 -08:00
Oleksandr T f1dca6a61f fix(42019): include the jsdoc tags from the base declaration (#42098) 2021-01-04 15:33:26 +00:00