mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 21:36:50 -05:00
fix(46615): remove useless assertion. change error suggestion for rest params (#46628)
This commit is contained in:
@@ -21221,9 +21221,10 @@ namespace ts {
|
||||
(isCallSignatureDeclaration(param.parent) || isMethodSignature(param.parent) || isFunctionTypeNode(param.parent)) &&
|
||||
param.parent.parameters.indexOf(param) > -1 &&
|
||||
(resolveName(param, param.name.escapedText, SymbolFlags.Type, undefined, param.name.escapedText, /*isUse*/ true) ||
|
||||
param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) {
|
||||
param.name.originalKeywordKind && isTypeNodeKind(param.name.originalKeywordKind))) {
|
||||
const newName = "arg" + param.parent.parameters.indexOf(param);
|
||||
errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, declarationNameToString(param.name));
|
||||
const typeName = declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
|
||||
errorOrSuggestion(noImplicitAny, declaration, Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
|
||||
return;
|
||||
}
|
||||
diagnostic = (declaration as ParameterDeclaration).dotDotDotToken ?
|
||||
|
||||
@@ -14,24 +14,24 @@ namespace ts.codefix {
|
||||
|
||||
function makeChange(changeTracker: textChanges.ChangeTracker, sourceFile: SourceFile, pos: number) {
|
||||
const token = getTokenAtPosition(sourceFile, pos);
|
||||
if (!isIdentifier(token)) {
|
||||
return Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a " + Debug.formatSyntaxKind(token.kind));
|
||||
}
|
||||
const param = token.parent;
|
||||
if (!isParameter(param)) {
|
||||
return Debug.fail("Tried to add a parameter name to a non-parameter: " + Debug.formatSyntaxKind(token.kind));
|
||||
}
|
||||
|
||||
const i = param.parent.parameters.indexOf(param);
|
||||
Debug.assert(!param.type, "Tried to add a parameter name to a parameter that already had one.");
|
||||
Debug.assert(i > -1, "Parameter not found in parent parameter list.");
|
||||
|
||||
const typeNode = factory.createTypeReferenceNode(param.name as Identifier, /*typeArguments*/ undefined);
|
||||
const replacement = factory.createParameterDeclaration(
|
||||
/*decorators*/ undefined,
|
||||
param.modifiers,
|
||||
param.dotDotDotToken,
|
||||
"arg" + i,
|
||||
param.questionToken,
|
||||
factory.createTypeReferenceNode(token, /*typeArguments*/ undefined),
|
||||
param.dotDotDotToken ? factory.createArrayTypeNode(typeNode) : typeNode,
|
||||
param.initializer);
|
||||
changeTracker.replaceNode(sourceFile, token, replacement);
|
||||
changeTracker.replaceNode(sourceFile, param, replacement);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user