Skip to content

Commit 2b8c12d

Browse files
committed
Rebase + a few more test cases
1 parent 4b9866f commit 2b8c12d

File tree

4 files changed

+75
-7
lines changed

4 files changed

+75
-7
lines changed

lib/PhpParser/Parser/Php7.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2686,11 +2686,17 @@ protected function initReduceCallbacks(): void {
26862686
$self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
26872687
},
26882688
560 => static function ($self, $stackPos) {
2689-
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT;
2689+
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]);
2690+
$attrs['kind'] = $self->isMultiline($attrs)
2691+
? Expr\Array_::KIND_SHORT | Expr\Array_::KIND_MULTILINE
2692+
: Expr\Array_::KIND_SHORT;
26902693
$self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs);
26912694
},
26922695
561 => static function ($self, $stackPos) {
2693-
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG;
2696+
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]);
2697+
$attrs['kind'] = $self->isMultiline($attrs)
2698+
? Expr\Array_::KIND_LONG | Expr\Array_::KIND_MULTILINE
2699+
: Expr\Array_::KIND_LONG;
26942700
$self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs);
26952701
$self->createdArrays->offsetSet($self->semValue);
26962702
},

lib/PhpParser/Parser/Php8.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2687,11 +2687,17 @@ protected function initReduceCallbacks(): void {
26872687
$self->semValue = new Expr\ClassConstFetch($self->semStack[$stackPos-(3-1)], new Expr\Error($self->getAttributes($self->tokenStartStack[$stackPos-(3-3)], $self->tokenEndStack[$stackPos-(3-3)])), $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos])); $self->errorState = 2;
26882688
},
26892689
563 => static function ($self, $stackPos) {
2690-
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_SHORT;
2690+
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(3-1)], $self->tokenEndStack[$stackPos]);
2691+
$attrs['kind'] = $self->isMultiline($attrs)
2692+
? Expr\Array_::KIND_SHORT | Expr\Array_::KIND_MULTILINE
2693+
: Expr\Array_::KIND_SHORT;
26912694
$self->semValue = new Expr\Array_($self->semStack[$stackPos-(3-2)], $attrs);
26922695
},
26932696
564 => static function ($self, $stackPos) {
2694-
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]); $attrs['kind'] = Expr\Array_::KIND_LONG;
2697+
$attrs = $self->getAttributes($self->tokenStartStack[$stackPos-(4-1)], $self->tokenEndStack[$stackPos]);
2698+
$attrs['kind'] = $self->isMultiline($attrs)
2699+
? Expr\Array_::KIND_LONG | Expr\Array_::KIND_MULTILINE
2700+
: Expr\Array_::KIND_LONG;
26952701
$self->semValue = new Expr\Array_($self->semStack[$stackPos-(4-3)], $attrs);
26962702
$self->createdArrays->offsetSet($self->semValue);
26972703
},

lib/PhpParser/ParserAbstract.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,12 +1264,15 @@ private function isSimpleExit(array $args): bool {
12641264
return false;
12651265
}
12661266

1267-
protected function isMultiline(array $attributes): bool {
1268-
if (!isset($attributes['startLine']) || !isset($attributes['endLine'])) {
1267+
/**
1268+
* @param array{startLine?:int, endLine?: int} $attrs
1269+
*/
1270+
protected function isMultiline(array $attrs): bool {
1271+
if (!isset($attrs['startLine']) || !isset($attrs['endLine'])) {
12691272
return false;
12701273
}
12711274

1272-
return $attributes['startLine'] !== $attributes['endLine'];
1275+
return $attrs['startLine'] !== $attrs['endLine'];
12731276
}
12741277

12751278
/**

test/code/prettyPrinter/stmt/arrays.test

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,27 @@ $longMultiline = array(
1515
2,
1616
3
1717
);
18+
19+
$mixedShort = array(
20+
array(1, 2, 3),
21+
array(1,
22+
2, 3),
23+
[4, 5, 6],
24+
[1,
25+
2, 3],
26+
2,
27+
3,
28+
);
29+
$mixedLong = [
30+
array(1, 2, 3),
31+
array(1,
32+
2, 3),
33+
[4, 5, 6],
34+
[1,
35+
2, 3],
36+
2,
37+
3
38+
];
1839
-----
1940
$short = [1, 2, 3];
2041
$shortMultiline = [
@@ -28,3 +49,35 @@ $longMultiline = array(
2849
2,
2950
3,
3051
);
52+
$mixedShort = array(
53+
array(1, 2, 3),
54+
array(
55+
1,
56+
2,
57+
3,
58+
),
59+
[4, 5, 6],
60+
[
61+
1,
62+
2,
63+
3,
64+
],
65+
2,
66+
3,
67+
);
68+
$mixedLong = [
69+
array(1, 2, 3),
70+
array(
71+
1,
72+
2,
73+
3,
74+
),
75+
[4, 5, 6],
76+
[
77+
1,
78+
2,
79+
3,
80+
],
81+
2,
82+
3,
83+
];

0 commit comments

Comments
 (0)