Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/opaques.rs')
| -rw-r--r-- | crates/hir-ty/src/opaques.rs | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/crates/hir-ty/src/opaques.rs b/crates/hir-ty/src/opaques.rs index 9cb0022ca6..194c866c68 100644 --- a/crates/hir-ty/src/opaques.rs +++ b/crates/hir-ty/src/opaques.rs @@ -5,14 +5,14 @@ use hir_def::{ signatures::ImplSignature, }; use hir_expand::name::Name; -use la_arena::ArenaMap; +use la_arena::{Arena, ArenaMap}; use rustc_type_ir::inherent::Ty as _; use syntax::ast; use crate::{ ImplTraitId, InferBodyId, InferenceResult, db::{HirDatabase, InternedOpaqueTyId}, - lower::{ImplTraitIdx, ImplTraits}, + lower::{ImplTrait, ImplTraitIdx}, next_solver::{ DbInterner, ErrorGuaranteed, SolverDefId, StoredEarlyBinder, StoredTy, Ty, TypingMode, infer::{DbInternerInferExt, traits::ObligationCause}, @@ -29,7 +29,7 @@ pub(crate) fn opaque_types_defined_by<'db>( // A function may define its own RPITs. extend_with_opaques( db, - ImplTraits::return_type_impl_traits(db, func), + ImplTrait::return_type_impl_traits(db, func), |opaque_idx| ImplTraitId::ReturnTypeImplTrait(func, opaque_idx), result, ); @@ -38,7 +38,7 @@ pub(crate) fn opaque_types_defined_by<'db>( let extend_with_taits = |type_alias| { extend_with_opaques( db, - ImplTraits::type_alias_impl_traits(db, type_alias), + ImplTrait::type_alias_impl_traits(db, type_alias), |opaque_idx| ImplTraitId::TypeAliasImplTrait(type_alias, opaque_idx), result, ); @@ -81,15 +81,13 @@ pub(crate) fn opaque_types_defined_by<'db>( fn extend_with_opaques<'db>( db: &'db dyn HirDatabase, - opaques: &Option<Box<StoredEarlyBinder<ImplTraits>>>, + opaques: &Arena<ImplTrait>, mut make_impl_trait: impl FnMut(ImplTraitIdx) -> ImplTraitId, result: &mut Vec<SolverDefId<'db>>, ) { - if let Some(opaques) = opaques { - for (opaque_idx, _) in (**opaques).as_ref().skip_binder().impl_traits.iter() { - let opaque_id = InternedOpaqueTyId::new(db, make_impl_trait(opaque_idx)); - result.push(opaque_id.into()); - } + for (opaque_idx, _) in opaques.iter() { + let opaque_id = InternedOpaqueTyId::new(db, make_impl_trait(opaque_idx)); + result.push(opaque_id.into()); } } } @@ -116,12 +114,7 @@ pub(crate) fn tait_hidden_types( type_alias: TypeAliasId, ) -> ArenaMap<ImplTraitIdx, StoredEarlyBinder<StoredTy>> { // Call this first, to not perform redundant work if there are no TAITs. - let Some(taits_count) = ImplTraits::type_alias_impl_traits(db, type_alias) - .as_deref() - .map(|taits| taits.as_ref().skip_binder().impl_traits.len()) - else { - return ArenaMap::new(); - }; + let taits_count = ImplTrait::type_alias_impl_traits(db, type_alias).len(); let loc = type_alias.loc(db); let module = loc.module(db); |