Rollup merge of #99821 - cjgillot:ast-lifetimes-2, r=compiler-errors
Remove separate indexing of early-bound regions ~Based on https://github.com/rust-lang/rust/pull/99728.~ This PR copies some modifications from https://github.com/rust-lang/rust/pull/97839 around object lifetime defaults. These modifications allow to stop counting generic parameters during lifetime resolution, and rely on the indexing given by `rustc_typeck::collect`.
This commit is contained in:
commit
5555e13a6e
17 changed files with 180 additions and 432 deletions
|
@ -199,6 +199,7 @@ provide! { tcx, def_id, other, cdata,
|
|||
codegen_fn_attrs => { table }
|
||||
impl_trait_ref => { table }
|
||||
const_param_default => { table }
|
||||
object_lifetime_default => { table }
|
||||
thir_abstract_const => { table }
|
||||
optimized_mir => { table }
|
||||
mir_for_ctfe => { table }
|
||||
|
|
|
@ -1076,6 +1076,11 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
|
|||
record_array!(self.tables.inferred_outlives_of[def_id] <- inferred_outlives);
|
||||
}
|
||||
}
|
||||
if let DefKind::TyParam | DefKind::ConstParam = def_kind {
|
||||
if let Some(default) = self.tcx.object_lifetime_default(def_id) {
|
||||
record!(self.tables.object_lifetime_default[def_id] <- default);
|
||||
}
|
||||
}
|
||||
if let DefKind::Trait | DefKind::TraitAlias = def_kind {
|
||||
record!(self.tables.super_predicates_of[def_id] <- self.tcx.super_predicates_of(def_id));
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ use rustc_index::{bit_set::FiniteBitSet, vec::IndexVec};
|
|||
use rustc_middle::metadata::ModChild;
|
||||
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
|
||||
use rustc_middle::middle::exported_symbols::{ExportedSymbol, SymbolExportInfo};
|
||||
use rustc_middle::middle::resolve_lifetime::ObjectLifetimeDefault;
|
||||
use rustc_middle::mir;
|
||||
use rustc_middle::ty::fast_reject::SimplifiedType;
|
||||
use rustc_middle::ty::query::Providers;
|
||||
|
@ -358,6 +359,7 @@ define_tables! {
|
|||
codegen_fn_attrs: Table<DefIndex, LazyValue<CodegenFnAttrs>>,
|
||||
impl_trait_ref: Table<DefIndex, LazyValue<ty::TraitRef<'static>>>,
|
||||
const_param_default: Table<DefIndex, LazyValue<rustc_middle::ty::Const<'static>>>,
|
||||
object_lifetime_default: Table<DefIndex, LazyValue<ObjectLifetimeDefault>>,
|
||||
optimized_mir: Table<DefIndex, LazyValue<mir::Body<'static>>>,
|
||||
mir_for_ctfe: Table<DefIndex, LazyValue<mir::Body<'static>>>,
|
||||
promoted_mir: Table<DefIndex, LazyValue<IndexVec<mir::Promoted, mir::Body<'static>>>>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue