diff --git a/src/Files/File.php b/src/Files/File.php index 56fd5c1b52..9c3dac6763 100644 --- a/src/Files/File.php +++ b/src/Files/File.php @@ -1936,6 +1936,7 @@ public function isReference($stackPtr) ); if ($this->tokens[$tokenBefore]['code'] === T_FUNCTION + || $this->tokens[$tokenBefore]['code'] === T_CLOSURE || $this->tokens[$tokenBefore]['code'] === T_FN ) { // Function returns a reference. diff --git a/tests/Core/File/IsReferenceTest.inc b/tests/Core/File/IsReferenceTest.inc index 47024056e6..c8f5dc2243 100644 --- a/tests/Core/File/IsReferenceTest.inc +++ b/tests/Core/File/IsReferenceTest.inc @@ -139,3 +139,6 @@ $closure = function() use (&$var){}; /* testArrowFunctionReturnByReference */ fn&($x) => $x; + +/* testClosureReturnByReference */ +$closure = function &($param) use ($value) {}; diff --git a/tests/Core/File/IsReferenceTest.php b/tests/Core/File/IsReferenceTest.php index be45ee28cf..d6c37c6c1f 100644 --- a/tests/Core/File/IsReferenceTest.php +++ b/tests/Core/File/IsReferenceTest.php @@ -228,6 +228,10 @@ public function dataIsReference() '/* testArrowFunctionReturnByReference */', true, ], + [ + '/* testClosureReturnByReference */', + true, + ], ]; }//end dataIsReference()