diff --git a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
index f631f1387e2..fdef2e48f2e 100644
--- a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
+++ b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
@@ -41,6 +41,7 @@ import {
RefactorContext,
RefactorEditInfo,
ReturnStatement,
+ setTextRange,
SourceFile,
Statement,
suppressLeadingAndTrailingTrivia,
@@ -237,6 +238,7 @@ function convertToBlock(body: ConciseBody): Block {
if (isExpression(body)) {
const returnStatement = factory.createReturnStatement(body);
const file = body.getSourceFile();
+ setTextRange(returnStatement, body);
suppressLeadingAndTrailingTrivia(returnStatement);
copyTrailingAsLeadingComments(body, returnStatement, file, /* commentKind */ undefined, /* hasTrailingNewLine */ true);
return factory.createBlock([returnStatement], /* multiLine */ true);
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction1.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction1.ts
new file mode 100644
index 00000000000..c377ad8c41f
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction1.ts
@@ -0,0 +1,15 @@
+///
+
+/////*a*/const fn = () =>
+//// async () => { };/*b*/
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to named function",
+ actionDescription: "Convert to named function",
+ newContent:
+`function fn() {
+ return async () => { };
+}`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction2.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction2.ts
new file mode 100644
index 00000000000..1bbe283e4d5
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction2.ts
@@ -0,0 +1,15 @@
+///
+
+/////*a*/const fn = () =>
+//// async function() { }/*b*/
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to named function",
+ actionDescription: "Convert to named function",
+ newContent:
+`function fn() {
+ return async function() { };
+}`,
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction3.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction3.ts
new file mode 100644
index 00000000000..23ff02bbc29
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_InnerAsyncFunction3.ts
@@ -0,0 +1,15 @@
+///
+
+/////*a*/const fn = () =>
+//// async function*() { }/*b*/
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to named function",
+ actionDescription: "Convert to named function",
+ newContent:
+`function fn() {
+ return async function*() { };
+}`,
+});