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/typescript.js CHANGED
@@ -290,7 +290,7 @@ var ts;
290
290
  // The following is baselined as a literal template type without intervention
291
291
  /** The version of the TypeScript compiler release */
292
292
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
293
- ts.version = ts.versionMajorMinor + ".0-dev.20210508";
293
+ ts.version = "4.3.2";
294
294
  /* @internal */
295
295
  var Comparison;
296
296
  (function (Comparison) {
@@ -7883,7 +7883,7 @@ var ts;
7883
7883
  Identifier_expected: diag(1003, ts.DiagnosticCategory.Error, "Identifier_expected_1003", "Identifier expected."),
7884
7884
  _0_expected: diag(1005, ts.DiagnosticCategory.Error, "_0_expected_1005", "'{0}' expected."),
7885
7885
  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."),
7886
- 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."),
7886
+ 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."),
7887
7887
  Trailing_comma_not_allowed: diag(1009, ts.DiagnosticCategory.Error, "Trailing_comma_not_allowed_1009", "Trailing comma not allowed."),
7888
7888
  Asterisk_Slash_expected: diag(1010, ts.DiagnosticCategory.Error, "Asterisk_Slash_expected_1010", "'*/' expected."),
7889
7889
  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."),
@@ -8806,7 +8806,7 @@ var ts;
8806
8806
  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."),
8807
8807
  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}'."),
8808
8808
  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}'."),
8809
- 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}'."),
8809
+ 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}'."),
8810
8810
  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}'."),
8811
8811
  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."),
8812
8812
  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."),
@@ -30224,23 +30224,20 @@ var ts;
30224
30224
  return inContext(32768 /* AwaitContext */);
30225
30225
  }
30226
30226
  function parseErrorAtCurrentToken(message, arg0) {
30227
- return parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
30227
+ parseErrorAt(scanner.getTokenPos(), scanner.getTextPos(), message, arg0);
30228
30228
  }
30229
30229
  function parseErrorAtPosition(start, length, message, arg0) {
30230
30230
  // Don't report another error if it would just be at the same position as the last error.
30231
30231
  var lastError = ts.lastOrUndefined(parseDiagnostics);
30232
- var result;
30233
30232
  if (!lastError || start !== lastError.start) {
30234
- result = ts.createDetachedDiagnostic(fileName, start, length, message, arg0);
30235
- parseDiagnostics.push(result);
30233
+ parseDiagnostics.push(ts.createDetachedDiagnostic(fileName, start, length, message, arg0));
30236
30234
  }
30237
30235
  // Mark that we've encountered an error. We'll set an appropriate bit on the next
30238
30236
  // node we finish so that it can't be reused incrementally.
30239
30237
  parseErrorBeforeNextFinishedNode = true;
30240
- return result;
30241
30238
  }
30242
30239
  function parseErrorAt(start, end, message, arg0) {
30243
- return parseErrorAtPosition(start, end - start, message, arg0);
30240
+ parseErrorAtPosition(start, end - start, message, arg0);
30244
30241
  }
30245
30242
  function parseErrorAtRange(range, message, arg0) {
30246
30243
  parseErrorAt(range.pos, range.end, message, arg0);
@@ -30397,16 +30394,6 @@ var ts;
30397
30394
  parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(kind));
30398
30395
  return false;
30399
30396
  }
30400
- function parseExpectedMatchingBrackets(openKind, closeKind, openPosition) {
30401
- if (token() === closeKind) {
30402
- nextToken();
30403
- return;
30404
- }
30405
- var lastError = parseErrorAtCurrentToken(ts.Diagnostics._0_expected, ts.tokenToString(closeKind));
30406
- if (lastError) {
30407
- 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)));
30408
- }
30409
- }
30410
30397
  function parseOptional(t) {
30411
30398
  if (token() === t) {
30412
30399
  nextToken();
@@ -33774,11 +33761,10 @@ var ts;
33774
33761
  }
33775
33762
  function parseArrayLiteralExpression() {
33776
33763
  var pos = getNodePos();
33777
- var openBracketPosition = scanner.getTokenPos();
33778
33764
  parseExpected(22 /* OpenBracketToken */);
33779
33765
  var multiLine = scanner.hasPrecedingLineBreak();
33780
33766
  var elements = parseDelimitedList(15 /* ArrayLiteralMembers */, parseArgumentOrArrayLiteralElement);
33781
- parseExpectedMatchingBrackets(22 /* OpenBracketToken */, 23 /* CloseBracketToken */, openBracketPosition);
33767
+ parseExpected(23 /* CloseBracketToken */);
33782
33768
  return finishNode(factory.createArrayLiteralExpression(elements, multiLine), pos);
33783
33769
  }
33784
33770
  function parseObjectLiteralElement() {
@@ -33838,7 +33824,12 @@ var ts;
33838
33824
  parseExpected(18 /* OpenBraceToken */);
33839
33825
  var multiLine = scanner.hasPrecedingLineBreak();
33840
33826
  var properties = parseDelimitedList(12 /* ObjectLiteralMembers */, parseObjectLiteralElement, /*considerSemicolonAsDelimiter*/ true);
33841
- parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBracePosition);
33827
+ if (!parseExpected(19 /* CloseBraceToken */)) {
33828
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
33829
+ if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33830
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33831
+ }
33832
+ }
33842
33833
  return finishNode(factory.createObjectLiteralExpression(properties, multiLine), pos);
33843
33834
  }
33844
33835
  function parseFunctionExpression() {
@@ -33912,7 +33903,12 @@ var ts;
33912
33903
  if (parseExpected(18 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) {
33913
33904
  var multiLine = scanner.hasPrecedingLineBreak();
33914
33905
  var statements = parseList(1 /* BlockStatements */, parseStatement);
33915
- parseExpectedMatchingBrackets(18 /* OpenBraceToken */, 19 /* CloseBraceToken */, openBracePosition);
33906
+ if (!parseExpected(19 /* CloseBraceToken */)) {
33907
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
33908
+ if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
33909
+ ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
33910
+ }
33911
+ }
33916
33912
  var result = withJSDoc(finishNode(factory.createBlock(statements, multiLine), pos), hasJSDoc);
33917
33913
  if (token() === 62 /* EqualsToken */) {
33918
33914
  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);
@@ -33957,10 +33953,9 @@ var ts;
33957
33953
  var pos = getNodePos();
33958
33954
  var hasJSDoc = hasPrecedingJSDocComment();
33959
33955
  parseExpected(98 /* IfKeyword */);
33960
- var openParenPosition = scanner.getTokenPos();
33961
33956
  parseExpected(20 /* OpenParenToken */);
33962
33957
  var expression = allowInAnd(parseExpression);
33963
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33958
+ parseExpected(21 /* CloseParenToken */);
33964
33959
  var thenStatement = parseStatement();
33965
33960
  var elseStatement = parseOptional(90 /* ElseKeyword */) ? parseStatement() : undefined;
33966
33961
  return withJSDoc(finishNode(factory.createIfStatement(expression, thenStatement, elseStatement), pos), hasJSDoc);
@@ -33971,10 +33966,9 @@ var ts;
33971
33966
  parseExpected(89 /* DoKeyword */);
33972
33967
  var statement = parseStatement();
33973
33968
  parseExpected(114 /* WhileKeyword */);
33974
- var openParenPosition = scanner.getTokenPos();
33975
33969
  parseExpected(20 /* OpenParenToken */);
33976
33970
  var expression = allowInAnd(parseExpression);
33977
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33971
+ parseExpected(21 /* CloseParenToken */);
33978
33972
  // From: https://mail.mozilla.org/pipermail/es-discuss/2011-August/016188.html
33979
33973
  // 157 min --- All allen at wirfs-brock.com CONF --- "do{;}while(false)false" prohibited in
33980
33974
  // spec but allowed in consensus reality. Approved -- this is the de-facto standard whereby
@@ -33986,10 +33980,9 @@ var ts;
33986
33980
  var pos = getNodePos();
33987
33981
  var hasJSDoc = hasPrecedingJSDocComment();
33988
33982
  parseExpected(114 /* WhileKeyword */);
33989
- var openParenPosition = scanner.getTokenPos();
33990
33983
  parseExpected(20 /* OpenParenToken */);
33991
33984
  var expression = allowInAnd(parseExpression);
33992
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
33985
+ parseExpected(21 /* CloseParenToken */);
33993
33986
  var statement = parseStatement();
33994
33987
  return withJSDoc(finishNode(factory.createWhileStatement(expression, statement), pos), hasJSDoc);
33995
33988
  }
@@ -34056,10 +34049,9 @@ var ts;
34056
34049
  var pos = getNodePos();
34057
34050
  var hasJSDoc = hasPrecedingJSDocComment();
34058
34051
  parseExpected(115 /* WithKeyword */);
34059
- var openParenPosition = scanner.getTokenPos();
34060
34052
  parseExpected(20 /* OpenParenToken */);
34061
34053
  var expression = allowInAnd(parseExpression);
34062
- parseExpectedMatchingBrackets(20 /* OpenParenToken */, 21 /* CloseParenToken */, openParenPosition);
34054
+ parseExpected(21 /* CloseParenToken */);
34063
34055
  var statement = doInsideOfContext(16777216 /* InWithStatement */, parseStatement);
34064
34056
  return withJSDoc(finishNode(factory.createWithStatement(expression, statement), pos), hasJSDoc);
34065
34057
  }
@@ -36050,7 +36042,8 @@ var ts;
36050
36042
  hasChildren = true;
36051
36043
  if (child.kind === 333 /* JSDocTypeTag */) {
36052
36044
  if (childTypeTag) {
36053
- var lastError = parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
36045
+ parseErrorAtCurrentToken(ts.Diagnostics.A_JSDoc_typedef_comment_may_not_contain_multiple_type_tags);
36046
+ var lastError = ts.lastOrUndefined(parseDiagnostics);
36054
36047
  if (lastError) {
36055
36048
  ts.addRelatedInfo(lastError, ts.createDetachedDiagnostic(fileName, 0, 0, ts.Diagnostics.The_tag_was_first_specified_here));
36056
36049
  }
@@ -56211,6 +56204,10 @@ var ts;
56211
56204
  var indexSymbol = symbol && getIndexSymbol(symbol);
56212
56205
  return indexSymbol && getIndexDeclarationOfIndexSymbol(indexSymbol, kind);
56213
56206
  }
56207
+ function getIndexDeclarationOfSymbolTable(symbolTable, kind) {
56208
+ var indexSymbol = symbolTable && getIndexSymbolFromSymbolTable(symbolTable);
56209
+ return indexSymbol && getIndexDeclarationOfIndexSymbol(indexSymbol, kind);
56210
+ }
56214
56211
  function getIndexDeclarationOfIndexSymbol(indexSymbol, kind) {
56215
56212
  var syntaxKind = kind === 1 /* Number */ ? 144 /* NumberKeyword */ : 147 /* StringKeyword */;
56216
56213
  if (indexSymbol === null || indexSymbol === void 0 ? void 0 : indexSymbol.declarations) {
@@ -63419,14 +63416,17 @@ var ts;
63419
63416
  return type.flags & 32768 /* Undefined */ ? type : getUnionType([type, undefinedType]);
63420
63417
  }
63421
63418
  function getGlobalNonNullableTypeInstantiation(type) {
63419
+ // First reduce away any constituents that are assignable to 'undefined' or 'null'. This not only eliminates
63420
+ // 'undefined' and 'null', but also higher-order types such as a type parameter 'U extends undefined | null'
63421
+ // that isn't eliminated by a NonNullable<T> instantiation.
63422
+ var reducedType = getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */);
63422
63423
  if (!deferredGlobalNonNullableTypeAlias) {
63423
63424
  deferredGlobalNonNullableTypeAlias = getGlobalSymbol("NonNullable", 524288 /* TypeAlias */, /*diagnostic*/ undefined) || unknownSymbol;
63424
63425
  }
63425
- // Use NonNullable global type alias if available to improve quick info/declaration emit
63426
- if (deferredGlobalNonNullableTypeAlias !== unknownSymbol) {
63427
- return getTypeAliasInstantiation(deferredGlobalNonNullableTypeAlias, [type]);
63428
- }
63429
- return getTypeWithFacts(type, 2097152 /* NEUndefinedOrNull */); // Type alias unavailable, fall back to non-higher-order behavior
63426
+ // If the NonNullable<T> type is available, return an instantiation. Otherwise just return the reduced type.
63427
+ return deferredGlobalNonNullableTypeAlias !== unknownSymbol ?
63428
+ getTypeAliasInstantiation(deferredGlobalNonNullableTypeAlias, [reducedType]) :
63429
+ reducedType;
63430
63430
  }
63431
63431
  function getNonNullableType(type) {
63432
63432
  return strictNullChecks ? getGlobalNonNullableTypeInstantiation(type) : type;
@@ -67014,7 +67014,7 @@ var ts;
67014
67014
  !isGenericIndexType(getTypeOfExpression(parent.argumentExpression));
67015
67015
  }
67016
67016
  function isGenericTypeWithUnionConstraint(type) {
67017
- return !!(type.flags & 465829888 /* Instantiable */ && getBaseConstraintOrType(type).flags & 1048576 /* Union */);
67017
+ return !!(type.flags & 465829888 /* Instantiable */ && getBaseConstraintOrType(type).flags & (98304 /* Nullable */ | 1048576 /* Union */));
67018
67018
  }
67019
67019
  function containsGenericType(type) {
67020
67020
  return !!(type.flags & 465829888 /* Instantiable */ || type.flags & 3145728 /* UnionOrIntersection */ && ts.some(type.types, containsGenericType));
@@ -78488,21 +78488,24 @@ var ts;
78488
78488
  checkBlock(node.finallyBlock);
78489
78489
  }
78490
78490
  }
78491
- function checkIndexConstraints(type) {
78492
- var declaredNumberIndexer = getIndexDeclarationOfSymbol(type.symbol, 1 /* Number */);
78493
- var declaredStringIndexer = getIndexDeclarationOfSymbol(type.symbol, 0 /* String */);
78491
+ function checkIndexConstraints(type, isStatic) {
78492
+ var _a, _b, _c, _d;
78493
+ 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 */);
78494
+ 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 */);
78494
78495
  var stringIndexType = getIndexTypeOfType(type, 0 /* String */);
78495
78496
  var numberIndexType = getIndexTypeOfType(type, 1 /* Number */);
78496
78497
  if (stringIndexType || numberIndexType) {
78497
78498
  ts.forEach(getPropertiesOfObjectType(type), function (prop) {
78499
+ if (isStatic && prop.flags & 4194304 /* Prototype */)
78500
+ return;
78498
78501
  var propType = getTypeOfSymbol(prop);
78499
78502
  checkIndexConstraintForProperty(prop, propType, type, declaredStringIndexer, stringIndexType, 0 /* String */);
78500
78503
  checkIndexConstraintForProperty(prop, propType, type, declaredNumberIndexer, numberIndexType, 1 /* Number */);
78501
78504
  });
78502
78505
  var classDeclaration = type.symbol.valueDeclaration;
78503
78506
  if (ts.getObjectFlags(type) & 1 /* Class */ && classDeclaration && ts.isClassLike(classDeclaration)) {
78504
- for (var _i = 0, _a = classDeclaration.members; _i < _a.length; _i++) {
78505
- var member = _a[_i];
78507
+ for (var _i = 0, _e = classDeclaration.members; _i < _e.length; _i++) {
78508
+ var member = _e[_i];
78506
78509
  // Only process instance properties with computed names here.
78507
78510
  // Static properties cannot be in conflict with indexers,
78508
78511
  // and properties with literal names were already checked.
@@ -78832,7 +78835,7 @@ var ts;
78832
78835
  }
78833
78836
  if (produceDiagnostics) {
78834
78837
  checkIndexConstraints(type);
78835
- checkIndexConstraints(staticType);
78838
+ checkIndexConstraints(staticType, /*isStatic*/ true);
78836
78839
  checkTypeForDuplicateIndexSignatures(node);
78837
78840
  checkPropertyInitialization(node);
78838
78841
  }
@@ -78883,7 +78886,7 @@ var ts;
78883
78886
  }
78884
78887
  if (!baseHasAbstract) {
78885
78888
  var diag = memberIsParameterProperty ?
78886
- 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 :
78889
+ ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0 :
78887
78890
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0;
78888
78891
  error(member, diag, baseClassName);
78889
78892
  }
@@ -88891,10 +88894,11 @@ var ts;
88891
88894
  return ts.visitEachChild(node, visitor, context);
88892
88895
  }
88893
88896
  var staticProperties = ts.getProperties(node, /*requireInitializer*/ false, /*isStatic*/ true);
88897
+ var pendingPrivateStateAssignment;
88894
88898
  if (shouldTransformPrivateElements && ts.some(node.members, function (m) { return ts.hasStaticModifier(m) && !!m.name && ts.isPrivateIdentifier(m.name); })) {
88895
88899
  var temp = factory.createTempVariable(hoistVariableDeclaration, /* reservedInNestedScopes */ true);
88896
88900
  getPrivateIdentifierEnvironment().classConstructor = factory.cloneNode(temp);
88897
- getPendingExpressions().push(factory.createAssignment(temp, factory.getInternalName(node)));
88901
+ pendingPrivateStateAssignment = factory.createAssignment(temp, factory.getInternalName(node));
88898
88902
  }
88899
88903
  var extendsClauseElement = ts.getEffectiveBaseTypeNode(node);
88900
88904
  var isDerivedClass = !!(extendsClauseElement && ts.skipOuterExpressions(extendsClauseElement.expression).kind !== 103 /* NullKeyword */);
@@ -88903,6 +88907,9 @@ var ts;
88903
88907
  /*decorators*/ undefined, node.modifiers, node.name,
88904
88908
  /*typeParameters*/ undefined, ts.visitNodes(node.heritageClauses, visitor, ts.isHeritageClause), transformClassMembers(node, isDerivedClass))
88905
88909
  ];
88910
+ if (pendingPrivateStateAssignment) {
88911
+ getPendingExpressions().unshift(pendingPrivateStateAssignment);
88912
+ }
88906
88913
  // Write any pending expressions from elided or moved computed property names
88907
88914
  if (ts.some(pendingExpressions)) {
88908
88915
  statements.push(factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions)));
@@ -123737,6 +123744,8 @@ var ts;
123737
123744
  return jsdocCompletionInfo(ts.JsDoc.getJSDocTagCompletions());
123738
123745
  case 3 /* JsDocParameterName */:
123739
123746
  return jsdocCompletionInfo(ts.JsDoc.getJSDocParameterNameCompletions(completionData.tag));
123747
+ case 4 /* Keywords */:
123748
+ return specificKeywordCompletionInfo(completionData.keywords);
123740
123749
  default:
123741
123750
  return ts.Debug.assertNever(completionData);
123742
123751
  }
@@ -123745,6 +123754,19 @@ var ts;
123745
123754
  function jsdocCompletionInfo(entries) {
123746
123755
  return { isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: false, entries: entries };
123747
123756
  }
123757
+ function specificKeywordCompletionInfo(keywords) {
123758
+ return {
123759
+ isGlobalCompletion: false,
123760
+ isMemberCompletion: false,
123761
+ isNewIdentifierLocation: false,
123762
+ entries: keywords.map(function (k) { return ({
123763
+ name: ts.tokenToString(k),
123764
+ kind: "keyword" /* keyword */,
123765
+ kindModifiers: "" /* none */,
123766
+ sortText: SortText.GlobalsOrKeywords,
123767
+ }); }),
123768
+ };
123769
+ }
123748
123770
  function getOptionalReplacementSpan(location) {
123749
123771
  // StringLiteralLike locations are handled separately in stringCompletions.ts
123750
123772
  return (location === null || location === void 0 ? void 0 : location.kind) === 78 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
@@ -124169,6 +124191,8 @@ var ts;
124169
124191
  return ts.JsDoc.getJSDocTagCompletionDetails(name);
124170
124192
  case 3 /* JsDocParameterName */:
124171
124193
  return ts.JsDoc.getJSDocParameterNameCompletionDetails(name);
124194
+ case 4 /* Keywords */:
124195
+ return request.keywords.indexOf(ts.stringToToken(name)) > -1 ? createSimpleDetails(name, "keyword" /* keyword */, ts.SymbolDisplayPartKind.keyword) : undefined;
124172
124196
  default:
124173
124197
  return ts.Debug.assertNever(request);
124174
124198
  }
@@ -124227,6 +124251,7 @@ var ts;
124227
124251
  CompletionDataKind[CompletionDataKind["JsDocTagName"] = 1] = "JsDocTagName";
124228
124252
  CompletionDataKind[CompletionDataKind["JsDocTag"] = 2] = "JsDocTag";
124229
124253
  CompletionDataKind[CompletionDataKind["JsDocParameterName"] = 3] = "JsDocParameterName";
124254
+ CompletionDataKind[CompletionDataKind["Keywords"] = 4] = "Keywords";
124230
124255
  })(CompletionDataKind || (CompletionDataKind = {}));
124231
124256
  var CompletionKind;
124232
124257
  (function (CompletionKind) {
@@ -124387,13 +124412,17 @@ var ts;
124387
124412
  var importCompletionNode;
124388
124413
  var location = ts.getTouchingPropertyName(sourceFile, position);
124389
124414
  if (contextToken) {
124415
+ var importCompletionCandidate = getImportCompletionNode(contextToken);
124416
+ if (importCompletionCandidate === 153 /* FromKeyword */) {
124417
+ return { kind: 4 /* Keywords */, keywords: [153 /* FromKeyword */] };
124418
+ }
124390
124419
  // Import statement completions use `insertText`, and also require the `data` property of `CompletionEntryIdentifier`
124391
124420
  // added in TypeScript 4.3 to be sent back from the client during `getCompletionEntryDetails`. Since this feature
124392
124421
  // is not backward compatible with older clients, the language service defaults to disabling it, allowing newer clients
124393
124422
  // to opt in with the `includeCompletionsForImportStatements` user preference.
124394
- importCompletionNode = preferences.includeCompletionsForImportStatements && preferences.includeCompletionsWithInsertText
124395
- ? getImportCompletionNode(contextToken)
124396
- : undefined;
124423
+ if (importCompletionCandidate && preferences.includeCompletionsForImportStatements && preferences.includeCompletionsWithInsertText) {
124424
+ importCompletionNode = importCompletionCandidate;
124425
+ }
124397
124426
  // Bail out if this is a known invalid completion location
124398
124427
  if (!importCompletionNode && isCompletionListBlocker(contextToken)) {
124399
124428
  log("Returning an empty list because completion was requested in an invalid position.");
@@ -126147,16 +126176,20 @@ var ts;
126147
126176
  }
126148
126177
  function getImportCompletionNode(contextToken) {
126149
126178
  var candidate = getCandidate();
126150
- return candidate && ts.rangeIsOnSingleLine(candidate, candidate.getSourceFile()) ? candidate : undefined;
126179
+ return candidate === 153 /* FromKeyword */ || candidate && ts.rangeIsOnSingleLine(candidate, candidate.getSourceFile()) ? candidate : undefined;
126151
126180
  function getCandidate() {
126152
126181
  var parent = contextToken.parent;
126153
126182
  if (ts.isImportEqualsDeclaration(parent)) {
126154
126183
  return isModuleSpecifierMissingOrEmpty(parent.moduleReference) ? parent : undefined;
126155
126184
  }
126156
126185
  if (ts.isNamedImports(parent) || ts.isNamespaceImport(parent)) {
126157
- return isModuleSpecifierMissingOrEmpty(parent.parent.parent.moduleSpecifier) && (ts.isNamespaceImport(parent) || parent.elements.length < 2) && !parent.parent.name
126158
- ? parent.parent.parent
126159
- : undefined;
126186
+ if (isModuleSpecifierMissingOrEmpty(parent.parent.parent.moduleSpecifier) && (ts.isNamespaceImport(parent) || parent.elements.length < 2) && !parent.parent.name) {
126187
+ // At `import { ... } |` or `import * as Foo |`, the only possible completion is `from`
126188
+ return contextToken.kind === 19 /* CloseBraceToken */ || contextToken.kind === 78 /* Identifier */
126189
+ ? 153 /* FromKeyword */
126190
+ : parent.parent.parent;
126191
+ }
126192
+ return undefined;
126160
126193
  }
126161
126194
  if (ts.isImportKeyword(contextToken) && ts.isSourceFile(parent)) {
126162
126195
  // A lone import keyword with nothing following it does not parse as a statement at all
@@ -143251,7 +143284,8 @@ var ts;
143251
143284
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code,
143252
143285
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code,
143253
143286
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0.code,
143254
- ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code
143287
+ ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code,
143288
+ ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code
143255
143289
  ];
143256
143290
  var errorCodeFixIdMap = (_a = {},
143257
143291
  _a[ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code] = [
@@ -143260,6 +143294,9 @@ var ts;
143260
143294
  _a[ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code] = [
143261
143295
  ts.Diagnostics.Remove_override_modifier, fixRemoveOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
143262
143296
  ],
143297
+ _a[ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code] = [
143298
+ ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Add_all_missing_override_modifiers,
143299
+ ],
143263
143300
  _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] = [
143264
143301
  ts.Diagnostics.Add_override_modifier, fixAddOverrideId, ts.Diagnostics.Remove_all_unnecessary_override_modifiers
143265
143302
  ],
@@ -143298,6 +143335,7 @@ var ts;
143298
143335
  switch (errorCode) {
143299
143336
  case ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0.code:
143300
143337
  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:
143338
+ case ts.Diagnostics.This_parameter_property_must_have_an_override_modifier_because_it_overrides_a_member_in_base_class_0.code:
143301
143339
  return doAddOverrideModifierChange(changeTracker, context.sourceFile, pos);
143302
143340
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0.code:
143303
143341
  case ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class.code:
@@ -143307,7 +143345,7 @@ var ts;
143307
143345
  }
143308
143346
  }
143309
143347
  function doAddOverrideModifierChange(changeTracker, sourceFile, pos) {
143310
- var classElement = findContainerClassElement(sourceFile, pos);
143348
+ var classElement = findContainerClassElementLike(sourceFile, pos);
143311
143349
  var modifiers = classElement.modifiers || ts.emptyArray;
143312
143350
  var staticModifier = ts.find(modifiers, ts.isStaticModifier);
143313
143351
  var accessibilityModifier = ts.find(modifiers, function (m) { return ts.isAccessibilityModifier(m.kind); });
@@ -143318,12 +143356,12 @@ var ts;
143318
143356
  changeTracker.insertModifierAt(sourceFile, modifierPos, 156 /* OverrideKeyword */, options);
143319
143357
  }
143320
143358
  function doRemoveOverrideModifierChange(changeTracker, sourceFile, pos) {
143321
- var classElement = findContainerClassElement(sourceFile, pos);
143359
+ var classElement = findContainerClassElementLike(sourceFile, pos);
143322
143360
  var overrideModifier = classElement.modifiers && ts.find(classElement.modifiers, function (modifier) { return modifier.kind === 156 /* OverrideKeyword */; });
143323
143361
  ts.Debug.assertIsDefined(overrideModifier);
143324
143362
  changeTracker.deleteModifier(sourceFile, overrideModifier);
143325
143363
  }
143326
- function isClassElementHasJSDoc(node) {
143364
+ function isClassElementLikeHasJSDoc(node) {
143327
143365
  switch (node.kind) {
143328
143366
  case 167 /* Constructor */:
143329
143367
  case 164 /* PropertyDeclaration */:
@@ -143331,18 +143369,20 @@ var ts;
143331
143369
  case 168 /* GetAccessor */:
143332
143370
  case 169 /* SetAccessor */:
143333
143371
  return true;
143372
+ case 161 /* Parameter */:
143373
+ return ts.isParameterPropertyDeclaration(node, node.parent);
143334
143374
  default:
143335
143375
  return false;
143336
143376
  }
143337
143377
  }
143338
- function findContainerClassElement(sourceFile, pos) {
143378
+ function findContainerClassElementLike(sourceFile, pos) {
143339
143379
  var token = ts.getTokenAtPosition(sourceFile, pos);
143340
143380
  var classElement = ts.findAncestor(token, function (node) {
143341
143381
  if (ts.isClassLike(node))
143342
143382
  return "quit";
143343
- return isClassElementHasJSDoc(node);
143383
+ return isClassElementLikeHasJSDoc(node);
143344
143384
  });
143345
- ts.Debug.assert(classElement && isClassElementHasJSDoc(classElement));
143385
+ ts.Debug.assert(classElement && isClassElementLikeHasJSDoc(classElement));
143346
143386
  return classElement;
143347
143387
  }
143348
143388
  })(codefix = ts.codefix || (ts.codefix = {}));
@@ -148133,8 +148173,10 @@ var ts;
148133
148173
  }
148134
148174
  if (context.preferences.provideRefactorNotApplicableReason) {
148135
148175
  return [
148136
- { name: refactorName, description: namespaceToNamedAction.description, actions: [__assign(__assign({}, namespaceToNamedAction), { notApplicableReason: info.error })] },
148137
- { name: refactorName, description: namedToNamespaceAction.description, actions: [__assign(__assign({}, namedToNamespaceAction), { notApplicableReason: info.error })] }
148176
+ { name: refactorName, description: namespaceToNamedAction.description,
148177
+ actions: [__assign(__assign({}, namespaceToNamedAction), { notApplicableReason: info.error })] },
148178
+ { name: refactorName, description: namedToNamespaceAction.description,
148179
+ actions: [__assign(__assign({}, namedToNamespaceAction), { notApplicableReason: info.error })] }
148138
148180
  ];
148139
148181
  }
148140
148182
  return ts.emptyArray;