Skip to content

Commit ba08abd

Browse files
author
Vincent Langlet
committed
🐛 Fix MultiLineArrayCommaSniff for empty array
1 parent 9775ee2 commit ba08abd

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

Symfony3Custom/Sniffs/Arrays/MultiLineArrayCommaSniff.php

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,35 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
5050
}
5151

5252
if ($open['line'] <> $tokens[$closePtr]['line']) {
53-
$lastComma = $phpcsFile->findPrevious(T_COMMA, $closePtr);
53+
$arrayIsNotEmpty = $phpcsFile->findPrevious(
54+
array(
55+
T_WHITESPACE,
56+
T_COMMENT,
57+
T_ARRAY,
58+
T_OPEN_PARENTHESIS,
59+
T_OPEN_SHORT_ARRAY,
60+
),
61+
$closePtr - 1,
62+
$stackPtr,
63+
true
64+
);
5465

55-
while ($lastComma < $closePtr -1) {
56-
$lastComma++;
66+
if ($arrayIsNotEmpty !== false) {
67+
$lastComma = $phpcsFile->findPrevious(T_COMMA, $closePtr);
5768

58-
if ($tokens[$lastComma]['code'] !== T_WHITESPACE
59-
&& $tokens[$lastComma]['code'] !== T_COMMENT
60-
) {
61-
$phpcsFile->addError(
62-
'Add a comma after each item in a multi-line array',
63-
$stackPtr,
64-
'Invalid'
65-
);
66-
break;
69+
while ($lastComma < $closePtr - 1) {
70+
$lastComma++;
71+
72+
if ($tokens[$lastComma]['code'] !== T_WHITESPACE
73+
&& $tokens[$lastComma]['code'] !== T_COMMENT
74+
) {
75+
$phpcsFile->addError(
76+
'Add a comma after each item in a multi-line array',
77+
$stackPtr,
78+
'Invalid'
79+
);
80+
break;
81+
}
6782
}
6883
}
6984
}

Symfony3Custom/Tests/Arrays/MultiLineArrayCommaUnitTest.inc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ $arr = array(
1313
'bar'
1414
);
1515

16+
$arr = array(
17+
);
18+
1619
// short array syntax
1720
$arr = ['foo', 'bar'];
1821

@@ -26,6 +29,9 @@ $arr = [
2629
'bar'
2730
];
2831

32+
$arr = [
33+
];
34+
2935
// classic array syntax with comments
3036
$arr = array('foo', 'bar' /* baz */);
3137

@@ -49,6 +55,10 @@ $arr = array(
4955
'bar' /* baz */
5056
);
5157

58+
$arr = array(
59+
// foo => bar
60+
);
61+
5262
// short array syntax with comments
5363
$arr = ['foo', 'bar' /* baz */];
5464

@@ -71,3 +81,7 @@ $arr = [
7181
'foo'
7282
'bar' /* baz */
7383
];
84+
85+
$arr = [
86+
// foo => bar
87+
];

Symfony3Custom/Tests/Arrays/MultiLineArrayCommaUnitTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ public function getErrorList()
2121
{
2222
return array(
2323
11 => 1,
24-
24 => 1,
25-
37 => 1,
26-
47 => 1,
27-
60 => 1,
24+
27 => 1,
25+
43 => 1,
26+
53 => 1,
2827
70 => 1,
28+
80 => 1,
2929
);
3030
}
3131

0 commit comments

Comments
 (0)