@typescript-deploys/pr-build 5.5.0-pr-57749-11 → 5.5.0-pr-57465-98

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
@@ -18,7 +18,7 @@ and limitations under the License.
18
18
 
19
19
  // src/compiler/corePublic.ts
20
20
  var versionMajorMinor = "5.5";
21
- var version = `${versionMajorMinor}.0-insiders.20240312`;
21
+ var version = `${versionMajorMinor}.0-insiders.20240313`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -6096,8 +6096,6 @@ var Diagnostics = {
6096
6096
  The_left_hand_side_of_a_for_in_statement_cannot_be_an_await_using_declaration: diag(1494, 1 /* Error */, "The_left_hand_side_of_a_for_in_statement_cannot_be_an_await_using_declaration_1494", "The left-hand side of a 'for...in' statement cannot be an 'await using' declaration."),
6097
6097
  _0_modifier_cannot_appear_on_an_await_using_declaration: diag(1495, 1 /* Error */, "_0_modifier_cannot_appear_on_an_await_using_declaration_1495", "'{0}' modifier cannot appear on an 'await using' declaration."),
6098
6098
  Identifier_string_literal_or_number_literal_expected: diag(1496, 1 /* Error */, "Identifier_string_literal_or_number_literal_expected_1496", "Identifier, string literal, or number literal expected."),
6099
- Expression_must_be_enclosed_in_parentheses_to_be_used_as_a_decorator: diag(1497, 1 /* Error */, "Expression_must_be_enclosed_in_parentheses_to_be_used_as_a_decorator_1497", "Expression must be enclosed in parentheses to be used as a decorator."),
6100
- Invalid_syntax_in_decorator: diag(1498, 1 /* Error */, "Invalid_syntax_in_decorator_1498", "Invalid syntax in decorator."),
6101
6099
  The_types_of_0_are_incompatible_between_these_types: diag(2200, 1 /* Error */, "The_types_of_0_are_incompatible_between_these_types_2200", "The types of '{0}' are incompatible between these types."),
6102
6100
  The_types_returned_by_0_are_incompatible_between_these_types: diag(2201, 1 /* Error */, "The_types_returned_by_0_are_incompatible_between_these_types_2201", "The types returned by '{0}' are incompatible between these types."),
6103
6101
  Call_signature_return_types_0_and_1_are_incompatible: diag(
@@ -6344,7 +6342,7 @@ var Diagnostics = {
6344
6342
  Overload_signatures_must_all_be_abstract_or_non_abstract: diag(2512, 1 /* Error */, "Overload_signatures_must_all_be_abstract_or_non_abstract_2512", "Overload signatures must all be abstract or non-abstract."),
6345
6343
  Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression: diag(2513, 1 /* Error */, "Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression_2513", "Abstract method '{0}' in class '{1}' cannot be accessed via super expression."),
6346
6344
  A_tuple_type_cannot_be_indexed_with_a_negative_value: diag(2514, 1 /* Error */, "A_tuple_type_cannot_be_indexed_with_a_negative_value_2514", "A tuple type cannot be indexed with a negative value."),
6347
- Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: diag(2515, 1 /* Error */, "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'."),
6345
+ Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: diag(2515, 1 /* Error */, "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", "Non-abstract class '{0}' does not implement inherited abstract member {1} from class '{2}'."),
6348
6346
  All_declarations_of_an_abstract_method_must_be_consecutive: diag(2516, 1 /* Error */, "All_declarations_of_an_abstract_method_must_be_consecutive_2516", "All declarations of an abstract method must be consecutive."),
6349
6347
  Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: diag(2517, 1 /* Error */, "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", "Cannot assign an abstract constructor type to a non-abstract constructor type."),
6350
6348
  A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: diag(2518, 1 /* Error */, "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", "A 'this'-based type guard is not compatible with a parameter-based type guard."),
@@ -6454,9 +6452,13 @@ var Diagnostics = {
6454
6452
  Type_0_may_represent_a_primitive_value_which_is_not_permitted_as_the_right_operand_of_the_in_operator: diag(2638, 1 /* Error */, "Type_0_may_represent_a_primitive_value_which_is_not_permitted_as_the_right_operand_of_the_in_operato_2638", "Type '{0}' may represent a primitive value, which is not permitted as the right operand of the 'in' operator."),
6455
6453
  React_components_cannot_include_JSX_namespace_names: diag(2639, 1 /* Error */, "React_components_cannot_include_JSX_namespace_names_2639", "React components cannot include JSX namespace names"),
6456
6454
  Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity: diag(2649, 1 /* Error */, "Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity_2649", "Cannot augment module '{0}' with value exports because it resolves to a non-module entity."),
6455
+ Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and_2_more: diag(2650, 1 /* Error */, "Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and__2650", "Non-abstract class expression is missing implementations for the following members of '{0}': {1} and {2} more."),
6457
6456
  A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums: diag(2651, 1 /* Error */, "A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_memb_2651", "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."),
6458
6457
  Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead: diag(2652, 1 /* Error */, "Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_d_2652", "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead."),
6459
6458
  Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1: diag(2653, 1 /* Error */, "Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1_2653", "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'."),
6459
+ Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2: diag(2654, 1 /* Error */, "Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_2654", "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2}."),
6460
+ Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more: diag(2655, 1 /* Error */, "Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more_2655", "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2} and {3} more."),
6461
+ Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1: diag(2656, 1 /* Error */, "Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_2656", "Non-abstract class expression is missing implementations for the following members of '{0}': {1}."),
6460
6462
  JSX_expressions_must_have_one_parent_element: diag(2657, 1 /* Error */, "JSX_expressions_must_have_one_parent_element_2657", "JSX expressions must have one parent element."),
6461
6463
  Type_0_provides_no_match_for_the_signature_1: diag(2658, 1 /* Error */, "Type_0_provides_no_match_for_the_signature_1_2658", "Type '{0}' provides no match for the signature '{1}'."),
6462
6464
  super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: diag(2659, 1 /* Error */, "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher."),
@@ -7745,8 +7747,6 @@ var Diagnostics = {
7745
7747
  Add_optional_parameter_to_0: diag(95191, 3 /* Message */, "Add_optional_parameter_to_0_95191", "Add optional parameter to '{0}'"),
7746
7748
  Add_optional_parameters_to_0: diag(95192, 3 /* Message */, "Add_optional_parameters_to_0_95192", "Add optional parameters to '{0}'"),
7747
7749
  Add_all_optional_parameters: diag(95193, 3 /* Message */, "Add_all_optional_parameters_95193", "Add all optional parameters"),
7748
- Wrap_in_parentheses: diag(95194, 3 /* Message */, "Wrap_in_parentheses_95194", "Wrap in parentheses"),
7749
- Wrap_all_invalid_decorator_expressions_in_parentheses: diag(95195, 3 /* Message */, "Wrap_all_invalid_decorator_expressions_in_parentheses_95195", "Wrap all invalid decorator expressions in parentheses"),
7750
7750
  No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: diag(18004, 1 /* Error */, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."),
7751
7751
  Classes_may_not_have_a_field_named_constructor: diag(18006, 1 /* Error */, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."),
7752
7752
  JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: diag(18007, 1 /* Error */, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"),
@@ -7787,7 +7787,6 @@ var Diagnostics = {
7787
7787
  _0_is_possibly_null_or_undefined: diag(18049, 1 /* Error */, "_0_is_possibly_null_or_undefined_18049", "'{0}' is possibly 'null' or 'undefined'."),
7788
7788
  The_value_0_cannot_be_used_here: diag(18050, 1 /* Error */, "The_value_0_cannot_be_used_here_18050", "The value '{0}' cannot be used here."),
7789
7789
  Compiler_option_0_cannot_be_given_an_empty_string: diag(18051, 1 /* Error */, "Compiler_option_0_cannot_be_given_an_empty_string_18051", "Compiler option '{0}' cannot be given an empty string."),
7790
- Non_abstract_class_0_does_not_implement_all_abstract_members_of_1: diag(18052, 1 /* Error */, "Non_abstract_class_0_does_not_implement_all_abstract_members_of_1_18052", "Non-abstract class '{0}' does not implement all abstract members of '{1}'"),
7791
7790
  Its_type_0_is_not_a_valid_JSX_element_type: diag(18053, 1 /* Error */, "Its_type_0_is_not_a_valid_JSX_element_type_18053", "Its type '{0}' is not a valid JSX element type."),
7792
7791
  await_using_statements_cannot_be_used_inside_a_class_static_block: diag(18054, 1 /* Error */, "await_using_statements_cannot_be_used_inside_a_class_static_block_18054", "'await using' statements cannot be used inside a class static block.")
7793
7792
  };
@@ -39796,7 +39795,7 @@ function createBinder() {
39796
39795
  inAssignmentPattern = saveInAssignmentPattern;
39797
39796
  return;
39798
39797
  }
39799
- if (node.kind >= 243 /* FirstStatement */ && node.kind <= 259 /* LastStatement */ && !options.allowUnreachableCode) {
39798
+ if (node.kind >= 243 /* FirstStatement */ && node.kind <= 259 /* LastStatement */ && (!options.allowUnreachableCode || node.kind === 253 /* ReturnStatement */)) {
39800
39799
  node.flowNode = currentFlow;
39801
39800
  }
39802
39801
  switch (node.kind) {
@@ -55642,7 +55641,15 @@ function createTypeChecker(host) {
55642
55641
  jsdocPredicate = getTypePredicateOfSignature(jsdocSignature);
55643
55642
  }
55644
55643
  }
55645
- signature.resolvedTypePredicate = type && isTypePredicateNode(type) ? createTypePredicateFromTypePredicateNode(type, signature) : jsdocPredicate || noTypePredicate;
55644
+ if (type || jsdocPredicate) {
55645
+ signature.resolvedTypePredicate = type && isTypePredicateNode(type) ? createTypePredicateFromTypePredicateNode(type, signature) : jsdocPredicate || noTypePredicate;
55646
+ } else if (signature.declaration && isFunctionLikeDeclaration(signature.declaration) && (!signature.resolvedReturnType || signature.resolvedReturnType.flags & 16 /* Boolean */)) {
55647
+ const { declaration } = signature;
55648
+ signature.resolvedTypePredicate = noTypePredicate;
55649
+ signature.resolvedTypePredicate = getTypePredicateFromBody(declaration) || noTypePredicate;
55650
+ } else {
55651
+ signature.resolvedTypePredicate = noTypePredicate;
55652
+ }
55646
55653
  }
55647
55654
  Debug.assert(!!signature.resolvedTypePredicate);
55648
55655
  }
@@ -74066,6 +74073,67 @@ function createTypeChecker(host) {
74066
74073
  return false;
74067
74074
  }
74068
74075
  }
74076
+ function getTypePredicateFromBody(func) {
74077
+ switch (func.kind) {
74078
+ case 176 /* Constructor */:
74079
+ case 177 /* GetAccessor */:
74080
+ case 178 /* SetAccessor */:
74081
+ return void 0;
74082
+ }
74083
+ const functionFlags = getFunctionFlags(func);
74084
+ if (functionFlags !== 0 /* Normal */ || func.parameters.length === 0)
74085
+ return void 0;
74086
+ let singleReturn;
74087
+ if (func.body && func.body.kind !== 241 /* Block */) {
74088
+ singleReturn = func.body;
74089
+ } else {
74090
+ const bailedEarly = forEachReturnStatement(func.body, (returnStatement) => {
74091
+ if (singleReturn || !returnStatement.expression)
74092
+ return true;
74093
+ singleReturn = returnStatement.expression;
74094
+ });
74095
+ if (bailedEarly || !singleReturn || functionHasImplicitReturn(func))
74096
+ return void 0;
74097
+ }
74098
+ return checkIfExpressionRefinesAnyParameter(func, singleReturn);
74099
+ }
74100
+ function checkIfExpressionRefinesAnyParameter(func, expr) {
74101
+ expr = skipParentheses(
74102
+ expr,
74103
+ /*excludeJSDocTypeAssertions*/
74104
+ true
74105
+ );
74106
+ const returnType = checkExpressionCached(expr);
74107
+ if (!(returnType.flags & 16 /* Boolean */))
74108
+ return void 0;
74109
+ return forEach(func.parameters, (param, i) => {
74110
+ const initType = getTypeOfSymbol(param.symbol);
74111
+ if (!initType || initType.flags & 16 /* Boolean */ || !isIdentifier(param.name) || isSymbolAssigned(param.symbol)) {
74112
+ return;
74113
+ }
74114
+ const trueType2 = checkIfExpressionRefinesParameter(func, expr, param, initType);
74115
+ if (trueType2) {
74116
+ return createTypePredicate(1 /* Identifier */, unescapeLeadingUnderscores(param.name.escapedText), i, trueType2);
74117
+ }
74118
+ });
74119
+ }
74120
+ function checkIfExpressionRefinesParameter(func, expr, param, initType) {
74121
+ const antecedent = expr.flowNode || expr.parent.kind === 253 /* ReturnStatement */ && expr.parent.flowNode || { flags: 2 /* Start */ };
74122
+ const trueCondition = {
74123
+ flags: 32 /* TrueCondition */,
74124
+ node: expr,
74125
+ antecedent
74126
+ };
74127
+ const trueType2 = getFlowTypeOfReference(param.name, initType, initType, func, trueCondition);
74128
+ if (trueType2 === initType)
74129
+ return void 0;
74130
+ const falseCondition = {
74131
+ ...trueCondition,
74132
+ flags: 64 /* FalseCondition */
74133
+ };
74134
+ const falseSubtype = getFlowTypeOfReference(param.name, trueType2, trueType2, func, falseCondition);
74135
+ return falseSubtype.flags & 131072 /* Never */ ? trueType2 : void 0;
74136
+ }
74069
74137
  function checkAllCodePathsInNonVoidFunctionReturnOrThrow(func, returnType) {
74070
74138
  addLazyDiagnostic(checkAllCodePathsInNonVoidFunctionReturnOrThrowDiagnostics);
74071
74139
  return;
@@ -77346,56 +77414,7 @@ function createTypeChecker(host) {
77346
77414
  }
77347
77415
  }
77348
77416
  }
77349
- function checkGrammarDecorator(decorator) {
77350
- const sourceFile = getSourceFileOfNode(decorator);
77351
- if (!hasParseDiagnostics(sourceFile)) {
77352
- let node = decorator.expression;
77353
- if (isParenthesizedExpression(node)) {
77354
- return false;
77355
- }
77356
- let canHaveCallExpression = true;
77357
- let errorNode;
77358
- while (true) {
77359
- if (isExpressionWithTypeArguments(node) || isNonNullExpression(node)) {
77360
- node = node.expression;
77361
- continue;
77362
- }
77363
- if (isCallExpression(node)) {
77364
- if (!canHaveCallExpression) {
77365
- errorNode = node;
77366
- }
77367
- if (node.questionDotToken) {
77368
- errorNode = node.questionDotToken;
77369
- }
77370
- node = node.expression;
77371
- canHaveCallExpression = false;
77372
- continue;
77373
- }
77374
- if (isPropertyAccessExpression(node)) {
77375
- if (node.questionDotToken) {
77376
- errorNode = node.questionDotToken;
77377
- }
77378
- node = node.expression;
77379
- canHaveCallExpression = false;
77380
- continue;
77381
- }
77382
- if (!isIdentifier(node)) {
77383
- errorNode = node;
77384
- }
77385
- break;
77386
- }
77387
- if (errorNode) {
77388
- addRelatedInfo(
77389
- error(decorator.expression, Diagnostics.Expression_must_be_enclosed_in_parentheses_to_be_used_as_a_decorator),
77390
- createDiagnosticForNode(errorNode, Diagnostics.Invalid_syntax_in_decorator)
77391
- );
77392
- return true;
77393
- }
77394
- }
77395
- return false;
77396
- }
77397
77417
  function checkDecorator(node) {
77398
- checkGrammarDecorator(node);
77399
77418
  const signature = getResolvedSignature(node);
77400
77419
  checkDeprecatedSignature(signature, node);
77401
77420
  const returnType = getReturnTypeOfSignature(signature);
@@ -80091,9 +80110,9 @@ function createTypeChecker(host) {
80091
80110
  return filter(symbol.declarations, (d) => d.kind === 263 /* ClassDeclaration */ || d.kind === 264 /* InterfaceDeclaration */);
80092
80111
  }
80093
80112
  function checkKindsOfPropertyMemberOverrides(type, baseType) {
80094
- var _a, _b, _c, _d;
80113
+ var _a, _b, _c, _d, _e;
80095
80114
  const baseProperties = getPropertiesOfType(baseType);
80096
- let inheritedAbstractMemberNotImplementedError;
80115
+ const notImplementedInfo = /* @__PURE__ */ new Map();
80097
80116
  basePropertyCheck:
80098
80117
  for (const baseProperty of baseProperties) {
80099
80118
  const base = getTargetSymbol(baseProperty);
@@ -80119,36 +80138,11 @@ function createTypeChecker(host) {
80119
80138
  continue basePropertyCheck;
80120
80139
  }
80121
80140
  }
80122
- if (!inheritedAbstractMemberNotImplementedError) {
80123
- inheritedAbstractMemberNotImplementedError = error(
80124
- derivedClassDecl,
80125
- Diagnostics.Non_abstract_class_0_does_not_implement_all_abstract_members_of_1,
80126
- typeToString(type),
80127
- typeToString(baseType)
80128
- );
80129
- }
80130
- if (derivedClassDecl.kind === 231 /* ClassExpression */) {
80131
- addRelatedInfo(
80132
- inheritedAbstractMemberNotImplementedError,
80133
- createDiagnosticForNode(
80134
- baseProperty.valueDeclaration ?? (baseProperty.declarations && first(baseProperty.declarations)) ?? derivedClassDecl,
80135
- Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1,
80136
- symbolToString(baseProperty),
80137
- typeToString(baseType)
80138
- )
80139
- );
80140
- } else {
80141
- addRelatedInfo(
80142
- inheritedAbstractMemberNotImplementedError,
80143
- createDiagnosticForNode(
80144
- baseProperty.valueDeclaration ?? (baseProperty.declarations && first(baseProperty.declarations)) ?? derivedClassDecl,
80145
- Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2,
80146
- typeToString(type),
80147
- symbolToString(baseProperty),
80148
- typeToString(baseType)
80149
- )
80150
- );
80151
- }
80141
+ const baseTypeName = typeToString(baseType);
80142
+ const typeName = typeToString(type);
80143
+ const basePropertyName = symbolToString(baseProperty);
80144
+ const missedProperties = append((_a = notImplementedInfo.get(derivedClassDecl)) == null ? void 0 : _a.missedProperties, basePropertyName);
80145
+ notImplementedInfo.set(derivedClassDecl, { baseTypeName, typeName, missedProperties });
80152
80146
  }
80153
80147
  } else {
80154
80148
  const derivedDeclarationFlags = getDeclarationModifierFlagsFromSymbol(derived);
@@ -80159,7 +80153,7 @@ function createTypeChecker(host) {
80159
80153
  const basePropertyFlags = base.flags & 98308 /* PropertyOrAccessor */;
80160
80154
  const derivedPropertyFlags = derived.flags & 98308 /* PropertyOrAccessor */;
80161
80155
  if (basePropertyFlags && derivedPropertyFlags) {
80162
- if ((getCheckFlags(base) & 6 /* Synthetic */ ? (_a = base.declarations) == null ? void 0 : _a.some((d) => isPropertyAbstractOrInterface(d, baseDeclarationFlags)) : (_b = base.declarations) == null ? void 0 : _b.every((d) => isPropertyAbstractOrInterface(d, baseDeclarationFlags))) || getCheckFlags(base) & 262144 /* Mapped */ || derived.valueDeclaration && isBinaryExpression(derived.valueDeclaration)) {
80156
+ if ((getCheckFlags(base) & 6 /* Synthetic */ ? (_b = base.declarations) == null ? void 0 : _b.some((d) => isPropertyAbstractOrInterface(d, baseDeclarationFlags)) : (_c = base.declarations) == null ? void 0 : _c.every((d) => isPropertyAbstractOrInterface(d, baseDeclarationFlags))) || getCheckFlags(base) & 262144 /* Mapped */ || derived.valueDeclaration && isBinaryExpression(derived.valueDeclaration)) {
80163
80157
  continue;
80164
80158
  }
80165
80159
  const overriddenInstanceProperty = basePropertyFlags !== 4 /* Property */ && derivedPropertyFlags === 4 /* Property */;
@@ -80168,8 +80162,8 @@ function createTypeChecker(host) {
80168
80162
  const errorMessage2 = overriddenInstanceProperty ? Diagnostics._0_is_defined_as_an_accessor_in_class_1_but_is_overridden_here_in_2_as_an_instance_property : Diagnostics._0_is_defined_as_a_property_in_class_1_but_is_overridden_here_in_2_as_an_accessor;
80169
80163
  error(getNameOfDeclaration(derived.valueDeclaration) || derived.valueDeclaration, errorMessage2, symbolToString(base), typeToString(baseType), typeToString(type));
80170
80164
  } else if (useDefineForClassFields) {
80171
- const uninitialized = (_c = derived.declarations) == null ? void 0 : _c.find((d) => d.kind === 172 /* PropertyDeclaration */ && !d.initializer);
80172
- if (uninitialized && !(derived.flags & 33554432 /* Transient */) && !(baseDeclarationFlags & 64 /* Abstract */) && !(derivedDeclarationFlags & 64 /* Abstract */) && !((_d = derived.declarations) == null ? void 0 : _d.some((d) => !!(d.flags & 33554432 /* Ambient */)))) {
80165
+ const uninitialized = (_d = derived.declarations) == null ? void 0 : _d.find((d) => d.kind === 172 /* PropertyDeclaration */ && !d.initializer);
80166
+ if (uninitialized && !(derived.flags & 33554432 /* Transient */) && !(baseDeclarationFlags & 64 /* Abstract */) && !(derivedDeclarationFlags & 64 /* Abstract */) && !((_e = derived.declarations) == null ? void 0 : _e.some((d) => !!(d.flags & 33554432 /* Ambient */)))) {
80173
80167
  const constructor = findConstructorDeclaration(getClassLikeDeclarationOfSymbol(type.symbol));
80174
80168
  const propName = uninitialized.name;
80175
80169
  if (uninitialized.exclamationToken || !constructor || !isIdentifier(propName) || !strictNullChecks || !isPropertyInitializedInConstructor(propName, type, constructor)) {
@@ -80194,6 +80188,30 @@ function createTypeChecker(host) {
80194
80188
  error(getNameOfDeclaration(derived.valueDeclaration) || derived.valueDeclaration, errorMessage, typeToString(baseType), symbolToString(base), typeToString(type));
80195
80189
  }
80196
80190
  }
80191
+ for (const [errorNode, memberInfo] of notImplementedInfo) {
80192
+ if (length(memberInfo.missedProperties) === 1) {
80193
+ if (isClassExpression(errorNode)) {
80194
+ error(errorNode, Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, first(memberInfo.missedProperties), memberInfo.baseTypeName);
80195
+ } else {
80196
+ error(errorNode, Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2, memberInfo.typeName, first(memberInfo.missedProperties), memberInfo.baseTypeName);
80197
+ }
80198
+ } else if (length(memberInfo.missedProperties) > 5) {
80199
+ const missedProperties = map(memberInfo.missedProperties.slice(0, 4), (prop) => `'${prop}'`).join(", ");
80200
+ const remainingMissedProperties = length(memberInfo.missedProperties) - 4;
80201
+ if (isClassExpression(errorNode)) {
80202
+ error(errorNode, Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1_and_2_more, memberInfo.baseTypeName, missedProperties, remainingMissedProperties);
80203
+ } else {
80204
+ error(errorNode, Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2_and_3_more, memberInfo.typeName, memberInfo.baseTypeName, missedProperties, remainingMissedProperties);
80205
+ }
80206
+ } else {
80207
+ const missedProperties = map(memberInfo.missedProperties, (prop) => `'${prop}'`).join(", ");
80208
+ if (isClassExpression(errorNode)) {
80209
+ error(errorNode, Diagnostics.Non_abstract_class_expression_is_missing_implementations_for_the_following_members_of_0_Colon_1, memberInfo.baseTypeName, missedProperties);
80210
+ } else {
80211
+ error(errorNode, Diagnostics.Non_abstract_class_0_is_missing_implementations_for_the_following_members_of_1_Colon_2, memberInfo.typeName, memberInfo.baseTypeName, missedProperties);
80212
+ }
80213
+ }
80214
+ }
80197
80215
  }
80198
80216
  function isPropertyAbstractOrInterface(declaration, baseDeclarationFlags) {
80199
80217
  return baseDeclarationFlags & 64 /* Abstract */ && (!isPropertyDeclaration(declaration) || !declaration.initializer) || isInterfaceDeclaration(declaration.parent);