Skip to content

Commit 3b00244

Browse files
authored
Merge pull request #218 from PHPCSStandards/feature/file-isreference-improve-tests
File::isReference(): improve tests
2 parents 9011920 + 3622657 commit 3b00244

File tree

2 files changed

+314
-149
lines changed

2 files changed

+314
-149
lines changed

tests/Core/File/IsReferenceTest.inc

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
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 */
68
error_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 */
102130
functionCall(&$something, $somethingElse);
103131

@@ -128,6 +156,9 @@ functionCall($something, &\SomeNS\SomeClass::$somethingElse);
128156
/* testPassByReferenceJ */
129157
functionCall($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 */
141178
fn&($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

Comments
 (0)