remove AliasTy::def_id()#158013
Conversation
|
|
| self.opt_rpitit_info(def_id).is_some() | ||
| } | ||
|
|
||
| pub fn get_impl_future_output_ty(self, ty: Ty<'tcx>) -> Option<Ty<'tcx>> { |
There was a problem hiding this comment.
I moved this from TypeErrCtxt to TyCtxt... maybe I should split this to another commit
| pub type ProjectionAliasTy<'tcx> = ir::ProjectionAliasTy<TyCtxt<'tcx>>; | ||
| pub type InherentAliasTy<'tcx> = ir::InherentAliasTy<TyCtxt<'tcx>>; | ||
| pub type OpaqueAliasTy<'tcx> = ir::OpaqueAliasTy<TyCtxt<'tcx>>; | ||
| pub type FreeAliasTy<'tcx> = ir::FreeAliasTy<TyCtxt<'tcx>>; |
There was a problem hiding this comment.
some of these are unused... I'm not sure what the preference is here, if we should have unused useful things that fill out a "pattern", or if we should strictly add only what is actually used. (same question for try_to_inherent and stuff)
|
|
||
| let (ty::Projection { def_id } | ty::Inherent { def_id }) = proj_ty.kind else { | ||
| panic!("expected projection or inherent alias, found {:?}", proj_ty.kind); | ||
| }; |
There was a problem hiding this comment.
these variants were guarded against and and def_id fetched in the caller... there's sort of three ways to handle this:
- guard in the caller, pass in the matched def_id as an additional argument alongside proj_ty
- guard again in the callee, here, panicing if it's wrong (what I kind of arbitrarily chose to do here, and what I did in previous PRs)
- create another Kind enum, for just Projection/Inherent, and pass in an
Alias<>with that kind
| pub use rustc_ast_ir::{FloatTy, IntTy, Movability, Mutability, Pinnedness, UintTy}; | ||
| use rustc_type_ir_macros::GenericTypeVisitable; | ||
| pub use ty::{Alias, AliasTerm, AliasTy, UnevaluatedConst}; | ||
| pub use ty::{Alias, *}; |
There was a problem hiding this comment.
unrelated to this PR, I realized there's a conflict here - rustc_type_ir::Alias used to resolve to the TyKind::Alias variant, now it's the Alias struct. A bit unfortunate, but fine I guess.
(also IMO having a nested ty module (recently added, in the Alias<> PR) is very confusing (since rustc_type_ir is itself imported with the alias name of ty absolutely everywhere in the compiler), but oh well)
| ty::Opaque { def_id: key.def_id.into() }, | ||
| key.args, | ||
| ) | ||
| .try_to_opaque() |
this is part of #156181
as well as part of #152245
this immediately uses the recently-introduced
Alias<>type to narrow the kinds of aliases allowed in various places in codefyi @lcnr
r? @BoxyUwU