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);`, +});