[DX][DI] Make failed autowiring error messages more explicit#18691
Merged
Conversation
891dd3c to
c8cf523
Compare
| if (isset($this->notGuessableTypes[$typeHint->name]) || !$typeHint->isInstantiable()) { | ||
| throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s".', $typeHint->name, $id)); | ||
| if (isset($this->notGuessableTypes[$typeHint->name])) { | ||
| throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s". Several services implementing this type has been declared: "%s".', $typeHint->name, $id, implode('", "', $this->types[$typeHint->name]))); |
Member
There was a problem hiding this comment.
Several services ... has been declared -> Several services ... have been declared
c8cf523 to
08cd5c7
Compare
| throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s". Several services implementing this type have been declared: "%s".', $typeHint->name, $id, implode('", "', $this->types[$typeHint->name]))); | ||
| } | ||
|
|
||
| $NoAvailableDefinitionMessage = sprintf('Unable to autowire argument of type "%s" for the service "%s". This type cannot be instantiated automatically and no service implementing this type is declared.', $typeHint->name, $id); |
Member
There was a problem hiding this comment.
the leading n should be lowercase in the variable name
08cd5c7 to
2ac81f9
Compare
Contributor
Author
Member
|
👍 Status: reviewed |
Member
|
Thank you @lemoinem. |
fabpot
added a commit
that referenced
this pull request
May 3, 2016
…icit (lemoinem) This PR was merged into the 2.8 branch. Discussion ---------- [DX][DI] Make failed autowiring error messages more explicit | Q | A | ------------- | --- | Branch? | 2.8 | Bug fix? | no (better DX integration) | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #18658 | License | MIT | Doc PR | N/A This is the PR improving the auto wiring error messages. Two errors messages have augmented: If a type-hint does not match any existing type and a service for this type cannot be automatically created, the error message now says so, instead of simply saying the type cannot be autowired. If a type-hint matches multiple services and none of them provides an autowiringType for it, the error message now says so and list the candidate services, instead of simply saying the type cannot be autowired. Commits ------- 2ac81f9 Make failed autowiring error messages more explicit
Member
|
@lemoinem I did not merge you work here into master because it caused conflicts and I did not know how to fix it. Can you please open a new PR against master? |
Contributor
Author
|
@nicolas-grekas Got it, I will check this out and provide a new PR ASAP. Did you have any issue applying the PR on 3.0? Or should I worry only about master/3.1? |
fabpot
added a commit
that referenced
this pull request
May 13, 2016
…nem) This PR was merged into the 3.1-dev branch. Discussion ---------- Make failed autowiring error messages more explicit | Q | A | ------------- | --- | Branch? | master | Bug fix? | no (better DX integration) | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #18658 | License | MIT | Doc PR | N/A @nicolas-grekas This is a port from #18691 (which was for **2.8**). It looks like the original PR has been already mostly implemented in **master** by @weaverryan (in #17877). IMO, this PR is still improving two use cases: * In case a class cannot be autowired because no service can be found AND a service cannot be registered automatically, the error message now mentions both conditions (instead of simply saying no service has been found) * In case a class with no service attached to it can be automatically instantiated but cannot be autowired because of further problems, an exception mentioning this is now thrown instead of the lower level exception, making the situation easier to debug. (The lower level exception is still available through `getPrevious()`) Hence, I still think this PR provides useful additional DX features and is worth to be merged. Commits ------- 6894e03 Make failed autowiring error messages more explicit
nicolas-grekas
added a commit
that referenced
this pull request
May 19, 2016
…e future friendly (lemoinem) This PR was merged into the 2.8 branch. Discussion ---------- [DX][DependencyInjection] Make Autowiring exceptions more future friendly | Q | A | ------------- | --- | Branch? | 2.8, 3.0 | Bug fix? | no (forward compatibility) | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | N/A | License | MIT | Doc PR | N/A This is a follow-up on #18766 (3.1, master) and #18691 (2.8, 3.0). This PR changes the exception messages to the ones introduced in #18766 and #17877. I also unified the tests so they are exactly the same. This way the error messages will be the same in 2.8 onward. Commits ------- 834f550 [DX][DI] Make Autowiring exceptions more future friendly
nicolas-grekas
added a commit
that referenced
this pull request
Feb 14, 2017
This PR was merged into the 3.2 branch. Discussion ---------- [DI] Align AutowirePass with 2.8 | Q | A | ------------- | --- | Branch? | 3.2 | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - Follow up a less than ideal [merge conflict resolution](#18691 (comment)), found while reviewing AutowirePass in 2.8 and 3.2 and wondering about the delta. Should reduce future merge conflicts and help history tracking. Commits ------- dd5236a [DI] Align AutowirePass with 2.8
symfony-splitter
pushed a commit
to symfony/dependency-injection
that referenced
this pull request
Feb 14, 2017
This PR was merged into the 3.2 branch. Discussion ---------- [DI] Align AutowirePass with 2.8 | Q | A | ------------- | --- | Branch? | 3.2 | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - Follow up a less than ideal [merge conflict resolution](symfony/symfony#18691 (comment)), found while reviewing AutowirePass in 2.8 and 3.2 and wondering about the delta. Should reduce future merge conflicts and help history tracking. Commits ------- dd5236a [DI] Align AutowirePass with 2.8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.Suggestion cannot be applied right now. Please check back later.
This is the PR improving the auto wiring error messages.
Two errors messages have augmented:
If a type-hint does not match any existing type and a service for this type cannot be automatically created, the error message now says so, instead of simply saying the type cannot be autowired.
If a type-hint matches multiple services and none of them provides an autowiringType for it, the error message now says so and list the candidate services, instead of simply saying the type cannot be autowired.