From 00ec91bfdee2e9bc592e4d1cf842507e50a86bbb Mon Sep 17 00:00:00 2001 From: t-mangoe Date: Mon, 8 Aug 2022 02:08:28 +0900 Subject: [PATCH] Added condition for '+' case. (#13115) Co-authored-by: Sosuke Suzuki --- src/language-js/utils/index.js | 19 ++++++++++++- tests/format/js/method-chain/13018.js | 8 ++++++ .../__snapshots__/jsfmt.spec.js.snap | 28 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 tests/format/js/method-chain/13018.js diff --git a/src/language-js/utils/index.js b/src/language-js/utils/index.js index 5e99afd3a..1a11a0b0b 100644 --- a/src/language-js/utils/index.js +++ b/src/language-js/utils/index.js @@ -883,9 +883,26 @@ function isSimpleCallArgument(node, depth) { ); } + const targetUnaryExpressionOperators = { + "!": true, + "-": true, + "+": true, + "~": true, + }; if ( node.type === "UnaryExpression" && - (node.operator === "!" || node.operator === "-") + targetUnaryExpressionOperators[node.operator] + ) { + return isSimpleCallArgument(node.argument, depth); + } + + const targetUpdateExpressionOperators = { + "++": true, + "--": true, + }; + if ( + node.type === "UpdateExpression" && + targetUpdateExpressionOperators[node.operator] ) { return isSimpleCallArgument(node.argument, depth); } diff --git a/tests/format/js/method-chain/13018.js b/tests/format/js/method-chain/13018.js new file mode 100644 index 000000000..a0a4dc5eb --- /dev/null +++ b/tests/format/js/method-chain/13018.js @@ -0,0 +1,8 @@ +foo(_a).bar().leet(); +foo(-a).bar().leet(); +foo(+a).bar().leet(); +foo(~a).bar().leet(); +foo(++a).bar().leet(); +foo(--a).bar().leet(); +foo(a++).bar().leet(); +foo(a--).bar().leet(); diff --git a/tests/format/js/method-chain/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/method-chain/__snapshots__/jsfmt.spec.js.snap index 7beed1a04..d62714180 100644 --- a/tests/format/js/method-chain/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/method-chain/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`13018.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "flow", "typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +foo(_a).bar().leet(); +foo(-a).bar().leet(); +foo(+a).bar().leet(); +foo(~a).bar().leet(); +foo(++a).bar().leet(); +foo(--a).bar().leet(); +foo(a++).bar().leet(); +foo(a--).bar().leet(); + +=====================================output===================================== +foo(_a).bar().leet(); +foo(-a).bar().leet(); +foo(+a).bar().leet(); +foo(~a).bar().leet(); +foo(++a).bar().leet(); +foo(--a).bar().leet(); +foo(a++).bar().leet(); +foo(a--).bar().leet(); + +================================================================================ +`; + exports[`bracket_0.js format 1`] = ` ====================================options===================================== parsers: ["babel", "flow", "typescript"]