@@ -63,7 +63,6 @@ public function process(File $phpcsFile, $classPointer): void
63
63
$ tokens = $ phpcsFile ->getTokens ();
64
64
65
65
$ memberPointer = null ;
66
- $ previousMemberPointer = null ;
67
66
68
67
do {
69
68
$ previousMemberPointer = $ memberPointer ;
@@ -105,7 +104,7 @@ public function process(File $phpcsFile, $classPointer): void
105
104
}
106
105
}
107
106
108
- $ memberStartPointer = $ this ->getMemberStartPointer ($ phpcsFile , $ memberPointer );
107
+ $ memberStartPointer = $ this ->getMemberStartPointer ($ phpcsFile , $ memberPointer, $ previousMemberEndPointer );
109
108
110
109
$ actualLinesCount = $ tokens [$ memberStartPointer ]['line ' ] - $ tokens [$ previousMemberEndPointer ]['line ' ] - 1 ;
111
110
@@ -117,10 +116,20 @@ public function process(File $phpcsFile, $classPointer): void
117
116
? 'Expected 1 blank line between class members, found %2$d. '
118
117
: 'Expected %1$d blank lines between class members, found %2$d. ' ;
119
118
120
- $ fix = $ phpcsFile ->addFixableError (
119
+ $ firstPointerOnMemberLine = TokenHelper::findFirstTokenOnLine ($ phpcsFile , $ memberStartPointer );
120
+ $ nonWhitespaceBetweenMembersPointer = TokenHelper::findNextNonWhitespace (
121
+ $ phpcsFile ,
122
+ $ previousMemberEndPointer + 1 ,
123
+ $ firstPointerOnMemberLine ,
124
+ );
125
+
126
+ $ fix = $ phpcsFile ->addError (
121
127
sprintf ($ errorMessage , $ this ->linesCountBetweenMembers , $ actualLinesCount ),
122
128
$ memberPointer ,
123
129
self ::CODE_INCORRECT_COUNT_OF_BLANK_LINES_BETWEEN_MEMBERS ,
130
+ [],
131
+ 0 ,
132
+ $ nonWhitespaceBetweenMembersPointer === null ,
124
133
);
125
134
if (!$ fix ) {
126
135
continue ;
@@ -131,8 +140,6 @@ public function process(File $phpcsFile, $classPointer): void
131
140
$ this ->linesCountBetweenMembers + ($ hasCommentWithNewLineAfterPreviousMember ? 0 : 1 ),
132
141
);
133
142
134
- $ firstPointerOnMemberLine = TokenHelper::findFirstTokenOnLine ($ phpcsFile , $ memberStartPointer );
135
-
136
143
$ phpcsFile ->fixer ->beginChangeset ();
137
144
138
145
$ phpcsFile ->fixer ->addContent ($ previousMemberEndPointer , $ newLines );
@@ -192,24 +199,25 @@ private function findNextMember(File $phpcsFile, int $classPointer, int $previou
192
199
return $ memberPointer ;
193
200
}
194
201
195
- private function getMemberStartPointer (File $ phpcsFile , int $ memberPointer ): int
202
+ private function getMemberStartPointer (File $ phpcsFile , int $ memberPointer, int $ previousMemberEndPointer ): int
196
203
{
197
204
$ tokens = $ phpcsFile ->getTokens ();
198
205
199
206
$ memberFirstCodePointer = $ this ->getMemberFirstCodePointer ($ phpcsFile , $ memberPointer );
200
207
201
208
do {
209
+ if ($ memberFirstCodePointer <= $ previousMemberEndPointer ) {
210
+ return TokenHelper::findNextNonWhitespace ($ phpcsFile , $ memberFirstCodePointer + 1 );
211
+ }
212
+
202
213
$ pointerBefore = TokenHelper::findPreviousNonWhitespace ($ phpcsFile , $ memberFirstCodePointer - 1 );
203
214
204
215
if ($ tokens [$ pointerBefore ]['code ' ] === T_ATTRIBUTE_END ) {
205
216
$ memberFirstCodePointer = $ tokens [$ pointerBefore ]['attribute_opener ' ];
206
217
continue ;
207
218
}
208
219
209
- if (
210
- in_array ($ tokens [$ pointerBefore ]['code ' ], Tokens::$ commentTokens , true )
211
- && $ tokens [$ pointerBefore ]['line ' ] + 1 === $ tokens [$ memberFirstCodePointer ]['line ' ]
212
- ) {
220
+ if (in_array ($ tokens [$ pointerBefore ]['code ' ], Tokens::$ commentTokens , true )) {
213
221
$ pointerBeforeComment = TokenHelper::findPreviousEffective ($ phpcsFile , $ pointerBefore - 1 );
214
222
if ($ tokens [$ pointerBeforeComment ]['line ' ] !== $ tokens [$ pointerBefore ]['line ' ]) {
215
223
$ memberFirstCodePointer = array_key_exists ('comment_opener ' , $ tokens [$ pointerBefore ])
0 commit comments