Skip to content

Commit b6ffa20

Browse files
committed
Squiz/ForLoopDeclaration: report errors on the line they occur
Report errors for multi-line `for` control structures on the line they refer to, i.e. opening brace, close brace, semicolon line, instead of the line the `for` keyword is on. This improves the usability of the error messages for multi-line `for` declarations.
1 parent 0880146 commit b6ffa20

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function process(File $phpcsFile, $stackPtr)
7878

7979
if ($this->requiredSpacesAfterOpen === 0 && $tokens[($openingBracket + 1)]['code'] === T_WHITESPACE) {
8080
$error = 'Space found after opening bracket of FOR loop';
81-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterOpen');
81+
$fix = $phpcsFile->addFixableError($error, $openingBracket, 'SpacingAfterOpen');
8282
if ($fix === true) {
8383
$phpcsFile->fixer->replaceToken(($openingBracket + 1), '');
8484
}
@@ -94,7 +94,7 @@ public function process(File $phpcsFile, $stackPtr)
9494
$this->requiredSpacesAfterOpen,
9595
$spaceAfterOpen,
9696
];
97-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterOpen', $data);
97+
$fix = $phpcsFile->addFixableError($error, $openingBracket, 'SpacingAfterOpen', $data);
9898
if ($fix === true) {
9999
$padding = str_repeat(' ', $this->requiredSpacesAfterOpen);
100100
if ($spaceAfterOpen === 0) {
@@ -108,7 +108,7 @@ public function process(File $phpcsFile, $stackPtr)
108108

109109
if ($this->requiredSpacesBeforeClose === 0 && $tokens[($closingBracket - 1)]['code'] === T_WHITESPACE) {
110110
$error = 'Space found before closing bracket of FOR loop';
111-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose');
111+
$fix = $phpcsFile->addFixableError($error, $closingBracket, 'SpacingBeforeClose');
112112
if ($fix === true) {
113113
$phpcsFile->fixer->replaceToken(($closingBracket - 1), '');
114114
}
@@ -124,7 +124,7 @@ public function process(File $phpcsFile, $stackPtr)
124124
$this->requiredSpacesBeforeClose,
125125
$spaceBeforeClose,
126126
];
127-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeClose', $data);
127+
$fix = $phpcsFile->addFixableError($error, $closingBracket, 'SpacingBeforeClose', $data);
128128
if ($fix === true) {
129129
$padding = str_repeat(' ', $this->requiredSpacesBeforeClose);
130130
if ($spaceBeforeClose === 0) {
@@ -142,7 +142,7 @@ public function process(File $phpcsFile, $stackPtr)
142142
if ($firstSemicolon !== false) {
143143
if ($tokens[($firstSemicolon - 1)]['code'] === T_WHITESPACE) {
144144
$error = 'Space found before first semicolon of FOR loop';
145-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeFirst');
145+
$fix = $phpcsFile->addFixableError($error, $firstSemicolon, 'SpacingBeforeFirst');
146146
if ($fix === true) {
147147
$phpcsFile->fixer->replaceToken(($firstSemicolon - 1), '');
148148
}
@@ -152,7 +152,7 @@ public function process(File $phpcsFile, $stackPtr)
152152
&& $tokens[($firstSemicolon + 1)]['code'] !== T_SEMICOLON
153153
) {
154154
$error = 'Expected 1 space after first semicolon of FOR loop; 0 found';
155-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfterFirst');
155+
$fix = $phpcsFile->addFixableError($error, $firstSemicolon, 'NoSpaceAfterFirst');
156156
if ($fix === true) {
157157
$phpcsFile->fixer->addContent($firstSemicolon, ' ');
158158
}
@@ -161,7 +161,7 @@ public function process(File $phpcsFile, $stackPtr)
161161
$spaces = strlen($tokens[($firstSemicolon + 1)]['content']);
162162
$error = 'Expected 1 space after first semicolon of FOR loop; %s found';
163163
$data = [$spaces];
164-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterFirst', $data);
164+
$fix = $phpcsFile->addFixableError($error, $firstSemicolon, 'SpacingAfterFirst', $data);
165165
if ($fix === true) {
166166
$phpcsFile->fixer->replaceToken(($firstSemicolon + 1), ' ');
167167
}
@@ -175,7 +175,7 @@ public function process(File $phpcsFile, $stackPtr)
175175
&& $tokens[($firstSemicolon + 1)]['code'] !== T_SEMICOLON
176176
) {
177177
$error = 'Space found before second semicolon of FOR loop';
178-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingBeforeSecond');
178+
$fix = $phpcsFile->addFixableError($error, $secondSemicolon, 'SpacingBeforeSecond');
179179
if ($fix === true) {
180180
$phpcsFile->fixer->replaceToken(($secondSemicolon - 1), '');
181181
}
@@ -185,7 +185,7 @@ public function process(File $phpcsFile, $stackPtr)
185185
&& $tokens[($secondSemicolon + 1)]['code'] !== T_WHITESPACE
186186
) {
187187
$error = 'Expected 1 space after second semicolon of FOR loop; 0 found';
188-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'NoSpaceAfterSecond');
188+
$fix = $phpcsFile->addFixableError($error, $secondSemicolon, 'NoSpaceAfterSecond');
189189
if ($fix === true) {
190190
$phpcsFile->fixer->addContent($secondSemicolon, ' ');
191191
}
@@ -195,13 +195,13 @@ public function process(File $phpcsFile, $stackPtr)
195195
$data = [$spaces];
196196
if (($secondSemicolon + 2) === $closingBracket) {
197197
$error = 'Expected no space after second semicolon of FOR loop; %s found';
198-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterSecondNoThird', $data);
198+
$fix = $phpcsFile->addFixableError($error, $secondSemicolon, 'SpacingAfterSecondNoThird', $data);
199199
if ($fix === true) {
200200
$phpcsFile->fixer->replaceToken(($secondSemicolon + 1), '');
201201
}
202202
} else {
203203
$error = 'Expected 1 space after second semicolon of FOR loop; %s found';
204-
$fix = $phpcsFile->addFixableError($error, $stackPtr, 'SpacingAfterSecond', $data);
204+
$fix = $phpcsFile->addFixableError($error, $secondSemicolon, 'SpacingAfterSecond', $data);
205205
if ($fix === true) {
206206
$phpcsFile->fixer->replaceToken(($secondSemicolon + 1), ' ');
207207
}

0 commit comments

Comments
 (0)