@@ -15122,11 +15122,17 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
15122
15122
return symbol && withAugmentations ? getMergedSymbol(symbol) : symbol;
15123
15123
}
15124
15124
15125
+ function hasEffectiveQuestionToken(node: ParameterDeclaration | JSDocParameterTag | JSDocPropertyTag) {
15126
+ return hasQuestionToken(node) || isOptionalJSDocPropertyLikeTag(node) || isParameter(node) && isJSDocOptionalParameter(node);
15127
+ }
15128
+
15125
15129
function isOptionalParameter(node: ParameterDeclaration | JSDocParameterTag | JSDocPropertyTag) {
15126
- if (hasQuestionToken(node) || isOptionalJSDocPropertyLikeTag(node) || isJSDocOptionalParameter (node)) {
15130
+ if (hasEffectiveQuestionToken (node)) {
15127
15131
return true;
15128
15132
}
15129
-
15133
+ if (!isParameter(node)) {
15134
+ return false;
15135
+ }
15130
15136
if (node.initializer) {
15131
15137
const signature = getSignatureFromDeclaration(node.parent);
15132
15138
const parameterIndex = node.parent.parameters.indexOf(node);
@@ -15256,10 +15262,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
15256
15262
}
15257
15263
15258
15264
// Record a new minimum argument count if this is not an optional parameter
15259
- const isOptionalParameter = isOptionalJSDocPropertyLikeTag(param) ||
15260
- param.initializer || param.questionToken || isRestParameter(param) ||
15261
- iife && parameters.length > iife.arguments.length && !type ||
15262
- isJSDocOptionalParameter(param);
15265
+ const isOptionalParameter = hasEffectiveQuestionToken(param) ||
15266
+ isParameter(param) && param.initializer || isRestParameter(param) ||
15267
+ iife && parameters.length > iife.arguments.length && !type;
15263
15268
if (!isOptionalParameter) {
15264
15269
minArgumentCount = parameters.length;
15265
15270
}
@@ -49601,7 +49606,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
49601
49606
return grammarErrorOnNode(parameter.name, Diagnostics.A_rest_parameter_cannot_have_an_initializer);
49602
49607
}
49603
49608
}
49604
- else if (isOptionalParameter (parameter)) {
49609
+ else if (hasEffectiveQuestionToken (parameter)) {
49605
49610
seenOptionalParameter = true;
49606
49611
if (parameter.questionToken && parameter.initializer) {
49607
49612
return grammarErrorOnNode(parameter.name, Diagnostics.Parameter_cannot_have_question_mark_and_initializer);
0 commit comments