@@ -20,6 +20,19 @@ class IsReferenceTest extends AbstractMethodUnitTest
2020{
2121
2222
23+ /**
24+ * Test that false is returned when a non-"bitwise and" token is passed.
25+ *
26+ * @return void
27+ */
28+ public function testNotBitwiseAndToken ()
29+ {
30+ $ target = $ this ->getTargetToken ('/* testBitwiseAndA */ ' , T_STRING );
31+ $ this ->assertFalse (self ::$ phpcsFile ->isReference ($ target ));
32+
33+ }//end testNotBitwiseAndToken()
34+
35+
2336 /**
2437 * Test correctly identifying whether a "bitwise and" token is a reference or not.
2538 *
@@ -49,6 +62,14 @@ public function testIsReference($identifier, $expected)
4962 public function dataIsReference ()
5063 {
5164 return [
65+ 'issue-1971-list-first-in-file ' => [
66+ 'testMarker ' => '/* testTokenizerIssue1971PHPCSlt330gt271A */ ' ,
67+ 'expected ' => true ,
68+ ],
69+ 'issue-1971-list-first-in-file-nested ' => [
70+ 'testMarker ' => '/* testTokenizerIssue1971PHPCSlt330gt271B */ ' ,
71+ 'expected ' => true ,
72+ ],
5273 'bitwise and: param in function call ' => [
5374 'testMarker ' => '/* testBitwiseAndA */ ' ,
5475 'expected ' => false ,
@@ -177,6 +198,46 @@ public function dataIsReference()
177198 'testMarker ' => '/* testAssignByReferenceE */ ' ,
178199 'expected ' => true ,
179200 ],
201+ 'reference: function return value, assign by reference, null coalesce assign ' => [
202+ 'testMarker ' => '/* testAssignByReferenceF */ ' ,
203+ 'expected ' => true ,
204+ ],
205+ 'reference: unkeyed short list, first var, assign by reference ' => [
206+ 'testMarker ' => '/* testShortListAssignByReferenceNoKeyA */ ' ,
207+ 'expected ' => true ,
208+ ],
209+ 'reference: unkeyed short list, second var, assign by reference ' => [
210+ 'testMarker ' => '/* testShortListAssignByReferenceNoKeyB */ ' ,
211+ 'expected ' => true ,
212+ ],
213+ 'reference: unkeyed short list, nested var, assign by reference ' => [
214+ 'testMarker ' => '/* testNestedShortListAssignByReferenceNoKey */ ' ,
215+ 'expected ' => true ,
216+ ],
217+ 'reference: unkeyed long list, second var, assign by reference ' => [
218+ 'testMarker ' => '/* testLongListAssignByReferenceNoKeyA */ ' ,
219+ 'expected ' => true ,
220+ ],
221+ 'reference: unkeyed long list, first nested var, assign by reference ' => [
222+ 'testMarker ' => '/* testLongListAssignByReferenceNoKeyB */ ' ,
223+ 'expected ' => true ,
224+ ],
225+ 'reference: unkeyed long list, last nested var, assign by reference ' => [
226+ 'testMarker ' => '/* testLongListAssignByReferenceNoKeyC */ ' ,
227+ 'expected ' => true ,
228+ ],
229+ 'reference: keyed short list, first nested var, assign by reference ' => [
230+ 'testMarker ' => '/* testNestedShortListAssignByReferenceWithKeyA */ ' ,
231+ 'expected ' => true ,
232+ ],
233+ 'reference: keyed short list, last nested var, assign by reference ' => [
234+ 'testMarker ' => '/* testNestedShortListAssignByReferenceWithKeyB */ ' ,
235+ 'expected ' => true ,
236+ ],
237+ 'reference: keyed long list, only var, assign by reference ' => [
238+ 'testMarker ' => '/* testLongListAssignByReferenceWithKeyA */ ' ,
239+ 'expected ' => true ,
240+ ],
180241 'reference: first param in function call, pass by reference ' => [
181242 'testMarker ' => '/* testPassByReferenceA */ ' ,
182243 'expected ' => true ,
@@ -217,6 +278,10 @@ public function dataIsReference()
217278 'testMarker ' => '/* testPassByReferenceJ */ ' ,
218279 'expected ' => true ,
219280 ],
281+ 'reference: static property in function call, last with PQN, pass by reference ' => [
282+ 'testMarker ' => '/* testPassByReferencePartiallyQualifiedName */ ' ,
283+ 'expected ' => true ,
284+ ],
220285 'reference: new by reference ' => [
221286 'testMarker ' => '/* testNewByReferenceA */ ' ,
222287 'expected ' => true ,
@@ -229,10 +294,34 @@ public function dataIsReference()
229294 'testMarker ' => '/* testUseByReference */ ' ,
230295 'expected ' => true ,
231296 ],
297+ 'reference: closure use by reference, first param, with comment ' => [
298+ 'testMarker ' => '/* testUseByReferenceWithCommentFirstParam */ ' ,
299+ 'expected ' => true ,
300+ ],
301+ 'reference: closure use by reference, last param, with comment ' => [
302+ 'testMarker ' => '/* testUseByReferenceWithCommentSecondParam */ ' ,
303+ 'expected ' => true ,
304+ ],
232305 'reference: arrow fn declared to return by reference ' => [
233306 'testMarker ' => '/* testArrowFunctionReturnByReference */ ' ,
234307 'expected ' => true ,
235308 ],
309+ 'bitwise and: first param default value in closure declaration ' => [
310+ 'testMarker ' => '/* testBitwiseAndExactParameterA */ ' ,
311+ 'expected ' => false ,
312+ ],
313+ 'reference: param in closure declaration, pass by reference ' => [
314+ 'testMarker ' => '/* testPassByReferenceExactParameterB */ ' ,
315+ 'expected ' => true ,
316+ ],
317+ 'reference: variadic param in closure declaration, pass by reference ' => [
318+ 'testMarker ' => '/* testPassByReferenceExactParameterC */ ' ,
319+ 'expected ' => true ,
320+ ],
321+ 'bitwise and: last param default value in closure declaration ' => [
322+ 'testMarker ' => '/* testBitwiseAndExactParameterD */ ' ,
323+ 'expected ' => false ,
324+ ],
236325 'reference: typed param in arrow fn declaration, pass by reference ' => [
237326 'testMarker ' => '/* testArrowFunctionPassByReferenceA */ ' ,
238327 'expected ' => true ,
@@ -245,6 +334,22 @@ public function dataIsReference()
245334 'testMarker ' => '/* testClosureReturnByReference */ ' ,
246335 'expected ' => true ,
247336 ],
337+ 'bitwise and: param default value in arrow fn declaration ' => [
338+ 'testMarker ' => '/* testBitwiseAndArrowFunctionInDefault */ ' ,
339+ 'expected ' => false ,
340+ ],
341+ 'issue-1284-short-list-directly-after-close-curly-control-structure ' => [
342+ 'testMarker ' => '/* testTokenizerIssue1284PHPCSlt280A */ ' ,
343+ 'expected ' => true ,
344+ ],
345+ 'issue-1284-short-list-directly-after-close-curly-control-structure-second-item ' => [
346+ 'testMarker ' => '/* testTokenizerIssue1284PHPCSlt280B */ ' ,
347+ 'expected ' => true ,
348+ ],
349+ 'issue-1284-short-array-directly-after-close-curly-control-structure ' => [
350+ 'testMarker ' => '/* testTokenizerIssue1284PHPCSlt280C */ ' ,
351+ 'expected ' => true ,
352+ ],
248353 ];
249354
250355 }//end dataIsReference()
0 commit comments