typescript 4.3.0-dev.20210508 → 4.3.2

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/tsserver.js CHANGED
@@ -96,7 +96,7 @@ var ts;
96
96
  // The following is baselined as a literal template type without intervention
97
97
  /** The version of the TypeScript compiler release */
98
98
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
99
- ts.version = ts.versionMajorMinor + ".0-dev.20210508";
99
+ ts.version = "4.3.2";
100
100
  /* @internal */
101
101
  var Comparison;
102
102
  (function (Comparison) {
@@ -7689,7 +7689,7 @@ var ts;
7689
7689
  Identifier_expected: diag(1003, ts.DiagnosticCategory.Error, "Identifier_expected_1003", "Identifier expected."),
7690
7690
  _0_expected: diag(1005, ts.DiagnosticCategory.Error, "_0_expected_1005", "'{0}' expected."),
7691
7691
  A_file_cannot_have_a_reference_to_itself: diag(1006, ts.DiagnosticCategory.Error, "A_file_cannot_have_a_reference_to_itself_1006", "A file cannot have a reference to itself."),
7692
- The_parser_expected_to_find_a_1_to_match_the_0_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_1_to_match_the_0_token_here_1007", "The parser expected to find a '{1}' to match the '{0}' token here."),
7692
+ The_parser_expected_to_find_a_to_match_the_token_here: diag(1007, ts.DiagnosticCategory.Error, "The_parser_expected_to_find_a_to_match_the_token_here_1007", "The parser expected to find a '}' to match the '{' token here."),
7693
7693
  Trailing_comma_not_allowed: diag(1009, ts.DiagnosticCategory.Error, "Trailing_comma_not_allowed_1009", "Trailing comma not allowed."),
7694
7694
  Asterisk_Slash_expected: diag(1010, ts.DiagnosticCategory.Error, "Asterisk_Slash_expected_1010", "'*/' expected."),
7695
7695
  An_element_access_expression_should_take_an_argument: diag(1011, ts.DiagnosticCategory.Error, "An_element_access_expression_should_take_an_argument_1011", "An element access expression should take an argument."),
@@ -8612,7 +8612,7 @@ var ts;
8612
8612
  This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class: diag(4112, ts.DiagnosticCategory.Error, "This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another__4112", "This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class."),
8613
8613
  This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0: diag(4113, ts.DiagnosticCategory.Error, "This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_4113", "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'."),
8614
8614
  This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0: diag(4114, ts.DiagnosticCategory.Error, "This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0_4114", "This member must have an 'override' modifier because it overrides a member in the base class '{0}'."),
8615
- This_parameter_property_must_be_rewritten_as_a_property_declaration_with_an_override_modifier_because_it_overrides_a_member_in_base_class_0: diag(4115, ts.DiagnosticCategory.Error, "This_parameter_property_must_be_rewritten_as_a_property_declaration_with_an_override_modifier_becaus_4115", "This parameter property must be rewritten as a property declaration with an 'override' modifier because it overrides a member in base class '{0}'."),
8615
+ This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0: diag(4115, ts.DiagnosticCategory.Error, "This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0_4115", "This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'."),
8616
8616
  This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0: diag(4116, ts.DiagnosticCategory.Error, "This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared__4116", "This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'."),
8617
8617
  The_current_host_does_not_support_the_0_option: diag(5001, ts.DiagnosticCategory.Error, "The_current_host_does_not_support_the_0_option_5001", "The current host does not support the '{0}' option."),
8618
8618
  Cannot_find_the_common_subdirectory_path_for_the_input_files: diag(5009, ts.DiagnosticCategory.Error, "Cannot_find_the_common_subdirectory_path_for_the_input_files_5009", "Cannot find the common subdirectory path for the input files."),
@@ -30030,23 +30030,20 @@ var ts;
30030
30030
  return inContext(32768 /* AwaitContext */);
30031
30031
  }
30032
30032
  function parseErrorAtCurrentToken(message, arg0) {
30033
- return parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
30033
+ parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
30034
30034
  }
30035
30035
  function parseErrorAtPosition(start, length, message, arg0) {
30036
30036
  // Don't report another error if it would just be at the same position as the last error.
30037
30037
  var lastError = ts.lastOrUndefined(parseDiagnostics);
30038
- var result;
30039
30038
  if (!lastError || start !== lastError.start) {
30040
- result = ts.createDetachedDiagnostic(fileName, start, length, message, arg0);
30041
- parseDiagnostics.push(result);
30039
+ parseDiagnostics.push(ts.createDetachedDiagnostic(fileName, start, length, message, arg0));
30042
30040
  }
30043
30041
  // Mark that we've encountered an error. We'll set an appropriate bit on the next
30044
30042
  // node we finish so that it can't be reused incrementally.
30045
30043
  parseErrorBeforeNextFinishedNode = true;
30046
- return result;
30047
30044
  }
30048
30045
  function parseErrorAt(start, end, message, arg0) {
30049
- return parseErrorAtPosition(start, end - start, message, arg0);
30046
+ parseErrorAtPosition(start, end - start, message, arg0);
30050
30047
  }
30051
30048
  function parseErrorAtRange(range, message, arg0) {
30052
30049
  parseErrorAt(range.pos, range.end, message, arg0);
@@ -30203,16 +30200,6 @@ var ts;
30203
30200
  parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(kind));
30204
30201
  return false;
30205
30202
  }
30206
- function parseExpectedMatchingBrackets(openKind, closeKind, openPosition) {
30207
- if (token() === closeKind) {
30208
- nextToken();
30209
- return;
30210
- }
30211
- var lastError = parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(closeKind));
30212
- if (lastError) {
30213
- ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openPosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_1_to_match_the_0_token_here, ts.tokenToString(openKind), ts.tokenToString(closeKind)));
30214
- }
30215
- }
30216
30203
  function parseOptional(t) {
30217
30204
  if (token() === t) {
30218
30205
  nextToken();
@@ -33580,11 +33567,10 @@ var ts;
33580
33567
  }
33581
33568
  function parseArrayLiteralExpression() {
33582
33569
  var pos = getNodePos();
33583
- var openBracketPosition = scanner.getTokenPos();
33584
33570
  parseExpected(22 /* OpenBracketToken */);
33585
33571
  var multiLine = scanner.hasPrecedingLineBreak();
33586
33572
  var elements = parseDelimitedList(15 /* ArrayLiteralMembers */, parseArgumentOrArrayLiteralElement);
33587
- parseExpectedMatchingBrackets(22 /* OpenBracketToken */, 23 /* CloseBracketToken */, openBracketPosition);
33573
+ parseExpected(23 /* CloseBracketToken */);
33588
33574
  return finishNode(factory.createArrayLiteralExpression(elements, multiLine), pos);
33589
33575
  }
33590
33576
  function parseObjectLiteralElement() {
@@ -33644,7 +33630,12 @@ var ts;
33644
33630
  parseExpected(18 /* OpenBraceToken */);
33645
33631
  var multiLine = scanner.hasPrecedingLineBreak();
33646
33632
  var properties = parseDelimitedList(12 /* ObjectLiteralMembers */, parseObjectLiteralElement, /*considerSemicolonAsDelimiter*/ true);
33647
- parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBracePosition);
33633
+ if (!parseExpected(19 /* CloseBraceToken */)) {
33634
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
33635
+ if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33636
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33637
+ }
33638
+ }
33648
33639
  return finishNode(factory.createObjectLiteralExpression(properties, multiLine), pos);
33649
33640
  }
33650
33641
  function parseFunctionExpression() {
@@ -33718,7 +33709,12 @@ var ts;
33718
33709
  if (parseExpected(18 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) {
33719
33710
  var multiLine = scanner.hasPrecedingLineBreak();
33720
33711
  var statements = parseList(1 /* BlockStatements */, parseStatement);
33721
- parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBracePosition);
33712
+ if (!parseExpected(19 /* CloseBraceToken */)) {
33713
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
33714
+ if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33715
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33716
+ }
33717
+ }
33722
33718
  var result = withJSDoc(finishNode(factory.createBlock(statements, multiLine), pos), hasJSDoc);
33723
33719
  if (token() === 62 /* EqualsToken */) {
33724
33720
  parseErrorAtCurrentToken(ts.Diagnostics.Declaration_or_statement_expected_This_follows_a_block_of_statements_so_if_you_intended_to_write_a_destructuring_assignment_you_might_need_to_wrap_the_the_whole_assignment_in_parentheses);
@@ -33763,10 +33759,9 @@ var ts;
33763
33759
  var pos = getNodePos();
33764
33760
  var hasJSDoc = hasPrecedingJSDocComment();
33765
33761
  parseExpected(98 /* IfKeyword */);
33766
- var openParenPosition = scanner.getTokenPos();
33767
33762
  parseExpected(20 /* OpenParenToken */);
33768
33763
  var expression = allowInAnd(parseExpression);
33769
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33764
+ parseExpected(21 /* CloseParenToken */);
33770
33765
  var thenStatement = parseStatement();
33771
33766
  var elseStatement = parseOptional(90 /* ElseKeyword */) ? parseStatement() : undefined;
33772
33767
  return withJSDoc(finishNode(factory.createIfStatement(expression, thenStatement, elseStatement), pos), hasJSDoc);
@@ -33777,10 +33772,9 @@ var ts;
33777
33772
  parseExpected(89 /* DoKeyword */);
33778
33773
  var statement = parseStatement();
33779
33774
  parseExpected(114 /* WhileKeyword */);
33780
- var openParenPosition = scanner.getTokenPos();
33781
33775
  parseExpected(20 /* OpenParenToken */);
33782
33776
  var expression = allowInAnd(parseExpression);
33783
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33777
+ parseExpected(21 /* CloseParenToken */);
33784
33778
  // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
33785
33779
  // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
33786
33780
  // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby
@@ -33792,10 +33786,9 @@ var ts;
33792
33786
  var pos = getNodePos();
33793
33787
  var hasJSDoc = hasPrecedingJSDocComment();
33794
33788
  parseExpected(114 /* WhileKeyword */);
33795
- var openParenPosition = scanner.getTokenPos();
33796
33789
  parseExpected(20 /* OpenParenToken */);
33797
33790
  var expression = allowInAnd(parseExpression);
33798
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33791
+ parseExpected(21 /* CloseParenToken */);
33799
33792
  var statement = parseStatement();
33800
33793
  return withJSDoc(finishNode(factory.createWhileStatement(expression, statement), pos), hasJSDoc);
33801
33794
  }
@@ -33862,10 +33855,9 @@ var ts;
33862
33855
  var pos = getNodePos();
33863
33856
  var hasJSDoc = hasPrecedingJSDocComment();
33864
33857
  parseExpected(115 /* WithKeyword */);
33865
- var openParenPosition = scanner.getTokenPos();
33866
33858
  parseExpected(20 /* OpenParenToken */);
33867
33859
  var expression = allowInAnd(parseExpression);
33868
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33860
+ parseExpected(21 /* CloseParenToken */);
33869
33861
  var statement = doInsideOfContext(16777216 /* InWithStatement */, parseStatement);
33870
33862
  return withJSDoc(finishNode(factory.createWithStatement(expression, statement), pos), hasJSDoc);
33871
33863
  }
@@ -35856,7 +35848,8 @@ var ts;
35856
35848
  hasChildren = true;
35857
35849
  if (child.kind === 333 /* JSDocTypeTag */) {
35858
35850
  if (childTypeTag) {
35859
- var lastError = parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
35851
+ parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
35852
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
35860
35853
  if (lastError) {
35861
35854
  ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, 0, 0, ts.Diagnostics.The_tag_was_first_specified_here));
35862
35855
  }
@@ -56017,6 +56010,10 @@ var ts;
56017
56010
  var indexSymbol = symbol && getIndexSymbol(symbol);
56018
56011
  return indexSymbol && getIndexDeclarationOfIndexSymbol(indexSymbol, kind);
56019
56012
  }
56013
+ function getIndexDeclarationOfSymbolTable(symbolTable, kind) {
56014
+ var indexSymbol = symbolTable && getIndexSymbolFromSymbolTable(symbolTable);
56015
+ return indexSymbol && getIndexDeclarationOfIndexSymbol(indexSymbol, kind);
56016
+ }
56020
56017
  function getIndexDeclarationOfIndexSymbol(indexSymbol, kind) {
56021
56018
  var syntaxKind = kind === 1 /* Number */ ? 144 /* NumberKeyword */ : 147 /* StringKeyword */;
56022
56019
  if (indexSymbol === null || indexSymbol === void 0 ? void 0 : indexSymbol.declarations) {
@@ -63225,14 +63222,17 @@ var ts;
63225
63222
  return type.flags & 32768 /* Undefined */ ? type : getUnionType([type, undefinedType]);
63226
63223
  }
63227
63224
  function getGlobalNonNullableTypeInstantiation(type) {
63225
+ // First reduce away any constituents that are assignable to 'undefined' or 'null'. This not only eliminates
63226
+ // 'undefined' and 'null', but also higher-order types such as a type parameter 'U extends undefined | null'
63227
+ // that isn't eliminated by a NonNullable<T> instantiation.
63228
+ var reducedType = getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
63228
63229
  if (!deferredGlobalNonNullableTypeAlias) {
63229
63230
  deferredGlobalNonNullableTypeAlias = getGlobalSymbol("NonNullable", 524288 /* TypeAlias */, /*diagnostic*/ undefined) || unknownSymbol;
63230
63231
  }
63231
- // Use NonNullable global type alias if available to improve quick info/declaration emit
63232
- if (deferredGlobalNonNullableTypeAlias !== unknownSymbol) {
63233
- return getTypeAliasInstantiation(deferredGlobalNonNullableTypeAlias, [type]);
63234
- }
63235
- return getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */); // Type alias unavailable, fall back to non-higher-order behavior
63232
+ // If the NonNullable<T> type is available, return an instantiation. Otherwise just return the reduced type.
63233
+ return deferredGlobalNonNullableTypeAlias !== unknownSymbol ?
63234
+ getTypeAliasInstantiation(deferredGlobalNonNullableTypeAlias, [reducedType]) :
63235
+ reducedType;
63236
63236
  }
63237
63237
  function getNonNullableType(type) {
63238
63238
  return strictNullChecks ? getGlobalNonNullableTypeInstantiation(type) : type;
@@ -66820,7 +66820,7 @@ var ts;
66820
66820
  !isGenericIndexType(getTypeOfExpression(parent.argumentExpression));
66821
66821
  }
66822
66822
  function isGenericTypeWithUnionConstraint(type) {
66823
- return !!(type.flags & 465829888 /* Instantiable */ && getBaseConstraintOrType(type).flags & 1048576 /* Union */);
66823
+ return !!(type.flags & 465829888 /* Instantiable */ && getBaseConstraintOrType(type).flags & (98304 /* Nullable */ | 1048576 /* Union */));
66824
66824
  }
66825
66825
  function containsGenericType(type) {
66826
66826
  return !!(type.flags & 465829888 /* Instantiable */ || type.flags & 3145728 /* UnionOrIntersection */ && ts.some(type.types, containsGenericType));
@@ -78294,21 +78294,24 @@ var ts;
78294
78294
  checkBlock(node.finallyBlock);
78295
78295
  }
78296
78296
  }
78297
- function checkIndexConstraints(type) {
78298
- var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1 /* Number */);
78299
- var declaredStringIndexer = getIndexDeclarationOfSymbol(type.symbol, 0 /* String */);
78297
+ function checkIndexConstraints(type, isStatic) {
78298
+ var _a, _b, _c, _d;
78299
+ var declaredNumberIndexer = getIndexDeclarationOfSymbolTable(isStatic ? (_a = type.symbol) === null || _a === void 0 ? void 0 : _a.exports : (_b = type.symbol) === null || _b === void 0 ? void 0 : _b.members, 1 /* Number */);
78300
+ var declaredStringIndexer = getIndexDeclarationOfSymbolTable(isStatic ? (_c = type.symbol) === null || _c === void 0 ? void 0 : _c.exports : (_d = type.symbol) === null || _d === void 0 ? void 0 : _d.members, 0 /* String */);
78300
78301
  var stringIndexType = getIndexTypeOfType(type, 0 /* String */);
78301
78302
  var numberIndexType = getIndexTypeOfType(type, 1 /* Number */);
78302
78303
  if (stringIndexType || numberIndexType) {
78303
78304
  ts.forEach(getPropertiesOfObjectType(type), function (prop) {
78305
+ if (isStatic && prop.flags & 4194304 /* Prototype */)
78306
+ return;
78304
78307
  var propType = getTypeOfSymbol(prop);
78305
78308
  checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0 /* String */);
78306
78309
  checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1 /* Number */);
78307
78310
  });
78308
78311
  var classDeclaration = type.symbol.valueDeclaration;
78309
78312
  if (ts.getObjectFlags(type) & 1 /* Class */ && classDeclaration && ts.isClassLike(classDeclaration)) {
78310
- for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) {
78311
- var member = _a[_i];
78313
+ for (var _i = 0, _e = classDeclaration.members; _i < _e.length; _i++) {
78314
+ var member = _e[_i];
78312
78315
  // Only process instance properties with computed names here.
78313
78316
  // Static properties cannot be in conflict with indexers,
78314
78317
  // and properties with literal names were already checked.
@@ -78638,7 +78641,7 @@ var ts;
78638
78641
  }
78639
78642
  if (produceDiagnostics) {
78640
78643
  checkIndexConstraints(type);
78641
- checkIndexConstraints(staticType);
78644
+ checkIndexConstraints(staticType, /*isStatic*/ true);
78642
78645
  checkTypeForDuplicateIndexSignatures(node);
78643
78646
  checkPropertyInitialization(node);
78644
78647
  }
@@ -78689,7 +78692,7 @@ var ts;
78689
78692
  }
78690
78693
  if (!baseHasAbstract) {
78691
78694
  var diag = memberIsParameterProperty ?
78692
- ts.Diagnostics.This_parameter_property_must_be_rewritten_as_a_property_declaration_with_an_override_modifier_because_it_overrides_a_member_in_base_class_0 :
78695
+ ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 :
78693
78696
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0;
78694
78697
  error(member, diag, baseClassName);
78695
78698
  }
@@ -88697,10 +88700,11 @@ var ts;
88697
88700
  return ts.visitEachChild(node, visitor, context);
88698
88701
  }
88699
88702
  var staticProperties = ts.getProperties(node, /*requireInitializer*/ false, /*isStatic*/ true);
88703
+ var pendingPrivateStateAssignment;
88700
88704
  if (shouldTransformPrivateElements && ts.some(node.members, function (m) { return ts.hasStaticModifier(m) && !!m.name && ts.isPrivateIdentifier(m.name); })) {
88701
88705
  var temp = factory.createTempVariable(hoistVariableDeclaration, /* reservedInNestedScopes */ true);
88702
88706
  getPrivateIdentifierEnvironment().classConstructor = factory.cloneNode(temp);
88703
- getPendingExpressions().push(factory.createAssignment(temp, factory.getInternalName(node)));
88707
+ pendingPrivateStateAssignment = factory.createAssignment(temp, factory.getInternalName(node));
88704
88708
  }
88705
88709
  var extendsClauseElement = ts.getEffectiveBaseTypeNode(node);
88706
88710
  var isDerivedClass = !!(extendsClauseElement && ts.skipOuterExpressions(extendsClauseElement.expression).kind !== 103 /* NullKeyword */);
@@ -88709,6 +88713,9 @@ var ts;
88709
88713
  /*decorators*/ undefined, node.modifiers, node.name,
88710
88714
  /*typeParameters*/ undefined, ts.visitNodes(node.heritageClauses, visitor, ts.isHeritageClause), transformClassMembers(node, isDerivedClass))
88711
88715
  ];
88716
+ if (pendingPrivateStateAssignment) {
88717
+ getPendingExpressions().unshift(pendingPrivateStateAssignment);
88718
+ }
88712
88719
  // Write any pending expressions from elided or moved computed property names
88713
88720
  if (ts.some(pendingExpressions)) {
88714
88721
  statements.push(factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions)));
@@ -123168,6 +123175,8 @@ var ts;
123168
123175
  return jsdocCompletionInfo(ts.JsDoc.getJSDocTagCompletions());
123169
123176
  case 3 /* JsDocParameterName */:
123170
123177
  return jsdocCompletionInfo(ts.JsDoc.getJSDocParameterNameCompletions(completionData.tag));
123178
+ case 4 /* Keywords */:
123179
+ return specificKeywordCompletionInfo(completionData.keywords);
123171
123180
  default:
123172
123181
  return ts.Debug.assertNever(completionData);
123173
123182
  }
@@ -123176,6 +123185,19 @@ var ts;
123176
123185
  function jsdocCompletionInfo(entries) {
123177
123186
  return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: false, entries: entries };
123178
123187
  }
123188
+ function specificKeywordCompletionInfo(keywords) {
123189
+ return {
123190
+ isGlobalCompletion: false,
123191
+ isMemberCompletion: false,
123192
+ isNewIdentifierLocation: false,
123193
+ entries: keywords.map(function (k) { return ({
123194
+ name: ts.tokenToString(k),
123195
+ kind: "keyword" /* keyword */,
123196
+ kindModifiers: "" /* none */,
123197
+ sortText: SortText.GlobalsOrKeywords,
123198
+ }); }),
123199
+ };
123200
+ }
123179
123201
  function getOptionalReplacementSpan(location) {
123180
123202
  // StringLiteralLike locations are handled separately in stringCompletions.ts
123181
123203
  return (location === null || location === void 0 ? void 0 : location.kind) === 78 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
@@ -123600,6 +123622,8 @@ var ts;
123600
123622
  return ts.JsDoc.getJSDocTagCompletionDetails(name);
123601
123623
  case 3 /* JsDocParameterName */:
123602
123624
  return ts.JsDoc.getJSDocParameterNameCompletionDetails(name);
123625
+ case 4 /* Keywords */:
123626
+ return request.keywords.indexOf(ts.stringToToken(name)) > -1 ? createSimpleDetails(name, "keyword" /* keyword */, ts.SymbolDisplayPartKind.keyword) : undefined;
123603
123627
  default:
123604
123628
  return ts.Debug.assertNever(request);
123605
123629
  }
@@ -123658,6 +123682,7 @@ var ts;
123658
123682
  CompletionDataKind[CompletionDataKind["JsDocTagName"] = 1] = "JsDocTagName";
123659
123683
  CompletionDataKind[CompletionDataKind["JsDocTag"] = 2] = "JsDocTag";
123660
123684
  CompletionDataKind[CompletionDataKind["JsDocParameterName"] = 3] = "JsDocParameterName";
123685
+ CompletionDataKind[CompletionDataKind["Keywords"] = 4] = "Keywords";
123661
123686
  })(CompletionDataKind || (CompletionDataKind = {}));
123662
123687
  var CompletionKind;
123663
123688
  (function (CompletionKind) {
@@ -123818,13 +123843,17 @@ var ts;
123818
123843
  var importCompletionNode;
123819
123844
  var location = ts.getTouchingPropertyName(sourceFile, position);
123820
123845
  if (contextToken) {
123846
+ var importCompletionCandidate = getImportCompletionNode(contextToken);
123847
+ if (importCompletionCandidate === 153 /* FromKeyword */) {
123848
+ return { kind: 4 /* Keywords */, keywords: [153 /* FromKeyword */] };
123849
+ }
123821
123850
  // Import statement completions use `insertText`, and also require the `data` property of `CompletionEntryIdentifier`
123822
123851
  // added in TypeScript 4.3 to be sent back from the client during `getCompletionEntryDetails`. Since this feature
123823
123852
  // is not backward compatible with older clients, the language service defaults to disabling it, allowing newer clients
123824
123853
  // to opt in with the `includeCompletionsForImportStatements` user preference.
123825
- importCompletionNode = preferences.includeCompletionsForImportStatements && preferences.includeCompletionsWithInsertText
123826
- ? getImportCompletionNode(contextToken)
123827
- : undefined;
123854
+ if (importCompletionCandidate && preferences.includeCompletionsForImportStatements && preferences.includeCompletionsWithInsertText) {
123855
+ importCompletionNode = importCompletionCandidate;
123856
+ }
123828
123857
  // Bail out if this is a known invalid completion location
123829
123858
  if (!importCompletionNode && isCompletionListBlocker(contextToken)) {
123830
123859
  log("Returning an empty list because completion was requested in an invalid position.");
@@ -125578,16 +125607,20 @@ var ts;
125578
125607
  }
125579
125608
  function getImportCompletionNode(contextToken) {
125580
125609
  var candidate = getCandidate();
125581
- return candidate && ts.rangeIsOnSingleLine(candidate, candidate.getSourceFile()) ? candidate : undefined;
125610
+ return candidate === 153 /* FromKeyword */ || candidate && ts.rangeIsOnSingleLine(candidate, candidate.getSourceFile()) ? candidate : undefined;
125582
125611
  function getCandidate() {
125583
125612
  var parent = contextToken.parent;
125584
125613
  if (ts.isImportEqualsDeclaration(parent)) {
125585
125614
  return isModuleSpecifierMissingOrEmpty(parent.moduleReference) ? parent : undefined;
125586
125615
  }
125587
125616
  if (ts.isNamedImports(parent) || ts.isNamespaceImport(parent)) {
125588
- return isModuleSpecifierMissingOrEmpty(parent.parent.parent.moduleSpecifier) && (ts.isNamespaceImport(parent) || parent.elements.length < 2) && !parent.parent.name
125589
- ? parent.parent.parent
125590
- : undefined;
125617
+ if (isModuleSpecifierMissingOrEmpty(parent.parent.parent.moduleSpecifier) && (ts.isNamespaceImport(parent) || parent.elements.length < 2) && !parent.parent.name) {
125618
+ // At `import { ... } |` or `import * as Foo |`, the only possible completion is `from`
125619
+ return contextToken.kind === 19 /* CloseBraceToken */ || contextToken.kind === 78 /* Identifier */
125620
+ ? 153 /* FromKeyword */
125621
+ : parent.parent.parent;
125622
+ }
125623
+ return undefined;
125591
125624
  }
125592
125625
  if (ts.isImportKeyword(contextToken) && ts.isSourceFile(parent)) {
125593
125626
  // A lone import keyword with nothing following it does not parse as a statement at all
@@ -142682,7 +142715,8 @@ var ts;
142682
142715
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code,
142683
142716
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code,
142684
142717
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code,
142685
- ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code
142718
+ ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code,
142719
+ ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code
142686
142720
  ];
142687
142721
  var errorCodeFixIdMap = (_a = {},
142688
142722
  _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code] = [
@@ -142691,6 +142725,9 @@ var ts;
142691
142725
  _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code] = [
142692
142726
  ts.Diagnostics.Remove_override_modifier, fixRemoveOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
142693
142727
  ],
142728
+ _a[ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code] = [
142729
+ ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Add_all_missing_override_modifiers,
142730
+ ],
142694
142731
  _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] = [
142695
142732
  ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
142696
142733
  ],
@@ -142729,6 +142766,7 @@ var ts;
142729
142766
  switch (errorCode) {
142730
142767
  case ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code:
142731
142768
  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:
142769
+ case ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code:
142732
142770
  return doAddOverrideModifierChange(changeTracker, context.sourceFile, pos);
142733
142771
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code:
142734
142772
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code:
@@ -142738,7 +142776,7 @@ var ts;
142738
142776
  }
142739
142777
  }
142740
142778
  function doAddOverrideModifierChange(changeTracker, sourceFile, pos) {
142741
- var classElement = findContainerClassElement(sourceFile, pos);
142779
+ var classElement = findContainerClassElementLike(sourceFile, pos);
142742
142780
  var modifiers = classElement.modifiers || ts.emptyArray;
142743
142781
  var staticModifier = ts.find(modifiers, ts.isStaticModifier);
142744
142782
  var accessibilityModifier = ts.find(modifiers, function (m) { return ts.isAccessibilityModifier(m.kind); });
@@ -142749,12 +142787,12 @@ var ts;
142749
142787
  changeTracker.insertModifierAt(sourceFile, modifierPos, 156 /* OverrideKeyword */, options);
142750
142788
  }
142751
142789
  function doRemoveOverrideModifierChange(changeTracker, sourceFile, pos) {
142752
- var classElement = findContainerClassElement(sourceFile, pos);
142790
+ var classElement = findContainerClassElementLike(sourceFile, pos);
142753
142791
  var overrideModifier = classElement.modifiers && ts.find(classElement.modifiers, function (modifier) { return modifier.kind === 156 /* OverrideKeyword */; });
142754
142792
  ts.Debug.assertIsDefined(overrideModifier);
142755
142793
  changeTracker.deleteModifier(sourceFile, overrideModifier);
142756
142794
  }
142757
- function isClassElementHasJSDoc(node) {
142795
+ function isClassElementLikeHasJSDoc(node) {
142758
142796
  switch (node.kind) {
142759
142797
  case 167 /* Constructor */:
142760
142798
  case 164 /* PropertyDeclaration */:
@@ -142762,18 +142800,20 @@ var ts;
142762
142800
  case 168 /* GetAccessor */:
142763
142801
  case 169 /* SetAccessor */:
142764
142802
  return true;
142803
+ case 161 /* Parameter */:
142804
+ return ts.isParameterPropertyDeclaration(node, node.parent);
142765
142805
  default:
142766
142806
  return false;
142767
142807
  }
142768
142808
  }
142769
- function findContainerClassElement(sourceFile, pos) {
142809
+ function findContainerClassElementLike(sourceFile, pos) {
142770
142810
  var token = ts.getTokenAtPosition(sourceFile, pos);
142771
142811
  var classElement = ts.findAncestor(token, function (node) {
142772
142812
  if (ts.isClassLike(node))
142773
142813
  return "quit";
142774
- return isClassElementHasJSDoc(node);
142814
+ return isClassElementLikeHasJSDoc(node);
142775
142815
  });
142776
- ts.Debug.assert(classElement && isClassElementHasJSDoc(classElement));
142816
+ ts.Debug.assert(classElement && isClassElementLikeHasJSDoc(classElement));
142777
142817
  return classElement;
142778
142818
  }
142779
142819
  })(codefix = ts.codefix || (ts.codefix = {}));
@@ -147564,8 +147604,10 @@ var ts;
147564
147604
  }
147565
147605
  if (context.preferences.provideRefactorNotApplicableReason) {
147566
147606
  return [
147567
- { name: refactorName, description: namespaceToNamedAction.description, actions: [__assign(__assign({}, namespaceToNamedAction), { notApplicableReason: info.error })] },
147568
- { name: refactorName, description: namedToNamespaceAction.description, actions: [__assign(__assign({}, namedToNamespaceAction), { notApplicableReason: info.error })] }
147607
+ { name: refactorName, description: namespaceToNamedAction.description,
147608
+ actions: [__assign(__assign({}, namespaceToNamedAction), { notApplicableReason: info.error })] },
147609
+ { name: refactorName, description: namedToNamespaceAction.description,
147610
+ actions: [__assign(__assign({}, namedToNamespaceAction), { notApplicableReason: info.error })] }
147569
147611
  ];
147570
147612
  }
147571
147613
  return ts.emptyArray;