mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-11 10:00:13 -06:00
Synthetic signature uses existing parameter names
This commit is contained in:
parent
d724517110
commit
469745b181
@ -20,7 +20,7 @@ namespace ts.codefix {
|
||||
|
||||
const insertion = getMissingMembersInsertion(classDecl, abstractAndNonPrivateExtendsSymbols, checker, context.newLineCharacter);
|
||||
|
||||
if (insertion) {
|
||||
if (insertion.length) {
|
||||
return [{
|
||||
description: getLocaleSpecificMessage(Diagnostics.Implement_inherited_abstract_class),
|
||||
changes: [{
|
||||
|
||||
@ -93,6 +93,7 @@ namespace ts.codefix {
|
||||
newSignatureDeclaration.name = signatures[0].getDeclaration().name;
|
||||
|
||||
let maxNonRestArgs = -1;
|
||||
let maxArgsIndex = 0;
|
||||
let minArgumentCount = signatures[0].minArgumentCount;
|
||||
let hasRestParameter = false;
|
||||
for (let i = 0; i < signatures.length; i++) {
|
||||
@ -102,8 +103,10 @@ namespace ts.codefix {
|
||||
const nonRestLength = sig.parameters.length - (sig.hasRestParameter ? 1 : 0);
|
||||
if (nonRestLength > maxNonRestArgs) {
|
||||
maxNonRestArgs = nonRestLength;
|
||||
maxArgsIndex = i;
|
||||
}
|
||||
}
|
||||
const maxArgsParameterSymbolNames = signatures[maxArgsIndex].getParameters().map(symbol => symbol.getName());
|
||||
|
||||
const anyTypeNode: TypeNode = createNode(SyntaxKind.AnyKeyword) as TypeNode;
|
||||
const optionalToken = createToken(SyntaxKind.QuestionToken);
|
||||
@ -130,7 +133,7 @@ namespace ts.codefix {
|
||||
|
||||
function createParameterDeclaration(index: number, minArgCount: number, typeNode: TypeNode, enclosingSignatureDeclaration: SignatureDeclaration): ParameterDeclaration {
|
||||
const newParameter = createNode(SyntaxKind.Parameter) as ParameterDeclaration;
|
||||
newParameter.symbol = checker.createSymbol(SymbolFlags.FunctionScopedVariable, "arg" + index);
|
||||
newParameter.symbol = checker.createSymbol(SymbolFlags.FunctionScopedVariable, maxArgsParameterSymbolNames[index] || "rest");
|
||||
newParameter.symbol.valueDeclaration = newParameter;
|
||||
newParameter.symbol.declarations = [newParameter];
|
||||
newParameter.type = typeNode;
|
||||
|
||||
@ -12,7 +12,7 @@ verify.rangeAfterCodeFix(`
|
||||
f(a: number, b: string): boolean;
|
||||
f(a: string, b: number): Function;
|
||||
f(a: string): Function;
|
||||
f(arg0: any, arg1?: any) {
|
||||
f(a: any, b?: any) {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
`);
|
||||
|
||||
@ -44,7 +44,7 @@ verify.rangeAfterCodeFix(`
|
||||
[Symbol.toPrimitive](hint: "number"): number;
|
||||
[Symbol.toPrimitive](hint: "default"): number;
|
||||
[Symbol.toPrimitive](hint: "string"): string;
|
||||
[Symbol.toPrimitive](arg0: any) {
|
||||
[Symbol.toPrimitive](hint: any) {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
[Symbol.toStringTag]: string;
|
||||
|
||||
@ -12,7 +12,7 @@ verify.rangeAfterCodeFix(`
|
||||
method(a: number, b: string): boolean;
|
||||
method(a: string, b: number): Function;
|
||||
method(a: string): Function;
|
||||
method(arg0: any, arg1?: any) {
|
||||
method(a: any, b?: any) {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
`);
|
||||
|
||||
@ -12,7 +12,7 @@ verify.rangeAfterCodeFix(`
|
||||
method(a: number, ...b: string[]): boolean;
|
||||
method(a: string, ...b: number[]): Function;
|
||||
method(a: string): Function;
|
||||
method(arg0: any, ...arg1?: any[]) {
|
||||
method(a: any, ...b?: any[]) {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
`);
|
||||
|
||||
@ -12,7 +12,7 @@ verify.rangeAfterCodeFix(`
|
||||
method(a: number, ...b: string[]): boolean;
|
||||
method(a: string, b: number): Function;
|
||||
method(a: string): Function;
|
||||
method(arg0: any, arg1?: any, ...arg2?: any[]) {
|
||||
method(a: any, b?: any, ...rest?: any[]) {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
`);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user