[DependencyInjection] Fail gracefully when attempting to autowire composite types #46973
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Symfony 4.4 does not support autowiring union types. Unfortunately, we run into a fatal error when autowiring is attempted for a parameter with an intersection type nested into a union (
(A&B)|C
). Ironically, the error occurs while we try to generate a nice exception message.This PR fixes this, so the developer gets a nice exception message about the parameter that cannot be autowired.
For nullable unions however,
null
is injected. This already was the case forA|null
and it works out of the box for(A&B)|null
. I've added a test case that covers this case.