Skip to content

Commit 96e69bb

Browse files
committed
Support arrow functions returning by reference (ref #2523)
1 parent 37dda44 commit 96e69bb

File tree

6 files changed

+15
-2
lines changed

6 files changed

+15
-2
lines changed

src/Files/File.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1935,7 +1935,9 @@ public function isReference($stackPtr)
19351935
true
19361936
);
19371937

1938-
if ($this->tokens[$tokenBefore]['code'] === T_FUNCTION) {
1938+
if ($this->tokens[$tokenBefore]['code'] === T_FUNCTION
1939+
|| $this->tokens[$tokenBefore]['code'] === T_FN
1940+
) {
19391941
// Function returns a reference.
19401942
return true;
19411943
}

src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.inc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ $a = $a instanceof $b;
265265
$a = $a instanceof $b;
266266
$a = ($a)instanceof$b;
267267

268+
fn&($x) => $x;
269+
268270
// phpcs:set Squiz.WhiteSpace.OperatorSpacing ignoreSpacingBeforeAssignments false
269271
$a = 3;
270272

src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.inc.fixed

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@ $a = $a instanceof $b;
259259
$a = $a instanceof $b;
260260
$a = ($a) instanceof $b;
261261

262+
fn&($x) => $x;
263+
262264
// phpcs:set Squiz.WhiteSpace.OperatorSpacing ignoreSpacingBeforeAssignments false
263265
$a = 3;
264266

src/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public function getErrorList($testFile='OperatorSpacingUnitTest.inc')
9898
246 => 1,
9999
265 => 2,
100100
266 => 2,
101-
269 => 2,
101+
271 => 2,
102102
];
103103
break;
104104
case 'OperatorSpacingUnitTest.js':

tests/Core/File/IsReferenceTest.inc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,6 @@ functionCall( $something , &new Foobar() );
136136

137137
/* testUseByReference */
138138
$closure = function() use (&$var){};
139+
140+
/* testArrowFunctionReturnByReference */
141+
fn&($x) => $x;

tests/Core/File/IsReferenceTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,10 @@ public function dataIsReference()
224224
'/* testUseByReference */',
225225
true,
226226
],
227+
[
228+
'/* testArrowFunctionReturnByReference */',
229+
true,
230+
],
227231
];
228232

229233
}//end dataIsReference()

0 commit comments

Comments
 (0)