11<?php
22
3- namespace PHP_CodeSniffer \Tests \Core \File ;
3+ /* testTokenizerIssue1971PHPCSlt330gt271A */
4+ // This has to be the first test in the file!
5+ [&$ a , [$ b , /* testTokenizerIssue1971PHPCSlt330gt271B */ &$ c ]] = $ array ;
46
57/* testBitwiseAndA */
68error_reporting ( E_NOTICE & E_STRICT );
@@ -98,6 +100,32 @@ $myValue = &$obj->getValue();
98100/* testAssignByReferenceE */
99101$ collection = &collector ();
100102
103+ /* testAssignByReferenceF */
104+ $ collection ??= &collector ();
105+
106+ /* testShortListAssignByReferenceNoKeyA */
107+ [
108+ &$ a ,
109+ /* testShortListAssignByReferenceNoKeyB */
110+ &$ b ,
111+ /* testNestedShortListAssignByReferenceNoKey */
112+ [$ c , &$ d ]
113+ ] = $ array ;
114+
115+ /* testLongListAssignByReferenceNoKeyA */
116+ list ($ a , &$ b , list (/* testLongListAssignByReferenceNoKeyB */ &$ c , /* testLongListAssignByReferenceNoKeyC */ &$ d )) = $ array ;
117+
118+ [
119+ /* testNestedShortListAssignByReferenceWithKeyA */
120+ 'a ' => [&$ a , $ b ],
121+ /* testNestedShortListAssignByReferenceWithKeyB */
122+ 'b ' => [$ c , &$ d ]
123+ ] = $ array ;
124+
125+
126+ /* testLongListAssignByReferenceWithKeyA */
127+ list (get_key ()[1 ] => &$ e ) = [1 , 2 , 3 ];
128+
101129/* testPassByReferenceA */
102130functionCall (&$ something , $ somethingElse );
103131
@@ -128,6 +156,9 @@ functionCall($something, &\SomeNS\SomeClass::$somethingElse);
128156/* testPassByReferenceJ */
129157functionCall ($ something , &namespace \SomeClass::$ somethingElse );
130158
159+ /* testPassByReferencePartiallyQualifiedName */
160+ functionCall ($ something , &Sub \Level \SomeClass::$ somethingElse );
161+
131162/* testNewByReferenceA */
132163$ foobar2 = &new Foobar ();
133164
@@ -137,9 +168,27 @@ functionCall( $something , &new Foobar() );
137168/* testUseByReference */
138169$ closure = function () use (&$ var ){};
139170
171+ /* testUseByReferenceWithCommentFirstParam */
172+ $ closure = function () use /*comment*/ (&$ this ->value ){};
173+
174+ /* testUseByReferenceWithCommentSecondParam */
175+ $ closure = function () use /*comment*/ ($ varA , &$ varB ){};
176+
140177/* testArrowFunctionReturnByReference */
141178fn &($ x ) => $ x ;
142179
180+ $ closure = function (
181+ /* testBitwiseAndExactParameterA */
182+ $ a = MY_CONSTANT & parent ::OTHER_CONSTANT ,
183+ /* testPassByReferenceExactParameterB */
184+ &$ b ,
185+ /* testPassByReferenceExactParameterC */
186+ &...$ c ,
187+ /* testBitwiseAndExactParameterD */
188+ $ d = E_NOTICE & E_STRICT ,
189+ ) {};
190+
191+ // Issue PHPCS#3049.
143192/* testArrowFunctionPassByReferenceA */
144193$ fn = fn (array &$ one ) => 1 ;
145194
@@ -148,3 +197,14 @@ $fn = fn($param, &...$moreParams) => 1;
148197
149198/* testClosureReturnByReference */
150199$ closure = function &($ param ) use ($ value ) {};
200+
201+ /* testBitwiseAndArrowFunctionInDefault */
202+ $ fn = fn ( $ one = E_NOTICE & E_STRICT ) => 1 ;
203+
204+ /* testTokenizerIssue1284PHPCSlt280A */
205+ if ($ foo ) {}
206+ [&$ a , /* testTokenizerIssue1284PHPCSlt280B */ &$ b ] = $ c ;
207+
208+ /* testTokenizerIssue1284PHPCSlt280C */
209+ if ($ foo ) {}
210+ [&$ a , $ b ];
0 commit comments