@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 +111 -93
- package/lib/tsserver.js +198 -195
- package/lib/typescript.js +198 -195
- package/lib/typingsInstaller.js +6 -7
- package/package.json +2 -2
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80123
|
-
|
|
80124
|
-
|
|
80125
|
-
|
|
80126
|
-
|
|
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 */ ? (
|
|
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 = (
|
|
80172
|
-
if (uninitialized && !(derived.flags & 33554432 /* Transient */) && !(baseDeclarationFlags & 64 /* Abstract */) && !(derivedDeclarationFlags & 64 /* Abstract */) && !((
|
|
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);
|