fix(50077): skip convertOverloadListToSingleSignature refactoring if position is in function body (#50093)

This commit is contained in:
Oleksandr T 2022-08-03 23:56:42 +03:00 committed by GitHub
parent a3a5e009a5
commit 59c91f6ce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 0 deletions

View File

@ -185,6 +185,10 @@ ${newComment.split("\n").map(c => ` * ${c}`).join("\n")}
if (!containingDecl) {
return;
}
if (isFunctionLikeDeclaration(containingDecl) && containingDecl.body && rangeContainsPosition(containingDecl.body, startPosition)) {
return;
}
const checker = program.getTypeChecker();
const signatureSymbol = containingDecl.symbol;
if (!signatureSymbol) {

View File

@ -0,0 +1,22 @@
/// <reference path="fourslash.ts" />
/////*a1*/function foo(a: string): void;
/////*a2*/function foo(a: number): void;/*b2*/
/////*a3*/function foo(a: number | string): void/*b3*/ /*a4*/{
//// /*a5*/console.log(1);/*b5*/
////}/*b4*//*b1*/
goTo.select("a1", "b1");
verify.refactorAvailable("Convert overload list to single signature", "Convert overload list to single signature", ts.Diagnostics.Convert_overload_list_to_single_signature.message);
goTo.select("a2", "b2");
verify.refactorAvailable("Convert overload list to single signature", "Convert overload list to single signature", ts.Diagnostics.Convert_overload_list_to_single_signature.message);
goTo.select("a3", "b3");
verify.refactorAvailable("Convert overload list to single signature", "Convert overload list to single signature", ts.Diagnostics.Convert_overload_list_to_single_signature.message);
goTo.select("a4", "b4");
verify.not.refactorAvailable("Convert overload list to single signature", "Convert overload list to single signature", ts.Diagnostics.Convert_overload_list_to_single_signature.message);
goTo.select("a5", "b5");
verify.not.refactorAvailable("Convert overload list to single signature", "Convert overload list to single signature", ts.Diagnostics.Convert_overload_list_to_single_signature.message);