From 819651eb5f99fbfbba9b714a23cd0c86b1167e0d Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Wed, 31 Mar 2021 01:29:02 +0300 Subject: [PATCH] fix(43313): add parentheses to a type assertions (#43315) --- src/services/utilities.ts | 6 ++++-- .../refactorAddOrRemoveBracesToArrowFunction29.ts | 13 +++++++++++++ .../refactorAddOrRemoveBracesToArrowFunction30.ts | 13 +++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction29.ts create mode 100644 tests/cases/fourslash/refactorAddOrRemoveBracesToArrowFunction30.ts diff --git a/src/services/utilities.ts b/src/services/utilities.ts index d4662783d87..f398afc46c0 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -2516,8 +2516,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 00000000000..b189082832e --- /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 00000000000..0cef0c3c7fe --- /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);`, +});