* 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>
* Update baseline
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
Component commits:
bd2fd3b5e0 Only filter ignored paths from module specifier generation if there exists a better option
a687bae32b Nit
7597f5236f Merge branch 'master' into bug/42785
Co-authored-by: Andrew Branch <andrew@wheream.io>
Component commits:
9f9825a4f0 Fix: checkAliasSymbol crash when checking for @deprecated
It's possible that we shouldn't be creating symbol with no declarations
from non-homomorphic mapped types, but for 4.2, the right fix is to make
the @deprecated-check in checkAliasSymbol ensure that
target.declarations is defined.
75449de4be Add bug number and accept baselines
Co-authored-by: Nathan Shively-Sanders <nathansa@microsoft.com>
Component commits:
361e19bbe8 Ensure no duplicates in named union list
615050437b Add regression test
Co-authored-by: Anders Hejlsberg <andersh@microsoft.com>
Component commits:
ed2681639c Avoid getting undefined `callSignatures`/`constructSignatures` in `getPropertyOfType`
e350c357 (#40228) introduced a subtle bug: it switched the flags to an
alias, dropping `SymbolFlags.Property` --- and that makes
`symbolIsValue()` get to the `resolveAlias(symbol)` call, which leads to
`getPropertyOfType()` with`resolved.callSignatures`+`constructSignatures`
being `undefined`. So initialize them in `setStructuredTypeMembers`
before calling `getNamedMembers()`.
Fixes#42350
Co-authored-by: Eli Barzilay <eli@barzilay.org>
Component commits:
21eb38bd7f Fix for crash when using ca call expression on private identifier coming from an any typed variable. (GH #42860)
Co-authored-by: Titian Cernicova-Dragomir <tcernicovad1@bloomberg.net>
Component commits:
0edae127ae Reduce void | undefined only in conjunction with subtype reduction
6b487a6db5 Accept new baselines
e7b6601de7 Add regression test
Co-authored-by: Anders Hejlsberg <andersh@microsoft.com>
Component commits:
214ef0c750 No did-you-mean-to-call error on casts
I chose to do the ad-hoc check rather than yet another tree walk.
1. It's faster to run and easier to read.
2. This error came from looking at real code. It happened twice, so I
think the best estimate for other uses that happened zero times is in
fact zero.
3. I couldn't think of other places to put the cast, given the
restrictions on `testedNode` just before the new code.
1d347785de Merge branch 'master' into no-did-you-mean-to-call-error-on-casts
b3be79ad0f Skip parentheses
2a288127e9 Merge branch 'master' into no-did-you-mean-to-call-error-on-casts
Co-authored-by: Nathan Shively-Sanders <nathansa@microsoft.com>
Component commits:
214ef0c750 No did-you-mean-to-call error on casts
I chose to do the ad-hoc check rather than yet another tree walk.
1. It's faster to run and easier to read.
2. This error came from looking at real code. It happened twice, so I
think the best estimate for other uses that happened zero times is in
fact zero.
3. I couldn't think of other places to put the cast, given the
restrictions on `testedNode` just before the new code.
1d347785de Merge branch 'master' into no-did-you-mean-to-call-error-on-casts
Co-authored-by: Nathan Shively-Sanders <nathansa@microsoft.com>
* 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 f0896f32ea3d523f1186e9bea2446f75f3a182de.
* 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
* Make object literal properties new identifier locations when not contextually typed
* Fix completions after comma in object literal
* Update other test
* @typedef: Improve error spans from declaration emit
This is a proof-of-concept fix. I think it could be expanded for all of
jsdoc, but I only set it up for jsdoc type aliases. It could use a lot
of polish too.
* track error node in isSymbolAccessible instead
* Switch to using enclosingDeclaration
Remove trueErrorNode
* add test of @callback and @enum
* Better error + fix @enum error
Since enums don't have a name property, you *have* to call
`getNameOfDeclaration` to go looking through the AST for one.
* 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>
* fixesmicrosoft/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>
* 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
* Add --force to npm install script for user tests
* Migrate prettier to docker
* Fix vscode Dockerfile
* Fix stack space issue in isJSLiteralType
* Use --legacy-peer-deps based on npm version
* Fix xterm.js Dockerfile
* Add tests for "Cannot find name 'global'. Did you mean 'global'?"
* Fix "Cannot find name 'global'. Did you mean 'global'?"
* Add an additional test case for spelling suggestions of "global".
* Name the boolean for suggestions being global scope augmentations.
* 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
* 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