a1089893bd
* Fixes #26128 - signature comp for jsdoc @class. Another issue caused by js functions tagged with jsdoc `@constructor` not having construct signatures. A jsdoc function type that constructs a type (`function(new: Ex)`), has a construct signature and return value inferred as the constructed type where as a jsdoc `@constructor` has no construct signatures, and it's call signature has a void return type (or undefined). i.e: ```javascript /** @constructor **/ function E() {}; // typeof E -> call signature: () => void /** @param {function(new: E)} d */ function c(d) {} // typeof d -> construct: () => E ``` -- This commit fixes this (in an inelegant way) by considering `@class` function signatures as construct signatures and synthesizing it's return value _only for signature comparison_. There might be a slight performance hit, since the synthesized return value is not cached; but changing the `@class` function's return type in `getReturnTypeOfSignature` causes other issues. * Update jsdoc function test to fix mistake. |
||
---|---|---|
.. | ||
ambient | ||
async | ||
classes | ||
constEnums | ||
controlFlow | ||
declarationEmit | ||
decorators | ||
dynamicImport | ||
emitter | ||
enums | ||
es6 | ||
es7 | ||
es2017 | ||
es2018 | ||
es2019/importMeta | ||
expressions | ||
externalModules | ||
functions | ||
interfaces | ||
internalModules | ||
jsdoc | ||
jsx | ||
moduleResolution | ||
parser | ||
references | ||
salsa | ||
scanner | ||
statements | ||
Symbols | ||
types | ||
typings | ||
fixSignatureCaching.ts |