Skip to content

Commit 7c77ab0

Browse files
committed
Squiz/ForLoopDeclaration: fix SpaceAfterOpen/SpaceBeforeClose in one loop
Fix the `SpaceAfterOpen`/`SpaceBeforeClose` errors in one go instead of one whitespace token per loop.
1 parent 1f77d55 commit 7c77ab0

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

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

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,16 @@ public function process(File $phpcsFile, $stackPtr)
8080
$error = 'Whitespace found after opening bracket of FOR loop';
8181
$fix = $phpcsFile->addFixableError($error, $openingBracket, 'SpacingAfterOpen');
8282
if ($fix === true) {
83-
$phpcsFile->fixer->replaceToken(($openingBracket + 1), '');
83+
$phpcsFile->fixer->beginChangeset();
84+
for ($i = ($openingBracket + 1); $i < $closingBracket; $i++) {
85+
if ($tokens[$i]['code'] !== T_WHITESPACE) {
86+
break;
87+
}
88+
89+
$phpcsFile->fixer->replaceToken($i, '');
90+
}
91+
92+
$phpcsFile->fixer->endChangeset();
8493
}
8594
} else if ($this->requiredSpacesAfterOpen > 0) {
8695
$nextNonWhiteSpace = $phpcsFile->findNext(T_WHITESPACE, ($openingBracket + 1), $closingBracket, true);
@@ -103,17 +112,32 @@ public function process(File $phpcsFile, $stackPtr)
103112
if ($spaceAfterOpen === 0) {
104113
$phpcsFile->fixer->addContent($openingBracket, $padding);
105114
} else {
115+
$phpcsFile->fixer->beginChangeset();
106116
$phpcsFile->fixer->replaceToken(($openingBracket + 1), $padding);
117+
for ($i = ($openingBracket + 2); $i < $nextNonWhiteSpace; $i++) {
118+
$phpcsFile->fixer->replaceToken($i, '');
119+
}
120+
121+
$phpcsFile->fixer->endChangeset();
107122
}
108123
}
109-
}
124+
}//end if
110125
}//end if
111126

112127
if ($this->requiredSpacesBeforeClose === 0 && $tokens[($closingBracket - 1)]['code'] === T_WHITESPACE) {
113128
$error = 'Whitespace found before closing bracket of FOR loop';
114129
$fix = $phpcsFile->addFixableError($error, $closingBracket, 'SpacingBeforeClose');
115130
if ($fix === true) {
116-
$phpcsFile->fixer->replaceToken(($closingBracket - 1), '');
131+
$phpcsFile->fixer->beginChangeset();
132+
for ($i = ($closingBracket - 1); $i > $openingBracket; $i--) {
133+
if ($tokens[$i]['code'] !== T_WHITESPACE) {
134+
break;
135+
}
136+
137+
$phpcsFile->fixer->replaceToken($i, '');
138+
}
139+
140+
$phpcsFile->fixer->endChangeset();
117141
}
118142
} else if ($this->requiredSpacesBeforeClose > 0) {
119143
$prevNonWhiteSpace = $phpcsFile->findPrevious(T_WHITESPACE, ($closingBracket - 1), $openingBracket, true);
@@ -136,10 +160,16 @@ public function process(File $phpcsFile, $stackPtr)
136160
if ($spaceBeforeClose === 0) {
137161
$phpcsFile->fixer->addContentBefore($closingBracket, $padding);
138162
} else {
163+
$phpcsFile->fixer->beginChangeset();
139164
$phpcsFile->fixer->replaceToken(($closingBracket - 1), $padding);
165+
for ($i = ($closingBracket - 2); $i > $prevNonWhiteSpace; $i--) {
166+
$phpcsFile->fixer->replaceToken($i, '');
167+
}
168+
169+
$phpcsFile->fixer->endChangeset();
140170
}
141171
}
142-
}
172+
}//end if
143173
}//end if
144174

145175
$firstSemicolon = $phpcsFile->findNext(T_SEMICOLON, $openingBracket, $closingBracket);

0 commit comments

Comments
 (0)