Repository: symfony/symfony
File: src/Symfony/Bundle/FrameworkBundle/Resources/config/error_renderer.php (PHP)

Code before:
        ->set('error_handler.error_renderer.html', HtmlErrorRenderer::class)
            ->args([
                inline_service()
                    ->factory([HtmlErrorRenderer::class, 'isDebug'])
                    ->args([
                        service('request_stack'),
                        param('kernel.debug'),
                    ]),
                param('kernel.charset'),
                service('debug.file_link_formatter')->nullOnInvalid(),
                param('kernel.project_dir'),
                inline_service()
                    ->factory([HtmlErrorRenderer::class, 'getAndCleanOutputBuffer'])
                    ->args([service('request_stack')]),
                service('logger')->nullOnInvalid(),
            ])

        ->set('error_handler.error_renderer.cli', CliErrorRenderer::class)

        ->set('error_handler.error_renderer.default', ErrorRendererInterface::class)
            ->factory([SapiErrorRendererSelector::class, 'select'])
            ->args([
                service('error_renderer.cli'),
                service('error_renderer.html'),
            ])

        ->alias('error_renderer.html', 'error_handler.error_renderer.html')
        ->alias('error_renderer.cli', 'error_handler.error_renderer.cli')
        ->alias('error_renderer.default', 'error_handler.error_renderer.default')
        ->alias('error_renderer', 'error_renderer.default')
    ;
};


Review comment (suggestion):
Is there a way to trigger a deprecation only when the service is called? That way, applications that do not have errors or that override `error_renderer` are not affected.
Maybe by injecting the `error_renderer.cli` only when the new config option is set to `true`.

Code after:
        ->set('error_handler.error_renderer.html', HtmlErrorRenderer::class)
            ->args([
                inline_service()
                    ->factory([HtmlErrorRenderer::class, 'isDebug'])
                    ->args([
                        service('request_stack'),
                        param('kernel.debug'),
                    ]),
                param('kernel.charset'),
                service('debug.file_link_formatter')->nullOnInvalid(),
                param('kernel.project_dir'),
                inline_service()
                    ->factory([HtmlErrorRenderer::class, 'getAndCleanOutputBuffer'])
                    ->args([service('request_stack')]),
                service('logger')->nullOnInvalid(),
            ])

        ->set('error_handler.error_renderer.cli', CliErrorRenderer::class)

        ->set('error_handler.error_renderer.default', ErrorRendererInterface::class)
            ->factory([RuntimeModeErrorRendererSelector::class, 'select'])
            ->args([
                param('kernel.runtime_mode.web'),
                service_closure('error_renderer.html'),
                service_closure('error_renderer.cli'),
            ])

        ->alias('error_renderer.html', 'error_handler.error_renderer.html')
        ->alias('error_renderer.cli', 'error_handler.error_renderer.cli')
        ->alias('error_renderer.default', 'error_handler.error_renderer.default')
        ->alias('error_renderer', 'error_renderer.default')
    ;
};