diff --git a/src/util.mjs b/src/util.mjs index dd2f5f2bf..d579e1a13 100644 --- a/src/util.mjs +++ b/src/util.mjs @@ -682,6 +682,7 @@ function isSimpleCallArgument(node, depth = 2) { return ( parts.length <= depth && + (node.arguments ?? []).every(isChildSimple) && parts.every((node) => isLookupNode(node) ? isChildSimple(node.offset) diff --git a/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap b/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap index 4d8631650..8f0106f20 100644 --- a/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap +++ b/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap @@ -454,6 +454,12 @@ $var = Foo::keys($items)->filter(function ($x) { return $x > 2; })->map(function VarDumper::dump($item); }); +$a->foo(get())->bar()->baz(); +$a->foo($b->method())->bar()->baz(); +$a->foo(fn() => 1)->bar()->baz(); +$a->foo(fn($x) => $x * 2)->bar()->baz(); +$a->foo(get(inner(deepest())))->bar()->baz(); + =====================================output===================================== foo(get())->bar()->baz(); +$a->foo($b->method())->bar()->baz(); +$a->foo(fn() => 1)->bar()->baz(); +$a->foo(fn($x) => $x * 2)->bar()->baz(); +$a->foo(get(inner(deepest()))) + ->bar() + ->baz(); + ================================================================================ `; diff --git a/tests/member_chain/member_chain.php b/tests/member_chain/member_chain.php index e770a0a84..4854a3500 100644 --- a/tests/member_chain/member_chain.php +++ b/tests/member_chain/member_chain.php @@ -92,3 +92,9 @@ (new static(func_get_args()))->offset(10)->push($this)->each(function ($item) { VarDumper::dump($item); }); + +$a->foo(get())->bar()->baz(); +$a->foo($b->method())->bar()->baz(); +$a->foo(fn() => 1)->bar()->baz(); +$a->foo(fn($x) => $x * 2)->bar()->baz(); +$a->foo(get(inner(deepest())))->bar()->baz();