From c0f1ca56d79cc201a17a3a936a719bd011fdf60d Mon Sep 17 00:00:00 2001 From: Jordan Date: Thu, 6 Nov 2025 01:00:51 -0500 Subject: [PATCH 1/2] Fix fatal error when using never return type --- src/AspectMock/Intercept/BeforeMockTransformer.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/AspectMock/Intercept/BeforeMockTransformer.php b/src/AspectMock/Intercept/BeforeMockTransformer.php index 48dfac0..9e8acf6 100644 --- a/src/AspectMock/Intercept/BeforeMockTransformer.php +++ b/src/AspectMock/Intercept/BeforeMockTransformer.php @@ -62,6 +62,10 @@ public function transform(StreamMetaData $metadata): TransformerResultEnum //TODO remove method_exists($method, 'getReturnType') when support for php5 is dropped $beforeDefinition = str_replace('return $__am_res;', 'return;', $beforeDefinition); } + if ($method->getReturnType() == 'never') { + // Replace return with a NOOP since the method cannot return + $beforeDefinition = str_replace(' return $__am_res;', ';', $beforeDefinition); + } $reflectedParams = $method->getParameters(); From 03100c6875a1ecc65d7428be925db5608cd1e19a Mon Sep 17 00:00:00 2001 From: Jordan Date: Thu, 6 Nov 2025 01:01:50 -0500 Subject: [PATCH 2/2] Complete TODO now that legacy PHP 5 is not supported --- src/AspectMock/Intercept/BeforeMockTransformer.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AspectMock/Intercept/BeforeMockTransformer.php b/src/AspectMock/Intercept/BeforeMockTransformer.php index 9e8acf6..c2b7051 100644 --- a/src/AspectMock/Intercept/BeforeMockTransformer.php +++ b/src/AspectMock/Intercept/BeforeMockTransformer.php @@ -58,8 +58,7 @@ public function transform(StreamMetaData $metadata): TransformerResultEnum if ($method->isGenerator()) { $beforeDefinition = str_replace('return', 'yield', $beforeDefinition); } - if (method_exists($method, 'getReturnType') && $method->getReturnType() == 'void') { - //TODO remove method_exists($method, 'getReturnType') when support for php5 is dropped + if ($method->getReturnType() == 'void') { $beforeDefinition = str_replace('return $__am_res;', 'return;', $beforeDefinition); } if ($method->getReturnType() == 'never') {