-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Various HirTyLowerer
cleanups
#125819
Various HirTyLowerer
cleanups
#125819
Conversation
HIR ty lowering was modified cc @fmease |
This comment has been minimized.
This comment has been minimized.
Wasn't it a very intentional decision back in the day to have |
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.
Yeah, I concur w/ @fmease here. I think adding an InferCtxt
gives rustc devs a much easier chance to misuse it.
Yea... I was wondering about that. I'd think we'd want to use a full |
Do you mean in preparation for potential changes to language like rust-lang/rfcs#3546 (which hasn't been accepted of course)? Or do you have something else in mind? To be honest, I haven't looked at the linked issue yet or at the issues in |
I removed the InferCtxt changes and left just the refactorings that do not have user-visible effects |
☔ The latest upstream changes (presumably #125960) made this pull request unmergeable. Please resolve the merge conflicts. |
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.
sorry for the delay! that's very nice cleanup, thanks a lot! r=me with nits addressed
@@ -90,7 +90,7 @@ pub trait HirTyLowerer<'tcx> { | |||
fn tcx(&self) -> TyCtxt<'tcx>; | |||
|
|||
/// Returns the [`DefId`] of the overarching item whose constituents get lowered. |
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.
/// Returns the [`DefId`] of the overarching item whose constituents get lowered. | |
/// Returns the [`LocalDefId`] of the overarching item whose constituents get lowered. |
fn re_infer(&self, param: Option<&ty::GenericParamDef>, span: Span) | ||
-> Option<ty::Region<'tcx>>; | ||
/// | ||
/// The `borrowed` argument states whether this lifetime is from a reference. |
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.
it's object_lifetime_default
not borrowed
(copy/paste error from lower_ty_common
?)
&self, | ||
_: Option<&ty::GenericParamDef>, | ||
span: Span, | ||
object_lifetime_default: bool, |
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.
would love this bool
to be a custom enum instead but that's not blocking
// We will have already emitted an error E0106 complaining about a | ||
// missing named lifetime in `&dyn Trait`, so we elide this one. |
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 comment doesn't make sense anymore. it was about delay_as_bug
vs emit
depending on borrowed : bool
which you no longer do
@@ -82,22 +80,32 @@ pub enum PredicateFilter { | |||
SelfAndAssociatedTypeBounds, | |||
} | |||
|
|||
#[derive(Debug)] | |||
pub enum RegionInferReason<'a> { |
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.
Beautiful 😭 ❤️
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.
I guess we don't actually use most of the reasons but anyway...
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.
Yea, but that's true for obligation causes, too :D maybe we should. I dislike those delay span bugs
@bors r+ rollup |
☔ The latest upstream changes (presumably #125976) made this pull request unmergeable. Please resolve the merge conflicts. |
…r (can) use it for local items
`ct_infer` and `lower_ty` will correctly result in an error constant or type respectively, as they go through a `HirTyLowerer` method (just like `HirTyLowerer::allow_infer` is a method implemented by both implementors
…n enum that exhaustively supports all call sites
@bors r=fmease |
🌲 The tree is currently closed for pull requests below priority 101. This pull request will be tested once the tree is reopened. |
…iaskrgr Rollup of 10 pull requests Successful merges: - rust-lang#124746 (`rustc --explain E0582` additional example) - rust-lang#125407 (Detect when user is trying to create a lending `Iterator` and give a custom explanation) - rust-lang#125505 (Add intra-doc-links to rustc_middle crate-level docs.) - rust-lang#125792 (Don't drop `Unsize` candidate in intercrate mode) - rust-lang#125819 (Various `HirTyLowerer` cleanups) - rust-lang#125861 (rustc_codegen_ssa: fix `get_rpath_relative_to_output` panic when lib only contains file name) - rust-lang#125911 (delete bootstrap build before switching to bumped rustc) - rust-lang#125921 (coverage: Carve out hole spans in a separate early pass) - rust-lang#125940 (std::unix::fs::get_path: using fcntl codepath for netbsd instead.) - rust-lang#126022 (set `has_unconstrained_ty_var` when generalizing aliases in bivariant contexts) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#125819 - oli-obk:localize, r=fmease Various `HirTyLowerer` cleanups Previously there was some ad-hoc specialization going on, because you could call `allows_infer`, which basically was deciding between whether the trait object was backed by `FnCtxt` or by `ItemCtxt`. I moved all the different logic into dedicated methods on `HirTyLowerer` and removed `allows_infer` best reviewed commit-by-commit
Previously there was some ad-hoc specialization going on, because you could call
allows_infer
, which basically was deciding between whether the trait object was backed byFnCtxt
or byItemCtxt
. I moved all the different logic into dedicated methods onHirTyLowerer
and removedallows_infer
best reviewed commit-by-commit