mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Use comparable relation for check + fix parsing issue
This commit is contained in:
@@ -40550,12 +40550,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
error(node.name, Diagnostics.constructor_cannot_be_used_as_a_parameter_property_name);
|
||||
}
|
||||
}
|
||||
if (hasSyntacticModifier(node, ModifierFlags.Deferred)) {
|
||||
const funcType = node.dotDotDotToken ? createArrayType(globalFunctionType, /*readonly*/ true) : globalFunctionType;
|
||||
if (!isTypeAssignableTo(getTypeOfSymbol(node.symbol), funcType)) {
|
||||
error(node, Diagnostics.A_deferred_parameter_must_have_a_function_type);
|
||||
}
|
||||
}
|
||||
if (!node.initializer && isOptionalDeclaration(node) && isBindingPattern(node.name) && (func as FunctionLikeDeclaration).body) {
|
||||
error(node, Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature);
|
||||
}
|
||||
@@ -40579,6 +40573,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
|
||||
if (node.dotDotDotToken && !isBindingPattern(node.name) && !isTypeAssignableTo(getReducedType(getTypeOfSymbol(node.symbol)), anyReadonlyArrayType)) {
|
||||
error(node, Diagnostics.A_rest_parameter_must_be_of_an_array_type);
|
||||
}
|
||||
if (hasSyntacticModifier(node, ModifierFlags.Deferred)) {
|
||||
const funcType = node.dotDotDotToken ? createArrayType(globalFunctionType, /*readonly*/ true) : globalFunctionType;
|
||||
if (!areTypesComparable(getTypeOfSymbol(node.symbol), funcType)) {
|
||||
error(node, Diagnostics.A_deferred_parameter_must_have_a_type_that_permits_functions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function checkTypePredicate(node: TypePredicateNode): void {
|
||||
|
||||
@@ -3915,7 +3915,7 @@
|
||||
"category": "Error",
|
||||
"code": 2868
|
||||
},
|
||||
"A 'deferred' parameter must have a function type.": {
|
||||
"A 'deferred' parameter must have a type that permits functions.": {
|
||||
"category": "Error",
|
||||
"code": 2869
|
||||
},
|
||||
|
||||
@@ -4842,6 +4842,7 @@ namespace Parser {
|
||||
// Skip modifiers
|
||||
parseModifiers(/*allowDecorators*/ false);
|
||||
}
|
||||
parseOptional(SyntaxKind.DotDotDotToken);
|
||||
if (isIdentifier() || token() === SyntaxKind.ThisKeyword) {
|
||||
nextToken();
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user