diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 559c25624a..25ec6d92e1 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -353,6 +353,8 @@ protected function doRender(&$elements, $is_root_call = FALSE) { // Build the element if it is still empty. if (isset($elements['#lazy_builder'])) { $new_elements = $this->doCallback('#lazy_builder', $elements['#lazy_builder'][0], $elements['#lazy_builder'][1]); + // Throw an exception if #lazy_builder + // callback does not return a (renderable) array. if (!is_array($new_elements)) { throw new \LogicException("#lazy_builder callbacks must return a valid renderable array, got $new_elements from " . $elements['#lazy_builder'][0]); } // Retain the original cacheability metadata, plus cache keys. CacheableMetadata::createFromRenderArray($elements) ->merge(CacheableMetadata::createFromRenderArray($new_elements))