diff --git a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
index 6987fdd4919..75cf29f9d79 100644
--- a/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
+++ b/src/services/refactors/convertArrowFunctionOrFunctionExpression.ts
@@ -177,7 +177,11 @@ namespace ts.refactor.convertArrowFunctionOrFunctionExpression {
function convertToBlock(body: ConciseBody): Block {
if (isExpression(body)) {
- return factory.createBlock([factory.createReturnStatement(body)], /* multiLine */ true);
+ const returnStatement = factory.createReturnStatement(body);
+ const file = body.getSourceFile();
+ suppressLeadingAndTrailingTrivia(returnStatement);
+ copyTrailingAsLeadingComments(body, returnStatement, file, /* commentKind */ undefined, /* hasTrailingNewLine */ true);
+ return factory.createBlock([returnStatement], /* multiLine */ true);
}
else {
return body;
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment1.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment1.ts
new file mode 100644
index 00000000000..2acda7909b5
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment1.ts
@@ -0,0 +1,19 @@
+///
+
+////const foo = /*a*/()/*b*/ => /**
+//// * comment
+//// */
+////1
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to anonymous function",
+ actionDescription: "Convert to anonymous function",
+ newContent: `const foo = function() {
+ /**
+ * comment
+ */
+ return 1;
+}`
+});
diff --git a/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment2.ts b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment2.ts
new file mode 100644
index 00000000000..8790718d61b
--- /dev/null
+++ b/tests/cases/fourslash/refactorConvertArrowFunctionOrFunctionExpression_ToAnonymous_Comment2.ts
@@ -0,0 +1,15 @@
+///
+
+////const foo = /*a*/()/*b*/ => // comment
+////1
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Convert arrow function or function expression",
+ actionName: "Convert to anonymous function",
+ actionDescription: "Convert to anonymous function",
+ newContent: `const foo = function() {
+ // comment
+ return 1;
+}`
+});