From 86e332b12f859b63cdaa40963ab825c55aaaa2da Mon Sep 17 00:00:00 2001 From: Jorg Sowa Date: Mon, 23 Mar 2026 22:02:06 +0100 Subject: [PATCH] fix: correct "silence" typo to "silent" in needsParens The PHP parser emits node kind "silent" (not "silence"), so the case "silence" branch was dead code. Silent expressions with parens (e.g. (@$obj)->method()) would always have their parens dropped. --- src/needs-parens.mjs | 2 +- tests/parens/__snapshots__/jsfmt.spec.mjs.snap | 12 ++++++------ tests/silent/__snapshots__/jsfmt.spec.mjs.snap | 4 ++++ tests/silent/silent.php | 2 ++ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/needs-parens.mjs b/src/needs-parens.mjs index c234c8da7..8ea379e2c 100644 --- a/src/needs-parens.mjs +++ b/src/needs-parens.mjs @@ -215,7 +215,7 @@ function needsParens(path, options) { default: return false; } - case "silence": + case "silent": case "cast": // TODO: bug https://github.com/glayzzle/php-parser/issues/172 return node.parenthesizedExpression; diff --git a/tests/parens/__snapshots__/jsfmt.spec.mjs.snap b/tests/parens/__snapshots__/jsfmt.spec.mjs.snap index ddf47548b..31670dbe0 100644 --- a/tests/parens/__snapshots__/jsfmt.spec.mjs.snap +++ b/tests/parens/__snapshots__/jsfmt.spec.mjs.snap @@ -1461,7 +1461,7 @@ $var = $page > 0 || ($page == 0 && $this->forcePageParam); $var = $page > 0 || ($page == 0 && $this->forcePageParam); @foo() || @foo(); -@foo() || @foo(); +(@foo()) || (@foo()); $var = @foo() || @foo(); $var = @foo() || @foo(); @@ -2228,7 +2228,7 @@ $var = $page > 0 || ($page == 0 && $this->forcePageParam); $var = $page > 0 || ($page == 0 && $this->forcePageParam); @foo() || @foo(); -@foo() || @foo(); +(@foo()) || (@foo()); $var = @foo() || @foo(); $var = @foo() || @foo(); @@ -6192,7 +6192,7 @@ echo @(1 / 0); @foo(); $var = @foo(); -$var = @foo(); +$var = (@foo()); $var = @call() || @other(); $var = @call() || @other_class(); @@ -6204,7 +6204,7 @@ $var = @$cache[$key]; $var = @new MyClass(); $var = @new MyClass(); -($var = @include "file.php") or die("Could not find file.php!"); +($var = (@include "file.php")) or die("Could not find file.php!"); $var = @$_GET["data"]; @@ -6305,7 +6305,7 @@ echo @(1 / 0); @foo(); $var = @foo(); -$var = @foo(); +$var = (@foo()); $var = @call() || @other(); $var = @call() || @other_class(); @@ -6317,7 +6317,7 @@ $var = @$cache[$key]; $var = @new MyClass(); $var = @new MyClass(); -($var = @include "file.php") or die("Could not find file.php!"); +($var = (@include "file.php")) or die("Could not find file.php!"); $var = @$_GET["data"]; diff --git a/tests/silent/__snapshots__/jsfmt.spec.mjs.snap b/tests/silent/__snapshots__/jsfmt.spec.mjs.snap index 523f38a29..eb474f11e 100644 --- a/tests/silent/__snapshots__/jsfmt.spec.mjs.snap +++ b/tests/silent/__snapshots__/jsfmt.spec.mjs.snap @@ -19,6 +19,8 @@ $variable = @foo()->veryVeryVeryVeryVeryLongMethod()->veryVeryVeryVeryVeryLongMe $variable = @foo('VeryVeryVeryVeryVeryVeryLongArgument', 'VeryVeryVeryVeryVeryVeryLongArgument', 'VeryVeryVeryVeryVeryVeryLongArgument'); @trigger_error($error, E_USER_DEPRECATED); $value = @ $cache[$key]; +(@$obj)->method(); +(@$arr)[0]; =====================================output===================================== method(); +(@$arr)[0]; ================================================================================ `; diff --git a/tests/silent/silent.php b/tests/silent/silent.php index 0273e482f..95ba81f42 100644 --- a/tests/silent/silent.php +++ b/tests/silent/silent.php @@ -11,3 +11,5 @@ $variable = @foo('VeryVeryVeryVeryVeryVeryLongArgument', 'VeryVeryVeryVeryVeryVeryLongArgument', 'VeryVeryVeryVeryVeryVeryLongArgument'); @trigger_error($error, E_USER_DEPRECATED); $value = @ $cache[$key]; +(@$obj)->method(); +(@$arr)[0];