typescript 4.6.0-dev.20211114 → 4.6.0-dev.20211118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20211114";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20211118";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -51860,8 +51860,8 @@ var ts;
51860
51860
  var expandedParams = getExpandedParameters(signature, /*skipUnionExpanding*/ true)[0];
51861
51861
  // If the expanded parameter list had a variadic in a non-trailing position, don't expand it
51862
51862
  var parameters = (ts.some(expandedParams, function (p) { return p !== expandedParams[expandedParams.length - 1] && !!(ts.getCheckFlags(p) & 32768 /* RestParameter */); }) ? signature.parameters : expandedParams).map(function (parameter) { return symbolToParameterDeclaration(parameter, context, kind === 170 /* Constructor */, options === null || options === void 0 ? void 0 : options.privateSymbolVisitor, options === null || options === void 0 ? void 0 : options.bundledImports); });
51863
- if (signature.thisParameter) {
51864
- var thisParameter = symbolToParameterDeclaration(signature.thisParameter, context);
51863
+ var thisParameter = tryGetThisParameterDeclaration(signature, context);
51864
+ if (thisParameter) {
51865
51865
  parameters.unshift(thisParameter);
51866
51866
  }
51867
51867
  var returnTypeNode;
@@ -51910,6 +51910,21 @@ var ts;
51910
51910
  }
51911
51911
  return node;
51912
51912
  }
51913
+ function tryGetThisParameterDeclaration(signature, context) {
51914
+ if (signature.thisParameter) {
51915
+ return symbolToParameterDeclaration(signature.thisParameter, context);
51916
+ }
51917
+ if (signature.declaration) {
51918
+ var thisTag = ts.getJSDocThisTag(signature.declaration);
51919
+ if (thisTag && thisTag.typeExpression) {
51920
+ return ts.factory.createParameterDeclaration(
51921
+ /* decorators */ undefined,
51922
+ /* modifiers */ undefined,
51923
+ /* dotDotDotToken */ undefined, "this",
51924
+ /* questionToken */ undefined, typeToTypeNodeHelper(getTypeFromTypeNode(thisTag.typeExpression), context));
51925
+ }
51926
+ }
51927
+ }
51913
51928
  function typeParameterToDeclarationWithConstraint(type, context, constraintNode) {
51914
51929
  var savedContextFlags = context.flags;
51915
51930
  context.flags &= ~512 /* WriteTypeParametersInQualifiedName */; // Avoids potential infinite loop when building for a claimspace with a generic
@@ -108871,6 +108886,7 @@ var ts;
108871
108886
  return emitJSDocSignature(node);
108872
108887
  case 325 /* JSDocTag */:
108873
108888
  case 330 /* JSDocClassTag */:
108889
+ case 335 /* JSDocOverrideTag */:
108874
108890
  return emitJSDocSimpleTag(node);
108875
108891
  case 326 /* JSDocAugmentsTag */:
108876
108892
  case 327 /* JSDocImplementsTag */:
@@ -108883,7 +108899,6 @@ var ts;
108883
108899
  case 332 /* JSDocPrivateTag */:
108884
108900
  case 333 /* JSDocProtectedTag */:
108885
108901
  case 334 /* JSDocReadonlyTag */:
108886
- case 335 /* JSDocOverrideTag */:
108887
108902
  return;
108888
108903
  case 336 /* JSDocCallbackTag */:
108889
108904
  return emitJSDocCallbackTag(node);
@@ -114463,6 +114478,7 @@ var ts;
114463
114478
  newSourceFile.originalFileName = oldSourceFile.originalFileName;
114464
114479
  newSourceFile.resolvedPath = oldSourceFile.resolvedPath;
114465
114480
  newSourceFile.fileName = oldSourceFile.fileName;
114481
+ newSourceFile.impliedNodeFormat = oldSourceFile.impliedNodeFormat;
114466
114482
  var packageName = oldProgram.sourceFileToPackageName.get(oldSourceFile.path);
114467
114483
  if (packageName !== undefined) {
114468
114484
  // If there are 2 different source files for the same package name and at least one of them changes,
@@ -115840,7 +115856,7 @@ var ts;
115840
115856
  return resolvedRef;
115841
115857
  }
115842
115858
  function verifyCompilerOptions() {
115843
- var isNightly = ts.stringContains(ts.version, "-dev");
115859
+ var isNightly = ts.stringContains(ts.version, "-dev") || ts.stringContains(ts.version, "-insiders");
115844
115860
  if (!isNightly) {
115845
115861
  if (ts.getEmitModuleKind(options) === ts.ModuleKind.Node12) {
115846
115862
  createOptionValueDiagnostic("module", ts.Diagnostics.Compiler_option_0_of_value_1_is_unstable_Use_nightly_TypeScript_to_silence_this_error_Try_updating_with_npm_install_D_typescript_next, "module", "node12");
@@ -145166,6 +145182,26 @@ var ts;
145166
145182
  var indent = sourceFile.text.slice(startPosition, fnStart);
145167
145183
  this.insertNodeAt(sourceFile, fnStart, tag, { preserveLeadingWhitespace: false, suffix: this.newLineCharacter + indent });
145168
145184
  };
145185
+ ChangeTracker.prototype.addJSDocTags = function (sourceFile, parent, newTags) {
145186
+ var comments = ts.flatMap(parent.jsDoc, function (j) { return typeof j.comment === "string" ? ts.factory.createJSDocText(j.comment) : j.comment; });
145187
+ var oldTags = ts.flatMapToMutable(parent.jsDoc, function (j) { return j.tags; });
145188
+ var unmergedNewTags = newTags.filter(function (newTag) { return !oldTags.some(function (tag, i) {
145189
+ var merged = tryMergeJsdocTags(tag, newTag);
145190
+ if (merged)
145191
+ oldTags[i] = merged;
145192
+ return !!merged;
145193
+ }); });
145194
+ var tag = ts.factory.createJSDocComment(ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n"))), ts.factory.createNodeArray(__spreadArray(__spreadArray([], oldTags, true), unmergedNewTags, true)));
145195
+ var host = updateJSDocHost(parent);
145196
+ this.insertJsdocCommentBefore(sourceFile, host, tag);
145197
+ };
145198
+ ChangeTracker.prototype.filterJSDocTags = function (sourceFile, parent, predicate) {
145199
+ var comments = ts.flatMap(parent.jsDoc, function (j) { return typeof j.comment === "string" ? ts.factory.createJSDocText(j.comment) : j.comment; });
145200
+ var oldTags = ts.flatMapToMutable(parent.jsDoc, function (j) { return j.tags; });
145201
+ var tag = ts.factory.createJSDocComment(ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n"))), ts.factory.createNodeArray(__spreadArray([], (ts.filter(oldTags, predicate) || ts.emptyArray), true)));
145202
+ var host = updateJSDocHost(parent);
145203
+ this.insertJsdocCommentBefore(sourceFile, host, tag);
145204
+ };
145169
145205
  ChangeTracker.prototype.replaceRangeWithText = function (sourceFile, range, text) {
145170
145206
  this.changes.push({ kind: ChangeKind.Text, sourceFile: sourceFile, range: range, text: text });
145171
145207
  };
@@ -145560,6 +145596,33 @@ var ts;
145560
145596
  return ChangeTracker;
145561
145597
  }());
145562
145598
  textChanges_3.ChangeTracker = ChangeTracker;
145599
+ function updateJSDocHost(parent) {
145600
+ if (parent.kind !== 213 /* ArrowFunction */) {
145601
+ return parent;
145602
+ }
145603
+ var jsDocNode = parent.parent.kind === 166 /* PropertyDeclaration */ ?
145604
+ parent.parent :
145605
+ parent.parent.parent;
145606
+ jsDocNode.jsDoc = parent.jsDoc;
145607
+ jsDocNode.jsDocCache = parent.jsDocCache;
145608
+ return jsDocNode;
145609
+ }
145610
+ function tryMergeJsdocTags(oldTag, newTag) {
145611
+ if (oldTag.kind !== newTag.kind) {
145612
+ return undefined;
145613
+ }
145614
+ switch (oldTag.kind) {
145615
+ case 338 /* JSDocParameterTag */: {
145616
+ var oldParam = oldTag;
145617
+ var newParam = newTag;
145618
+ return ts.isIdentifier(oldParam.name) && ts.isIdentifier(newParam.name) && oldParam.name.escapedText === newParam.name.escapedText
145619
+ ? ts.factory.createJSDocParameterTag(/*tagName*/ undefined, newParam.name, /*isBracketed*/ false, newParam.typeExpression, newParam.isNameFirst, oldParam.comment)
145620
+ : undefined;
145621
+ }
145622
+ case 339 /* JSDocReturnTag */:
145623
+ return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
145624
+ }
145625
+ }
145563
145626
  // find first non-whitespace position in the leading trivia of the node
145564
145627
  function startPositionToDeleteNodeInList(sourceFile, node) {
145565
145628
  return ts.skipTrivia(sourceFile.text, getAdjustedStartPosition(sourceFile, node, { leadingTriviaOption: LeadingTriviaOption.IncludeAll }), /*stopAfterLineBreak*/ false, /*stopAtComments*/ true);
@@ -149808,35 +149871,72 @@ var ts;
149808
149871
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code,
149809
149872
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code,
149810
149873
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code,
149811
- ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code
149874
+ ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code,
149875
+ ts.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code,
149876
+ ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code,
149877
+ ts.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code,
149878
+ ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code,
149812
149879
  ];
149813
149880
  var errorCodeFixIdMap = (_a = {},
149814
- _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code] = [
149815
- ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Add_all_missing_override_modifiers,
149816
- ],
149817
- _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code] = [
149818
- ts.Diagnostics.Remove_override_modifier, fixRemoveOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
149819
- ],
149820
- _a[ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code] = [
149821
- ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Add_all_missing_override_modifiers,
149822
- ],
149823
- _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code] = [
149824
- ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
149825
- ],
149826
- _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code] = [
149827
- ts.Diagnostics.Remove_override_modifier, fixRemoveOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
149828
- ],
149881
+ // case #1:
149882
+ _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code] = {
149883
+ descriptions: ts.Diagnostics.Add_override_modifier,
149884
+ fixId: fixAddOverrideId,
149885
+ fixAllDescriptions: ts.Diagnostics.Add_all_missing_override_modifiers,
149886
+ },
149887
+ _a[ts.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code] = {
149888
+ descriptions: ts.Diagnostics.Add_override_modifier,
149889
+ fixId: fixAddOverrideId,
149890
+ fixAllDescriptions: ts.Diagnostics.Add_all_missing_override_modifiers
149891
+ },
149892
+ // case #2:
149893
+ _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code] = {
149894
+ descriptions: ts.Diagnostics.Remove_override_modifier,
149895
+ fixId: fixRemoveOverrideId,
149896
+ fixAllDescriptions: ts.Diagnostics.Remove_all_unnecessary_override_modifiers,
149897
+ },
149898
+ _a[ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code] = {
149899
+ descriptions: ts.Diagnostics.Remove_override_modifier,
149900
+ fixId: fixRemoveOverrideId,
149901
+ fixAllDescriptions: ts.Diagnostics.Remove_override_modifier
149902
+ },
149903
+ // case #3:
149904
+ _a[ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code] = {
149905
+ descriptions: ts.Diagnostics.Add_override_modifier,
149906
+ fixId: fixAddOverrideId,
149907
+ fixAllDescriptions: ts.Diagnostics.Add_all_missing_override_modifiers,
149908
+ },
149909
+ _a[ts.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code] = {
149910
+ descriptions: ts.Diagnostics.Add_override_modifier,
149911
+ fixId: fixAddOverrideId,
149912
+ fixAllDescriptions: ts.Diagnostics.Add_all_missing_override_modifiers,
149913
+ },
149914
+ // case #4:
149915
+ _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code] = {
149916
+ descriptions: ts.Diagnostics.Add_override_modifier,
149917
+ fixId: fixAddOverrideId,
149918
+ fixAllDescriptions: ts.Diagnostics.Remove_all_unnecessary_override_modifiers,
149919
+ },
149920
+ // case #5:
149921
+ _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code] = {
149922
+ descriptions: ts.Diagnostics.Remove_override_modifier,
149923
+ fixId: fixRemoveOverrideId,
149924
+ fixAllDescriptions: ts.Diagnostics.Remove_all_unnecessary_override_modifiers,
149925
+ },
149926
+ _a[ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code] = {
149927
+ descriptions: ts.Diagnostics.Remove_override_modifier,
149928
+ fixId: fixRemoveOverrideId,
149929
+ fixAllDescriptions: ts.Diagnostics.Remove_all_unnecessary_override_modifiers,
149930
+ },
149829
149931
  _a);
149830
149932
  codefix.registerCodeFix({
149831
149933
  errorCodes: errorCodes,
149832
149934
  getCodeActions: function (context) {
149833
- var errorCode = context.errorCode, span = context.span, sourceFile = context.sourceFile;
149935
+ var errorCode = context.errorCode, span = context.span;
149834
149936
  var info = errorCodeFixIdMap[errorCode];
149835
149937
  if (!info)
149836
149938
  return ts.emptyArray;
149837
- var descriptions = info[0], fixId = info[1], fixAllDescriptions = info[2];
149838
- if (ts.isSourceFileJS(sourceFile))
149839
- return ts.emptyArray;
149939
+ var descriptions = info.descriptions, fixId = info.fixId, fixAllDescriptions = info.fixAllDescriptions;
149840
149940
  var changes = ts.textChanges.ChangeTracker.with(context, function (changes) { return dispatchChanges(changes, context, errorCode, span.start); });
149841
149941
  return [
149842
149942
  codefix.createCodeFixActionMaybeFixAll(fixName, changes, descriptions, fixId, fixAllDescriptions)
@@ -149845,9 +149945,9 @@ var ts;
149845
149945
  fixIds: [fixName, fixAddOverrideId, fixRemoveOverrideId],
149846
149946
  getAllCodeActions: function (context) {
149847
149947
  return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
149848
- var code = diag.code, start = diag.start, file = diag.file;
149948
+ var code = diag.code, start = diag.start;
149849
149949
  var info = errorCodeFixIdMap[code];
149850
- if (!info || info[1] !== context.fixId || ts.isSourceFileJS(file)) {
149950
+ if (!info || info.fixId !== context.fixId) {
149851
149951
  return;
149852
149952
  }
149853
149953
  dispatchChanges(changes, context, code, start);
@@ -149857,11 +149957,15 @@ var ts;
149857
149957
  function dispatchChanges(changeTracker, context, errorCode, pos) {
149858
149958
  switch (errorCode) {
149859
149959
  case ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code:
149960
+ case ts.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code:
149860
149961
  case ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code:
149861
149962
  case ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code:
149963
+ case ts.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0.code:
149862
149964
  return doAddOverrideModifierChange(changeTracker, context.sourceFile, pos);
149863
149965
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code:
149966
+ case ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0.code:
149864
149967
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code:
149968
+ case ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class.code:
149865
149969
  return doRemoveOverrideModifierChange(changeTracker, context.sourceFile, pos);
149866
149970
  default:
149867
149971
  ts.Debug.fail("Unexpected error code: " + errorCode);
@@ -149869,6 +149973,10 @@ var ts;
149869
149973
  }
149870
149974
  function doAddOverrideModifierChange(changeTracker, sourceFile, pos) {
149871
149975
  var classElement = findContainerClassElementLike(sourceFile, pos);
149976
+ if (ts.isSourceFileJS(sourceFile)) {
149977
+ changeTracker.addJSDocTags(sourceFile, classElement, [ts.factory.createJSDocOverrideTag(ts.factory.createIdentifier("override"))]);
149978
+ return;
149979
+ }
149872
149980
  var modifiers = classElement.modifiers || ts.emptyArray;
149873
149981
  var staticModifier = ts.find(modifiers, ts.isStaticModifier);
149874
149982
  var abstractModifier = ts.find(modifiers, ts.isAbstractModifier);
@@ -149882,6 +149990,10 @@ var ts;
149882
149990
  }
149883
149991
  function doRemoveOverrideModifierChange(changeTracker, sourceFile, pos) {
149884
149992
  var classElement = findContainerClassElementLike(sourceFile, pos);
149993
+ if (ts.isSourceFileJS(sourceFile)) {
149994
+ changeTracker.filterJSDocTags(sourceFile, classElement, ts.not(ts.isJSDocOverrideTag));
149995
+ return;
149996
+ }
149885
149997
  var overrideModifier = classElement.modifiers && ts.find(classElement.modifiers, function (modifier) { return modifier.kind === 158 /* OverrideKeyword */; });
149886
149998
  ts.Debug.assertIsDefined(overrideModifier);
149887
149999
  changeTracker.deleteModifier(sourceFile, overrideModifier);
@@ -152245,7 +152357,7 @@ var ts;
152245
152357
  if (typeNode) {
152246
152358
  // Note that the codefix will never fire with an existing `@type` tag, so there is no need to merge tags
152247
152359
  var typeTag = ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(typeNode), /*comment*/ undefined);
152248
- addJSDocTags(changes, sourceFile, ts.cast(parent.parent.parent, ts.isExpressionStatement), [typeTag]);
152360
+ changes.addJSDocTags(sourceFile, ts.cast(parent.parent.parent, ts.isExpressionStatement), [typeTag]);
152249
152361
  }
152250
152362
  importAdder.writeFixes(changes);
152251
152363
  return parent;
@@ -152356,7 +152468,7 @@ var ts;
152356
152468
  }
152357
152469
  }
152358
152470
  function annotateJSDocThis(changes, sourceFile, containingFunction, typeNode) {
152359
- addJSDocTags(changes, sourceFile, containingFunction, [
152471
+ changes.addJSDocTags(sourceFile, containingFunction, [
152360
152472
  ts.factory.createJSDocThisTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(typeNode)),
152361
152473
  ]);
152362
152474
  }
@@ -152385,7 +152497,7 @@ var ts;
152385
152497
  }
152386
152498
  var typeExpression = ts.factory.createJSDocTypeExpression(typeNode);
152387
152499
  var typeTag = ts.isGetAccessorDeclaration(declaration) ? ts.factory.createJSDocReturnTag(/*tagName*/ undefined, typeExpression, /*comment*/ undefined) : ts.factory.createJSDocTypeTag(/*tagName*/ undefined, typeExpression, /*comment*/ undefined);
152388
- addJSDocTags(changes, sourceFile, parent, [typeTag]);
152500
+ changes.addJSDocTags(sourceFile, parent, [typeTag]);
152389
152501
  }
152390
152502
  else if (!tryReplaceImportTypeNodeWithAutoImport(typeNode, declaration, sourceFile, changes, importAdder, ts.getEmitScriptTarget(program.getCompilerOptions()))) {
152391
152503
  changes.tryInsertTypeAnnotation(sourceFile, declaration, typeNode);
@@ -152441,45 +152553,7 @@ var ts;
152441
152553
  var name = _a.name, typeNode = _a.typeNode, isOptional = _a.isOptional;
152442
152554
  return ts.factory.createJSDocParameterTag(/*tagName*/ undefined, name, /*isBracketed*/ !!isOptional, ts.factory.createJSDocTypeExpression(typeNode), /* isNameFirst */ false, /*comment*/ undefined);
152443
152555
  });
152444
- addJSDocTags(changes, sourceFile, signature, paramTags);
152445
- }
152446
- }
152447
- function addJSDocTags(changes, sourceFile, parent, newTags) {
152448
- var comments = ts.flatMap(parent.jsDoc, function (j) { return typeof j.comment === "string" ? ts.factory.createJSDocText(j.comment) : j.comment; });
152449
- var oldTags = ts.flatMapToMutable(parent.jsDoc, function (j) { return j.tags; });
152450
- var unmergedNewTags = newTags.filter(function (newTag) { return !oldTags || !oldTags.some(function (tag, i) {
152451
- var merged = tryMergeJsdocTags(tag, newTag);
152452
- if (merged)
152453
- oldTags[i] = merged;
152454
- return !!merged;
152455
- }); });
152456
- var tag = ts.factory.createJSDocComment(ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n"))), ts.factory.createNodeArray(__spreadArray(__spreadArray([], (oldTags || ts.emptyArray), true), unmergedNewTags, true)));
152457
- var jsDocNode = parent.kind === 213 /* ArrowFunction */ ? getJsDocNodeForArrowFunction(parent) : parent;
152458
- jsDocNode.jsDoc = parent.jsDoc;
152459
- jsDocNode.jsDocCache = parent.jsDocCache;
152460
- changes.insertJsdocCommentBefore(sourceFile, jsDocNode, tag);
152461
- }
152462
- codefix.addJSDocTags = addJSDocTags;
152463
- function getJsDocNodeForArrowFunction(signature) {
152464
- if (signature.parent.kind === 166 /* PropertyDeclaration */) {
152465
- return signature.parent;
152466
- }
152467
- return signature.parent.parent;
152468
- }
152469
- function tryMergeJsdocTags(oldTag, newTag) {
152470
- if (oldTag.kind !== newTag.kind) {
152471
- return undefined;
152472
- }
152473
- switch (oldTag.kind) {
152474
- case 338 /* JSDocParameterTag */: {
152475
- var oldParam = oldTag;
152476
- var newParam = newTag;
152477
- return ts.isIdentifier(oldParam.name) && ts.isIdentifier(newParam.name) && oldParam.name.escapedText === newParam.name.escapedText
152478
- ? ts.factory.createJSDocParameterTag(/*tagName*/ undefined, newParam.name, /*isBracketed*/ false, newParam.typeExpression, newParam.isNameFirst, oldParam.comment)
152479
- : undefined;
152480
- }
152481
- case 339 /* JSDocReturnTag */:
152482
- return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
152556
+ changes.addJSDocTags(sourceFile, signature, paramTags);
152483
152557
  }
152484
152558
  }
152485
152559
  function getReferences(token, program, cancellationToken) {
@@ -166044,15 +166118,15 @@ var ts;
166044
166118
  if (!resolution.resolvedFileName)
166045
166119
  continue;
166046
166120
  var resolvedFileName = resolution.resolvedFileName, originalPath = resolution.originalPath;
166121
+ if (originalPath) {
166122
+ symlinkCache.setSymlinkedDirectoryFromSymlinkedFile(originalPath, resolvedFileName);
166123
+ }
166047
166124
  if (!program.getSourceFile(resolvedFileName) && (!originalPath || !program.getSourceFile(originalPath))) {
166048
166125
  rootNames = ts.append(rootNames, resolvedFileName);
166049
166126
  // Avoid creating a large project that would significantly slow down time to editor interactivity
166050
166127
  if (dependencySelection === 2 /* Auto */ && rootNames.length > this.maxDependencies) {
166051
166128
  return ts.emptyArray;
166052
166129
  }
166053
- if (originalPath) {
166054
- symlinkCache.setSymlinkedDirectoryFromSymlinkedFile(originalPath, resolvedFileName);
166055
- }
166056
166130
  }
166057
166131
  }
166058
166132
  }