diff --git a/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php b/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php index 98354ba9fb4030b19a665645aee5429da8fcad68..8d1b21818c76dd68725e75e8cb273f58956f5671 100644 --- a/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php +++ b/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php @@ -300,7 +300,12 @@ protected function buildMethodBody(\ReflectionMethod $reflection_method) { $function_name = $reflection_method->getName(); if (!$reflection_method->isStatic()) { - $output .= ' return $this->lazyLoadItself()->' . $function_name . '('; + if ($reflection_method->getReturnType() && $reflection_method->getReturnType()->getName() === 'void') { + $output .= ' $this->lazyLoadItself()->' . $function_name . '('; + } + else { + $output .= ' return $this->lazyLoadItself()->' . $function_name . '('; + } } else { $class_name = $reflection_method->getDeclaringClass()->getName(); diff --git a/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php b/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php index f278d277fdd23a7ae8badc93e3199ebc815141b3..7109e9ce1299c4795bfca68110ab86ae1931a0a7 100644 --- a/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php +++ b/core/tests/Drupal/Tests/Component/ProxyBuilder/ProxyBuilderTest.php @@ -139,6 +139,30 @@ public function complexMethod(string $parameter, callable $function, \Drupal\Tes return $this->lazyLoadItself()->complexMethod($parameter, $function, $test_service, $elements); } +EOS; + + $this->assertEquals($this->buildExpectedClass($class, $method_body), $result); + } + + /** + * @covers ::buildMethodBody + */ + public function testBuildServiceMethodReturnsVoid() { + $class = TestServiceMethodReturnsVoid::class; + + $result = $this->proxyBuilder->build($class); + + // @todo Solve the silly linebreak for array() + $method_body = <<<'EOS' + +/** + * {@inheritdoc} + */ +public function methodReturnsVoid(string $parameter): void +{ + $this->lazyLoadItself()->methodReturnsVoid($parameter); +} + EOS; $this->assertEquals($this->buildExpectedClass($class, $method_body), $result); @@ -387,6 +411,14 @@ public function complexMethod(string $parameter, callable $function, TestService } +class TestServiceMethodReturnsVoid { + + public function methodReturnsVoid(string $parameter): void { + + } + +} + class TestServiceReturnReference { public function &returnReference() {