From 3c6f6d6adf7a400dcc59a7139393686810cb5b6d Mon Sep 17 00:00:00 2001 From: Ika Date: Sat, 24 Nov 2018 22:09:16 +0800 Subject: [PATCH 1/6] test: add tests --- tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap | 6 ++++++ tests/optional_chaining/chaining.js | 3 +++ 2 files changed, 9 insertions(+) diff --git a/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap b/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap index b9ba530fb9d4..6e9e46977aac 100644 --- a/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap +++ b/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap @@ -23,6 +23,9 @@ a?.b[3].c?.(x).d.e?.f[3].g?.(y).h; (a?.b)?.c.d?.e; (a ? b : c)?.d; + +(list || list2)?.length; +(list || list2)?.[(list || list2)]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ var street = user.address?.street; var fooValue = myForm.querySelector("input[name=foo]")?.value; @@ -47,4 +50,7 @@ a?.b[3].c?.(x).d.e?.f[3].g?.(y).h; a?.b?.c.d?.e; (a ? b : c)?.d; +list || list2?.length; +list || list2?.[list || list2]; + `; diff --git a/tests/optional_chaining/chaining.js b/tests/optional_chaining/chaining.js index a5fd7d762425..58e3a59ad192 100644 --- a/tests/optional_chaining/chaining.js +++ b/tests/optional_chaining/chaining.js @@ -20,3 +20,6 @@ a?.b[3].c?.(x).d.e?.f[3].g?.(y).h; (a?.b)?.c.d?.e; (a ? b : c)?.d; + +(list || list2)?.length; +(list || list2)?.[(list || list2)]; From 39ff6a535a010a77e2d7d8fc2b83fa38529ef109 Mon Sep 17 00:00:00 2001 From: Ika Date: Sat, 24 Nov 2018 22:09:26 +0800 Subject: [PATCH 2/6] fix(javascript): add missing parens for binary in optionalMember --- src/language-js/needs-parens.js | 1 + tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index d81b31252a9f..68a92cced7b0 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -258,6 +258,7 @@ function needsParens(path, options) { return true; case "MemberExpression": + case "OptionalMemberExpression": return name === "object" && parent.object === node; case "AssignmentExpression": diff --git a/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap b/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap index 6e9e46977aac..c6ef91009603 100644 --- a/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap +++ b/tests/optional_chaining/__snapshots__/jsfmt.spec.js.snap @@ -50,7 +50,7 @@ a?.b[3].c?.(x).d.e?.f[3].g?.(y).h; a?.b?.c.d?.e; (a ? b : c)?.d; -list || list2?.length; -list || list2?.[list || list2]; +(list || list2)?.length; +(list || list2)?.[list || list2]; `; From e59968e3e37578f00e04bd22091d18f623369202 Mon Sep 17 00:00:00 2001 From: Ika Date: Sun, 25 Nov 2018 09:02:55 +0800 Subject: [PATCH 3/6] chore: trigger netlify From a97801b4e3689d228b01000606364f67c6c0f031 Mon Sep 17 00:00:00 2001 From: Ika Date: Sun, 25 Nov 2018 09:09:11 +0800 Subject: [PATCH 4/6] chore: trigger netlify From 8f35f1eaf0eb02b35c61389638b795a32b5d7aa2 Mon Sep 17 00:00:00 2001 From: Ika Date: Sun, 25 Nov 2018 09:15:16 +0800 Subject: [PATCH 5/6] chore: trigger netlify From 5c57954d2607d0586b7765f5d1ae1b54fcdf73f3 Mon Sep 17 00:00:00 2001 From: Ika Date: Sun, 25 Nov 2018 10:14:14 +0800 Subject: [PATCH 6/6] chore: trigger netlify