[missing_fields_in_debug
]: don't ICE when self type is a generic param
#10897
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.
Fixes #10887
This PR fixes an ICE that happens when the implementor (self type) of a
Debug
impl is a generic parameter.The lint calls
TyCtxt::type_of
with that self type, which ICEs when called with generic parameters, so this just adds a quick check before getting there to ignore them.That can only happen inside of core itself (afaik) because the orphan rules forbid defining an impl such as
impl<T> Debug for T
outside of core, so I'm not sure how to add a test for this.It seems like this impl in particular caused this: https://doc.rust-lang.org/stable/std/fmt/trait.Debug.html#impl-Debug-for-F
changelog: [
missing_fields_in_debug
]: don't ICE on blanketDebug
impl in core