-
-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Allow printing TraitRef and TraitPredicate with Infcx information
#125262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| LL | | Bar: Send, | ||
| | |______________^ | ||
| = note: ...which requires revealing opaque types in `[Binder { value: TraitPredicate(<Bar as core::marker::Send>, polarity:Positive), bound_vars: [] }]`... | ||
| = note: ...which requires revealing opaque types in `[Binder { value: (Alias(Opaque, AliasTy { args: [], def_id: DefId(0:7 ~ in_where_clause[cb1b]::Bar::{opaque#0}) }): core::marker::Send), bound_vars: [] }]`... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit unfortunate lol. we actually print the Tys in TraitPredicate/TraitRef using Debug now and the debug printing for aliases is not super concise
BoxyUwU
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
.
|
☔ The latest upstream changes (presumably #125230) made this pull request unmergeable. Please resolve the merge conflicts. |
4cde784 to
876d181
Compare
|
☔ The latest upstream changes (presumably #125284) made this pull request unmergeable. Please resolve the merge conflicts. |
This PR is a bit of a mess apologies. I've tried to split up into two commits.
The first commit makes the
InfcxinWithInfcxbe stored inside of anOptionand makesNoInfcxinto an uninhabited type so that we do not have a type that is not anything like anInfcximplement theInferCtxtLiketrait and then get constructed and passed to places that expect an infcx. Generally the "leafs" of debug printing do not share codepaths for printing with or without an infcx and so need to be able to determine which to use.While updating the leaves to match on the
OptionI changed the debug printing of inference variables to be?0_..tfor when we cant probe the variable?0instead of "silently" downgrading to normalDebugprinting. I'm not sure how valuable this is but it was easy to do and given how many places accidentally are not going through theDebugWithInfcxtrait it seems valuable to be able to tell in logs if an inference variable is being printed through the wrong trait or just doesnt have a universe available.As an example of not going through the right trait, it seems like the
Ty: DebugWithInfcximpl just.... did not actually pass through toTyKind: DebugWithInfcxand so would not ever print out the universes ^^' fixed that in this commit too.The second commit actually introduces the
DebugWithInfcximplementations forTraitRefandTraitPredicate. PreviouslyTraitPredicatewas formatted as:TraitPredicate(<T as Trait<U>>, polarity::Positive)and now it is(T: Trait<U>). This should hopefully make reading debug logs involving lots of trait bounds easier (and it'll get a lot better with customBinderDebugimpls)TraitRef's formatting has not really changed. Previously it was<T as Trait<U>>and now it is(T as Trait<U>).r? @compiler-errors