diff --git a/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php b/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php index 98354ba9fb4..8d1b21818c7 100644 --- a/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php +++ b/core/lib/Drupal/Component/ProxyBuilder/ProxyBuilder.php @@ -300,7 +300,12 @@ EOS; $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 f278d277fdd..7109e9ce129 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 @@ class TestServiceComplexMethod { } +class TestServiceMethodReturnsVoid { + + public function methodReturnsVoid(string $parameter): void { + + } + +} + class TestServiceReturnReference { public function &returnReference() {