File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -277,10 +277,10 @@ function isDocNode(node) {
277277 * Heredoc/Nowdoc nodes need a trailing linebreak if they
278278 * appear as function arguments or array elements
279279 */
280- function docShouldHaveTrailingNewline ( path ) {
281- const node = path . getValue ( ) ;
282- const parent = path . getParentNode ( ) ;
283- const parentParent = path . getParentNode ( 1 ) ;
280+ function docShouldHaveTrailingNewline ( path , recurse = 0 ) {
281+ const node = path . getNode ( recurse ) ;
282+ const parent = path . getNode ( recurse + 1 ) ;
283+ const parentParent = path . getNode ( recurse + 2 ) ;
284284
285285 if ( ! parent ) {
286286 return false ;
@@ -319,11 +319,9 @@ function docShouldHaveTrailingNewline(path) {
319319 }
320320
321321 if ( parent . kind === "bin" ) {
322- if ( parentParent && parentParent . kind === "bin" ) {
323- return true ;
324- }
325-
326- return parent . left === node ;
322+ return (
323+ parent . left === node || docShouldHaveTrailingNewline ( path , recurse + 1 )
324+ ) ;
327325 }
328326
329327 if ( parent . kind === "case" && parent . test === node ) {
@@ -369,6 +367,10 @@ function docShouldHaveTrailingNewline(path) {
369367 return index !== lastIndex ;
370368 }
371369
370+ if ( parent . kind === "retif" ) {
371+ return docShouldHaveTrailingNewline ( path , recurse + 1 ) ;
372+ }
373+
372374 return false ;
373375}
374376
Original file line number Diff line number Diff line change @@ -929,8 +929,7 @@ string
929929string
930930string
931931EOD
932- ,
933- $var
932+ , $var
934933);
935934
936935$array = [
@@ -958,6 +957,33 @@ $php73FlexibleNowdoc2 = <<<'EOD'
958957 c
959958 EOD;
960959
960+ [
961+ $var ? "foo" : <<<'EOD'
962+ string
963+ EOD
964+ , "bar"
965+ ];
966+
967+ [
968+ $var ? "foo" : $var2 ? "bar" : <<<'EOD'
969+ string
970+ EOD
971+ , "bar"
972+ ];
973+
974+ [
975+ $var ?? <<<'EOD'
976+ string
977+ EOD
978+ , "bar"
979+ ];
980+
981+ [
982+ $a ?? $b ?? <<<'EOD'
983+ string
984+ EOD
985+ , "bar"
986+ ];
961987=====================================output=====================================
962988<?php
963989
@@ -1998,6 +2024,47 @@ $php73FlexibleNowdoc2 = <<<'EOD'
19982024 c
19992025EOD;
20002026
2027+ [
2028+ $var
2029+ ? "foo"
2030+ : <<<'EOD'
2031+ string
2032+ EOD
2033+ ,
2034+ "bar",
2035+ ];
2036+
2037+ [
2038+ ($var
2039+ ? "foo"
2040+ : $var2)
2041+ ? "bar"
2042+ : <<<'EOD'
2043+ string
2044+ EOD
2045+ ,
2046+ "bar",
2047+ ];
2048+
2049+ [
2050+ $var ??
2051+ <<<'EOD'
2052+ string
2053+ EOD
2054+ ,
2055+ "bar",
2056+ ];
2057+
2058+ [
2059+ $a ??
2060+ ($b ??
2061+ <<<'EOD'
2062+ string
2063+ EOD
2064+ ),
2065+ "bar",
2066+ ];
2067+
20012068================================================================================
20022069`;
20032070
Original file line number Diff line number Diff line change @@ -921,8 +921,7 @@ function generator()
921921string
922922string
923923EOD
924- ,
925- $ var
924+ , $ var
926925);
927926
928927$ array = [
@@ -949,3 +948,31 @@ function generator()
949948 b
950949 c
951950 EOD;
951+
952+ [
953+ $ var ? "foo " : <<<'EOD'
954+ string
955+ EOD
956+ , "bar "
957+ ];
958+
959+ [
960+ $ var ? "foo " : $ var2 ? "bar " : <<<'EOD'
961+ string
962+ EOD
963+ , "bar "
964+ ];
965+
966+ [
967+ $ var ?? <<<'EOD'
968+ string
969+ EOD
970+ , "bar "
971+ ];
972+
973+ [
974+ $ a ?? $ b ?? <<<'EOD'
975+ string
976+ EOD
977+ , "bar "
978+ ];
You can’t perform that action at this time.
0 commit comments