From 461e6035c1cc4392510431250dc7a9ff2acb44f7 Mon Sep 17 00:00:00 2001 From: Ika Date: Thu, 6 Sep 2018 09:04:37 +0800 Subject: [PATCH] fix(typescript): preserve necessary parens for TSOptionalType (#5056) --- src/language-js/needs-parens.js | 3 ++- .../__snapshots__/jsfmt.spec.js.snap | 7 +++++++ tests/typescript_optional_type/complex.ts | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 tests/typescript_optional_type/complex.ts diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index d665e7ad..e2ae1bed 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -317,7 +317,8 @@ function needsParens(path, options) { parent.type === "TSTypeReference") && (node.typeAnnotation.type === "TSTypeAnnotation" && node.typeAnnotation.typeAnnotation.type !== "TSFunctionType" && - grandParent.type !== "TSTypeOperator") + grandParent.type !== "TSTypeOperator" && + grandParent.type !== "TSOptionalType") ) { return false; } diff --git a/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap b/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap index feb340e8..3debf7ef 100644 --- a/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`complex.ts - typescript-verify 1`] = ` +type T = [("a" | "b")?]; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +type T = [("a" | "b")?]; + +`; + exports[`simple.ts - typescript-verify 1`] = ` type X = [number, string?]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/typescript_optional_type/complex.ts b/tests/typescript_optional_type/complex.ts new file mode 100644 index 00000000..f5c170a3 --- /dev/null +++ b/tests/typescript_optional_type/complex.ts @@ -0,0 +1 @@ +type T = [("a" | "b")?];