typescript 4.7.0-dev.20220301 → 4.7.0-dev.20220302

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.
package/lib/tsc.js CHANGED
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.7";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20220301";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -45581,8 +45581,8 @@ var ts;
45581
45581
  var memberDeclaration = root.kind === 163 ? root.parent : root;
45582
45582
  return isPrivateWithinAmbient(memberDeclaration);
45583
45583
  }
45584
- function tryGetTypeFromEffectiveTypeNode(declaration) {
45585
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
45584
+ function tryGetTypeFromEffectiveTypeNode(node) {
45585
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
45586
45586
  if (typeNode) {
45587
45587
  return getTypeFromTypeNode(typeNode);
45588
45588
  }
@@ -59756,6 +59756,8 @@ var ts;
59756
59756
  }
59757
59757
  case 229:
59758
59758
  return getContextualType(parent, contextFlags);
59759
+ case 270:
59760
+ return tryGetTypeFromEffectiveTypeNode(parent);
59759
59761
  case 287:
59760
59762
  return getContextualTypeForJsxExpression(parent);
59761
59763
  case 284:
package/lib/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20220301";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -55255,8 +55255,8 @@ var ts;
55255
55255
  var memberDeclaration = root.kind === 163 /* Parameter */ ? root.parent : root;
55256
55256
  return isPrivateWithinAmbient(memberDeclaration);
55257
55257
  }
55258
- function tryGetTypeFromEffectiveTypeNode(declaration) {
55259
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
55258
+ function tryGetTypeFromEffectiveTypeNode(node) {
55259
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
55260
55260
  if (typeNode) {
55261
55261
  return getTypeFromTypeNode(typeNode);
55262
55262
  }
@@ -71580,6 +71580,8 @@ var ts;
71580
71580
  }
71581
71581
  case 229 /* NonNullExpression */:
71582
71582
  return getContextualType(parent, contextFlags);
71583
+ case 270 /* ExportAssignment */:
71584
+ return tryGetTypeFromEffectiveTypeNode(parent);
71583
71585
  case 287 /* JsxExpression */:
71584
71586
  return getContextualTypeForJsxExpression(parent);
71585
71587
  case 284 /* JsxAttribute */:
@@ -130111,7 +130113,7 @@ var ts;
130111
130113
  completionKind === 3 /* MemberLike */ &&
130112
130114
  isClassLikeMemberCompletion(symbol, location)) {
130113
130115
  var importAdder = void 0;
130114
- (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder);
130116
+ (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder, replacementSpan = _b.replacementSpan);
130115
130117
  if (importAdder === null || importAdder === void 0 ? void 0 : importAdder.hasFixes()) {
130116
130118
  hasAction = true;
130117
130119
  source = CompletionSource.ClassMemberSnippet;
@@ -130215,6 +130217,7 @@ var ts;
130215
130217
  return { insertText: name };
130216
130218
  }
130217
130219
  var isSnippet;
130220
+ var replacementSpan;
130218
130221
  var insertText = name;
130219
130222
  var checker = program.getTypeChecker();
130220
130223
  var sourceFile = location.getSourceFile();
@@ -130243,10 +130246,8 @@ var ts;
130243
130246
  var modifiers = 0 /* None */;
130244
130247
  // Whether the suggested member should be abstract.
130245
130248
  // e.g. in `abstract class C { abstract | }`, we should offer abstract method signatures at position `|`.
130246
- // Note: We are relying on checking if the context token is `abstract`,
130247
- // since other visibility modifiers (e.g. `protected`) should come *before* `abstract`.
130248
- // However, that is not true for the e.g. `override` modifier, so this check has its limitations.
130249
- var isAbstract = contextToken && isModifierLike(contextToken) === 126 /* AbstractKeyword */;
130249
+ var _a = getPresentModifiers(contextToken), presentModifiers = _a.modifiers, modifiersSpan = _a.span;
130250
+ var isAbstract = !!(presentModifiers & 128 /* Abstract */);
130250
130251
  var completionNodes = [];
130251
130252
  ts.codefix.addNewNodeForMemberSymbol(symbol, classLikeDeclaration, sourceFile, { program: program, host: host }, preferences, importAdder,
130252
130253
  // `addNewNodeForMemberSymbol` calls this callback function for each new member node
@@ -130265,22 +130266,18 @@ var ts;
130265
130266
  && checker.getMemberOverrideModifierStatus(classLikeDeclaration, node) === 1 /* NeedsOverride */) {
130266
130267
  requiredModifiers |= 16384 /* Override */;
130267
130268
  }
130268
- var presentModifiers = 0 /* None */;
130269
130269
  if (!completionNodes.length) {
130270
- // Omit already present modifiers from the first completion node/signature.
130271
- if (contextToken) {
130272
- presentModifiers = getPresentModifiers(contextToken);
130273
- }
130274
130270
  // Keep track of added missing required modifiers and modifiers already present.
130275
130271
  // This is needed when we have overloaded signatures,
130276
130272
  // so this callback will be called for multiple nodes/signatures,
130277
130273
  // and we need to make sure the modifiers are uniform for all nodes/signatures.
130278
130274
  modifiers = node.modifierFlagsCache | requiredModifiers | presentModifiers;
130279
130275
  }
130280
- node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
130276
+ node = ts.factory.updateModifiers(node, modifiers);
130281
130277
  completionNodes.push(node);
130282
130278
  }, body, 2 /* Property */, isAbstract);
130283
130279
  if (completionNodes.length) {
130280
+ replacementSpan = modifiersSpan;
130284
130281
  // If we have access to formatting settings, we print the nodes using the emitter,
130285
130282
  // and then format the printed text.
130286
130283
  if (formatContext) {
@@ -130303,10 +130300,14 @@ var ts;
130303
130300
  insertText = printer.printSnippetList(1 /* MultiLine */ | 131072 /* NoTrailingNewLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
130304
130301
  }
130305
130302
  }
130306
- return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder };
130303
+ return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder, replacementSpan: replacementSpan };
130307
130304
  }
130308
130305
  function getPresentModifiers(contextToken) {
130306
+ if (!contextToken) {
130307
+ return { modifiers: 0 /* None */ };
130308
+ }
130309
130309
  var modifiers = 0 /* None */;
130310
+ var span;
130310
130311
  var contextMod;
130311
130312
  /*
130312
130313
  Cases supported:
@@ -130329,11 +130330,13 @@ var ts;
130329
130330
  */
130330
130331
  if (contextMod = isModifierLike(contextToken)) {
130331
130332
  modifiers |= ts.modifierToFlag(contextMod);
130333
+ span = ts.createTextSpanFromNode(contextToken);
130332
130334
  }
130333
130335
  if (ts.isPropertyDeclaration(contextToken.parent)) {
130334
130336
  modifiers |= ts.modifiersToFlags(contextToken.parent.modifiers);
130337
+ span = ts.createTextSpanFromNode(contextToken.parent);
130335
130338
  }
130336
- return modifiers;
130339
+ return { modifiers: modifiers, span: span };
130337
130340
  }
130338
130341
  function isModifierLike(node) {
130339
130342
  if (ts.isModifier(node)) {
@@ -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.20220301";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -55449,8 +55449,8 @@ var ts;
55449
55449
  var memberDeclaration = root.kind === 163 /* Parameter */ ? root.parent : root;
55450
55450
  return isPrivateWithinAmbient(memberDeclaration);
55451
55451
  }
55452
- function tryGetTypeFromEffectiveTypeNode(declaration) {
55453
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
55452
+ function tryGetTypeFromEffectiveTypeNode(node) {
55453
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
55454
55454
  if (typeNode) {
55455
55455
  return getTypeFromTypeNode(typeNode);
55456
55456
  }
@@ -71774,6 +71774,8 @@ var ts;
71774
71774
  }
71775
71775
  case 229 /* NonNullExpression */:
71776
71776
  return getContextualType(parent, contextFlags);
71777
+ case 270 /* ExportAssignment */:
71778
+ return tryGetTypeFromEffectiveTypeNode(parent);
71777
71779
  case 287 /* JsxExpression */:
71778
71780
  return getContextualTypeForJsxExpression(parent);
71779
71781
  case 284 /* JsxAttribute */:
@@ -130722,7 +130724,7 @@ var ts;
130722
130724
  completionKind === 3 /* MemberLike */ &&
130723
130725
  isClassLikeMemberCompletion(symbol, location)) {
130724
130726
  var importAdder = void 0;
130725
- (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder);
130727
+ (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder, replacementSpan = _b.replacementSpan);
130726
130728
  if (importAdder === null || importAdder === void 0 ? void 0 : importAdder.hasFixes()) {
130727
130729
  hasAction = true;
130728
130730
  source = CompletionSource.ClassMemberSnippet;
@@ -130826,6 +130828,7 @@ var ts;
130826
130828
  return { insertText: name };
130827
130829
  }
130828
130830
  var isSnippet;
130831
+ var replacementSpan;
130829
130832
  var insertText = name;
130830
130833
  var checker = program.getTypeChecker();
130831
130834
  var sourceFile = location.getSourceFile();
@@ -130854,10 +130857,8 @@ var ts;
130854
130857
  var modifiers = 0 /* None */;
130855
130858
  // Whether the suggested member should be abstract.
130856
130859
  // e.g. in `abstract class C { abstract | }`, we should offer abstract method signatures at position `|`.
130857
- // Note: We are relying on checking if the context token is `abstract`,
130858
- // since other visibility modifiers (e.g. `protected`) should come *before* `abstract`.
130859
- // However, that is not true for the e.g. `override` modifier, so this check has its limitations.
130860
- var isAbstract = contextToken && isModifierLike(contextToken) === 126 /* AbstractKeyword */;
130860
+ var _a = getPresentModifiers(contextToken), presentModifiers = _a.modifiers, modifiersSpan = _a.span;
130861
+ var isAbstract = !!(presentModifiers & 128 /* Abstract */);
130861
130862
  var completionNodes = [];
130862
130863
  ts.codefix.addNewNodeForMemberSymbol(symbol, classLikeDeclaration, sourceFile, { program: program, host: host }, preferences, importAdder,
130863
130864
  // `addNewNodeForMemberSymbol` calls this callback function for each new member node
@@ -130876,22 +130877,18 @@ var ts;
130876
130877
  && checker.getMemberOverrideModifierStatus(classLikeDeclaration, node) === 1 /* NeedsOverride */) {
130877
130878
  requiredModifiers |= 16384 /* Override */;
130878
130879
  }
130879
- var presentModifiers = 0 /* None */;
130880
130880
  if (!completionNodes.length) {
130881
- // Omit already present modifiers from the first completion node/signature.
130882
- if (contextToken) {
130883
- presentModifiers = getPresentModifiers(contextToken);
130884
- }
130885
130881
  // Keep track of added missing required modifiers and modifiers already present.
130886
130882
  // This is needed when we have overloaded signatures,
130887
130883
  // so this callback will be called for multiple nodes/signatures,
130888
130884
  // and we need to make sure the modifiers are uniform for all nodes/signatures.
130889
130885
  modifiers = node.modifierFlagsCache | requiredModifiers | presentModifiers;
130890
130886
  }
130891
- node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
130887
+ node = ts.factory.updateModifiers(node, modifiers);
130892
130888
  completionNodes.push(node);
130893
130889
  }, body, 2 /* Property */, isAbstract);
130894
130890
  if (completionNodes.length) {
130891
+ replacementSpan = modifiersSpan;
130895
130892
  // If we have access to formatting settings, we print the nodes using the emitter,
130896
130893
  // and then format the printed text.
130897
130894
  if (formatContext) {
@@ -130914,10 +130911,14 @@ var ts;
130914
130911
  insertText = printer.printSnippetList(1 /* MultiLine */ | 131072 /* NoTrailingNewLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
130915
130912
  }
130916
130913
  }
130917
- return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder };
130914
+ return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder, replacementSpan: replacementSpan };
130918
130915
  }
130919
130916
  function getPresentModifiers(contextToken) {
130917
+ if (!contextToken) {
130918
+ return { modifiers: 0 /* None */ };
130919
+ }
130920
130920
  var modifiers = 0 /* None */;
130921
+ var span;
130921
130922
  var contextMod;
130922
130923
  /*
130923
130924
  Cases supported:
@@ -130940,11 +130941,13 @@ var ts;
130940
130941
  */
130941
130942
  if (contextMod = isModifierLike(contextToken)) {
130942
130943
  modifiers |= ts.modifierToFlag(contextMod);
130944
+ span = ts.createTextSpanFromNode(contextToken);
130943
130945
  }
130944
130946
  if (ts.isPropertyDeclaration(contextToken.parent)) {
130945
130947
  modifiers |= ts.modifiersToFlags(contextToken.parent.modifiers);
130948
+ span = ts.createTextSpanFromNode(contextToken.parent);
130946
130949
  }
130947
- return modifiers;
130950
+ return { modifiers: modifiers, span: span };
130948
130951
  }
130949
130952
  function isModifierLike(node) {
130950
130953
  if (ts.isModifier(node)) {
package/lib/typescript.js CHANGED
@@ -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.20220301";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -55449,8 +55449,8 @@ var ts;
55449
55449
  var memberDeclaration = root.kind === 163 /* Parameter */ ? root.parent : root;
55450
55450
  return isPrivateWithinAmbient(memberDeclaration);
55451
55451
  }
55452
- function tryGetTypeFromEffectiveTypeNode(declaration) {
55453
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
55452
+ function tryGetTypeFromEffectiveTypeNode(node) {
55453
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
55454
55454
  if (typeNode) {
55455
55455
  return getTypeFromTypeNode(typeNode);
55456
55456
  }
@@ -71774,6 +71774,8 @@ var ts;
71774
71774
  }
71775
71775
  case 229 /* NonNullExpression */:
71776
71776
  return getContextualType(parent, contextFlags);
71777
+ case 270 /* ExportAssignment */:
71778
+ return tryGetTypeFromEffectiveTypeNode(parent);
71777
71779
  case 287 /* JsxExpression */:
71778
71780
  return getContextualTypeForJsxExpression(parent);
71779
71781
  case 284 /* JsxAttribute */:
@@ -130722,7 +130724,7 @@ var ts;
130722
130724
  completionKind === 3 /* MemberLike */ &&
130723
130725
  isClassLikeMemberCompletion(symbol, location)) {
130724
130726
  var importAdder = void 0;
130725
- (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder);
130727
+ (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder, replacementSpan = _b.replacementSpan);
130726
130728
  if (importAdder === null || importAdder === void 0 ? void 0 : importAdder.hasFixes()) {
130727
130729
  hasAction = true;
130728
130730
  source = CompletionSource.ClassMemberSnippet;
@@ -130826,6 +130828,7 @@ var ts;
130826
130828
  return { insertText: name };
130827
130829
  }
130828
130830
  var isSnippet;
130831
+ var replacementSpan;
130829
130832
  var insertText = name;
130830
130833
  var checker = program.getTypeChecker();
130831
130834
  var sourceFile = location.getSourceFile();
@@ -130854,10 +130857,8 @@ var ts;
130854
130857
  var modifiers = 0 /* None */;
130855
130858
  // Whether the suggested member should be abstract.
130856
130859
  // e.g. in `abstract class C { abstract | }`, we should offer abstract method signatures at position `|`.
130857
- // Note: We are relying on checking if the context token is `abstract`,
130858
- // since other visibility modifiers (e.g. `protected`) should come *before* `abstract`.
130859
- // However, that is not true for the e.g. `override` modifier, so this check has its limitations.
130860
- var isAbstract = contextToken && isModifierLike(contextToken) === 126 /* AbstractKeyword */;
130860
+ var _a = getPresentModifiers(contextToken), presentModifiers = _a.modifiers, modifiersSpan = _a.span;
130861
+ var isAbstract = !!(presentModifiers & 128 /* Abstract */);
130861
130862
  var completionNodes = [];
130862
130863
  ts.codefix.addNewNodeForMemberSymbol(symbol, classLikeDeclaration, sourceFile, { program: program, host: host }, preferences, importAdder,
130863
130864
  // `addNewNodeForMemberSymbol` calls this callback function for each new member node
@@ -130876,22 +130877,18 @@ var ts;
130876
130877
  && checker.getMemberOverrideModifierStatus(classLikeDeclaration, node) === 1 /* NeedsOverride */) {
130877
130878
  requiredModifiers |= 16384 /* Override */;
130878
130879
  }
130879
- var presentModifiers = 0 /* None */;
130880
130880
  if (!completionNodes.length) {
130881
- // Omit already present modifiers from the first completion node/signature.
130882
- if (contextToken) {
130883
- presentModifiers = getPresentModifiers(contextToken);
130884
- }
130885
130881
  // Keep track of added missing required modifiers and modifiers already present.
130886
130882
  // This is needed when we have overloaded signatures,
130887
130883
  // so this callback will be called for multiple nodes/signatures,
130888
130884
  // and we need to make sure the modifiers are uniform for all nodes/signatures.
130889
130885
  modifiers = node.modifierFlagsCache | requiredModifiers | presentModifiers;
130890
130886
  }
130891
- node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
130887
+ node = ts.factory.updateModifiers(node, modifiers);
130892
130888
  completionNodes.push(node);
130893
130889
  }, body, 2 /* Property */, isAbstract);
130894
130890
  if (completionNodes.length) {
130891
+ replacementSpan = modifiersSpan;
130895
130892
  // If we have access to formatting settings, we print the nodes using the emitter,
130896
130893
  // and then format the printed text.
130897
130894
  if (formatContext) {
@@ -130914,10 +130911,14 @@ var ts;
130914
130911
  insertText = printer.printSnippetList(1 /* MultiLine */ | 131072 /* NoTrailingNewLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
130915
130912
  }
130916
130913
  }
130917
- return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder };
130914
+ return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder, replacementSpan: replacementSpan };
130918
130915
  }
130919
130916
  function getPresentModifiers(contextToken) {
130917
+ if (!contextToken) {
130918
+ return { modifiers: 0 /* None */ };
130919
+ }
130920
130920
  var modifiers = 0 /* None */;
130921
+ var span;
130921
130922
  var contextMod;
130922
130923
  /*
130923
130924
  Cases supported:
@@ -130940,11 +130941,13 @@ var ts;
130940
130941
  */
130941
130942
  if (contextMod = isModifierLike(contextToken)) {
130942
130943
  modifiers |= ts.modifierToFlag(contextMod);
130944
+ span = ts.createTextSpanFromNode(contextToken);
130943
130945
  }
130944
130946
  if (ts.isPropertyDeclaration(contextToken.parent)) {
130945
130947
  modifiers |= ts.modifiersToFlags(contextToken.parent.modifiers);
130948
+ span = ts.createTextSpanFromNode(contextToken.parent);
130946
130949
  }
130947
- return modifiers;
130950
+ return { modifiers: modifiers, span: span };
130948
130951
  }
130949
130952
  function isModifierLike(node) {
130950
130953
  if (ts.isModifier(node)) {
@@ -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.20220301";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -55449,8 +55449,8 @@ var ts;
55449
55449
  var memberDeclaration = root.kind === 163 /* Parameter */ ? root.parent : root;
55450
55450
  return isPrivateWithinAmbient(memberDeclaration);
55451
55451
  }
55452
- function tryGetTypeFromEffectiveTypeNode(declaration) {
55453
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
55452
+ function tryGetTypeFromEffectiveTypeNode(node) {
55453
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
55454
55454
  if (typeNode) {
55455
55455
  return getTypeFromTypeNode(typeNode);
55456
55456
  }
@@ -71774,6 +71774,8 @@ var ts;
71774
71774
  }
71775
71775
  case 229 /* NonNullExpression */:
71776
71776
  return getContextualType(parent, contextFlags);
71777
+ case 270 /* ExportAssignment */:
71778
+ return tryGetTypeFromEffectiveTypeNode(parent);
71777
71779
  case 287 /* JsxExpression */:
71778
71780
  return getContextualTypeForJsxExpression(parent);
71779
71781
  case 284 /* JsxAttribute */:
@@ -130722,7 +130724,7 @@ var ts;
130722
130724
  completionKind === 3 /* MemberLike */ &&
130723
130725
  isClassLikeMemberCompletion(symbol, location)) {
130724
130726
  var importAdder = void 0;
130725
- (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder);
130727
+ (_b = getEntryForMemberCompletion(host, program, options, preferences, name, symbol, location, contextToken, formatContext), insertText = _b.insertText, isSnippet = _b.isSnippet, importAdder = _b.importAdder, replacementSpan = _b.replacementSpan);
130726
130728
  if (importAdder === null || importAdder === void 0 ? void 0 : importAdder.hasFixes()) {
130727
130729
  hasAction = true;
130728
130730
  source = CompletionSource.ClassMemberSnippet;
@@ -130826,6 +130828,7 @@ var ts;
130826
130828
  return { insertText: name };
130827
130829
  }
130828
130830
  var isSnippet;
130831
+ var replacementSpan;
130829
130832
  var insertText = name;
130830
130833
  var checker = program.getTypeChecker();
130831
130834
  var sourceFile = location.getSourceFile();
@@ -130854,10 +130857,8 @@ var ts;
130854
130857
  var modifiers = 0 /* None */;
130855
130858
  // Whether the suggested member should be abstract.
130856
130859
  // e.g. in `abstract class C { abstract | }`, we should offer abstract method signatures at position `|`.
130857
- // Note: We are relying on checking if the context token is `abstract`,
130858
- // since other visibility modifiers (e.g. `protected`) should come *before* `abstract`.
130859
- // However, that is not true for the e.g. `override` modifier, so this check has its limitations.
130860
- var isAbstract = contextToken && isModifierLike(contextToken) === 126 /* AbstractKeyword */;
130860
+ var _a = getPresentModifiers(contextToken), presentModifiers = _a.modifiers, modifiersSpan = _a.span;
130861
+ var isAbstract = !!(presentModifiers & 128 /* Abstract */);
130861
130862
  var completionNodes = [];
130862
130863
  ts.codefix.addNewNodeForMemberSymbol(symbol, classLikeDeclaration, sourceFile, { program: program, host: host }, preferences, importAdder,
130863
130864
  // `addNewNodeForMemberSymbol` calls this callback function for each new member node
@@ -130876,22 +130877,18 @@ var ts;
130876
130877
  && checker.getMemberOverrideModifierStatus(classLikeDeclaration, node) === 1 /* NeedsOverride */) {
130877
130878
  requiredModifiers |= 16384 /* Override */;
130878
130879
  }
130879
- var presentModifiers = 0 /* None */;
130880
130880
  if (!completionNodes.length) {
130881
- // Omit already present modifiers from the first completion node/signature.
130882
- if (contextToken) {
130883
- presentModifiers = getPresentModifiers(contextToken);
130884
- }
130885
130881
  // Keep track of added missing required modifiers and modifiers already present.
130886
130882
  // This is needed when we have overloaded signatures,
130887
130883
  // so this callback will be called for multiple nodes/signatures,
130888
130884
  // and we need to make sure the modifiers are uniform for all nodes/signatures.
130889
130885
  modifiers = node.modifierFlagsCache | requiredModifiers | presentModifiers;
130890
130886
  }
130891
- node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
130887
+ node = ts.factory.updateModifiers(node, modifiers);
130892
130888
  completionNodes.push(node);
130893
130889
  }, body, 2 /* Property */, isAbstract);
130894
130890
  if (completionNodes.length) {
130891
+ replacementSpan = modifiersSpan;
130895
130892
  // If we have access to formatting settings, we print the nodes using the emitter,
130896
130893
  // and then format the printed text.
130897
130894
  if (formatContext) {
@@ -130914,10 +130911,14 @@ var ts;
130914
130911
  insertText = printer.printSnippetList(1 /* MultiLine */ | 131072 /* NoTrailingNewLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
130915
130912
  }
130916
130913
  }
130917
- return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder };
130914
+ return { insertText: insertText, isSnippet: isSnippet, importAdder: importAdder, replacementSpan: replacementSpan };
130918
130915
  }
130919
130916
  function getPresentModifiers(contextToken) {
130917
+ if (!contextToken) {
130918
+ return { modifiers: 0 /* None */ };
130919
+ }
130920
130920
  var modifiers = 0 /* None */;
130921
+ var span;
130921
130922
  var contextMod;
130922
130923
  /*
130923
130924
  Cases supported:
@@ -130940,11 +130941,13 @@ var ts;
130940
130941
  */
130941
130942
  if (contextMod = isModifierLike(contextToken)) {
130942
130943
  modifiers |= ts.modifierToFlag(contextMod);
130944
+ span = ts.createTextSpanFromNode(contextToken);
130943
130945
  }
130944
130946
  if (ts.isPropertyDeclaration(contextToken.parent)) {
130945
130947
  modifiers |= ts.modifiersToFlags(contextToken.parent.modifiers);
130948
+ span = ts.createTextSpanFromNode(contextToken.parent);
130946
130949
  }
130947
- return modifiers;
130950
+ return { modifiers: modifiers, span: span };
130948
130951
  }
130949
130952
  function isModifierLike(node) {
130950
130953
  if (ts.isModifier(node)) {
@@ -89,7 +89,7 @@ var ts;
89
89
  // The following is baselined as a literal template type without intervention
90
90
  /** The version of the TypeScript compiler release */
91
91
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
92
- ts.version = ts.versionMajorMinor + ".0-dev.20220301";
92
+ ts.version = ts.versionMajorMinor + ".0-dev.20220302";
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -55244,8 +55244,8 @@ var ts;
55244
55244
  var memberDeclaration = root.kind === 163 /* Parameter */ ? root.parent : root;
55245
55245
  return isPrivateWithinAmbient(memberDeclaration);
55246
55246
  }
55247
- function tryGetTypeFromEffectiveTypeNode(declaration) {
55248
- var typeNode = ts.getEffectiveTypeAnnotationNode(declaration);
55247
+ function tryGetTypeFromEffectiveTypeNode(node) {
55248
+ var typeNode = ts.getEffectiveTypeAnnotationNode(node);
55249
55249
  if (typeNode) {
55250
55250
  return getTypeFromTypeNode(typeNode);
55251
55251
  }
@@ -71569,6 +71569,8 @@ var ts;
71569
71569
  }
71570
71570
  case 229 /* NonNullExpression */:
71571
71571
  return getContextualType(parent, contextFlags);
71572
+ case 270 /* ExportAssignment */:
71573
+ return tryGetTypeFromEffectiveTypeNode(parent);
71572
71574
  case 287 /* JsxExpression */:
71573
71575
  return getContextualTypeForJsxExpression(parent);
71574
71576
  case 284 /* JsxAttribute */:
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "4.7.0-dev.20220301",
5
+ "version": "4.7.0-dev.20220302",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [