From 595131868f6cea6fc0db05b39ac7e76846f1662d Mon Sep 17 00:00:00 2001 From: BigAru Date: Mon, 22 Oct 2018 06:43:21 +0200 Subject: [PATCH] add testcase and apply feedback from pr --- .../convertArrowFunctionOrFunctionExpression.ts | 2 +- ...ctionOrFunctionExpression_Availability_Anon.ts | 2 +- ...unctionExpression_Availability_Anon_FnParam.ts | 2 +- ...tionOrFunctionExpression_Availability_Arrow.ts | 2 +- ...nctionExpression_Availability_Arrow_FnParam.ts | 2 +- ...tionExpression_Availability_Arrow_MultiDecl.ts | 2 +- ...ionOrFunctionExpression_ToArrow_EmptyReturn.ts | 15 +++++++++++++++ 7 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_EmptyReturn.ts diff --git a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts index 3098fe3c6a4a9..0843ddea79b49 100644 --- a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts +++ b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts @@ -172,7 +172,7 @@ namespace ts.refactor.convertArrowFunctionOrFunctionExpression { const head = statements[0]; let body: ConciseBody; - if (func.body.statements.length === 1 && (isReturnStatement(head) || isExpressionStatement(head))) { + if (func.body.statements.length === 1 && ((isReturnStatement(head) && !!head.expression) || isExpressionStatement(head))) { body = head.expression!; suppressLeadingAndTrailingTrivia(body); copyComments(head, body, file, SyntaxKind.MultiLineCommentTrivia, /* hasTrailingNewLine */ false); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon.ts index 452d2ecd043d5..0fa3222617c1b 100644 --- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon.ts +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon.ts @@ -25,4 +25,4 @@ verify.not.refactorAvailable("Convert arrow function or function expression", "C goTo.select("r", "q"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to named function"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to anonymous function"); -verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); \ No newline at end of file +verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon_FnParam.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon_FnParam.ts index 8285478a57410..6c017aeeb739a 100644 --- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon_FnParam.ts +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Anon_FnParam.ts @@ -31,4 +31,4 @@ verify.refactorAvailable("Convert arrow function or function expression", "Conve goTo.select("p", "o"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to named function"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to anonymous function"); -verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); \ No newline at end of file +verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow.ts index 673b49ef703d2..619b2af822c5d 100644 --- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow.ts +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow.ts @@ -30,4 +30,4 @@ verify.not.refactorAvailable("Convert arrow function or function expression", "C goTo.select("p", "o"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to named function"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to anonymous function"); -verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); \ No newline at end of file +verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_FnParam.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_FnParam.ts index 75ffddeb39abc..6d309494da9f1 100644 --- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_FnParam.ts +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_FnParam.ts @@ -27,4 +27,4 @@ verify.not.refactorAvailable("Convert arrow function or function expression", "C goTo.select("r", "q"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to named function"); verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to anonymous function"); -verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); \ No newline at end of file +verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_MultiDecl.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_MultiDecl.ts index 1cff8b487d529..1e87f8bc0c30a 100644 --- a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_MultiDecl.ts +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_Availability_Arrow_MultiDecl.ts @@ -20,4 +20,4 @@ verify.not.refactorAvailable("Convert arrow function or function expression", "C goTo.select("t", "s"); verify.refactorAvailable("Convert arrow function or function expression", "Convert to named function"); verify.refactorAvailable("Convert arrow function or function expression", "Convert to anonymous function"); -verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); \ No newline at end of file +verify.not.refactorAvailable("Convert arrow function or function expression", "Convert to arrow function"); diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_EmptyReturn.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_EmptyReturn.ts new file mode 100644 index 0000000000000..e77adca0eb8ae --- /dev/null +++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToArrow_EmptyReturn.ts @@ -0,0 +1,15 @@ +/// + +//// const foo = /*x*/f/*y*/unction() { +//// return; +//// }; + +goTo.select("x", "y"); +edit.applyRefactor({ + refactorName: "Convert arrow function or function expression", + actionName: "Convert to arrow function", + actionDescription: "Convert to arrow function", + newContent: `const foo = () => { + return; +};`, +});