diff --git a/src/services/utilities.ts b/src/services/utilities.ts
index 74315895927ed..600cd40c07cbb 100644
--- a/src/services/utilities.ts
+++ b/src/services/utilities.ts
@@ -2477,8 +2477,10 @@ namespace ts {
}
/* @internal */
- export function needsParentheses(expression: Expression) {
- return isBinaryExpression(expression) && expression.operatorToken.kind === SyntaxKind.CommaToken || isObjectLiteralExpression(expression);
+ export function needsParentheses(expression: Expression): boolean {
+ return isBinaryExpression(expression) && expression.operatorToken.kind === SyntaxKind.CommaToken
+ || isObjectLiteralExpression(expression)
+ || isAsExpression(expression) && isObjectLiteralExpression(expression.expression);
}
export function getContextualTypeFromParent(node: Expression, checker: TypeChecker): Type | undefined {
diff --git a/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction29.ts b/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction29.ts
new file mode 100644
index 0000000000000..b189082832e05
--- /dev/null
+++ b/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction29.ts
@@ -0,0 +1,13 @@
+///
+
+////const a = /*a*/()/*b*/ => {
+//// return {} as {}
+////};
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Add or remove braces in an arrow function",
+ actionName: "Remove braces from arrow function",
+ actionDescription: "Remove braces from arrow function",
+ newContent: `const a = () => ({} as {});`,
+});
diff --git a/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction30.ts b/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction30.ts
new file mode 100644
index 0000000000000..0cef0c3c7fee6
--- /dev/null
+++ b/tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction30.ts
@@ -0,0 +1,13 @@
+///
+
+////const a = /*a*/()/*b*/ => {
+//// return {} as object
+////};
+
+goTo.select("a", "b");
+edit.applyRefactor({
+ refactorName: "Add or remove braces in an arrow function",
+ actionName: "Remove braces from arrow function",
+ actionDescription: "Remove braces from arrow function",
+ newContent: `const a = () => ({} as object);`,
+});