Auto merge of #79322 - jyn514:refactor-impl, r=estebank
Separate out a `hir::Impl` struct This makes it possible to pass the `Impl` directly to functions, instead of having to pass each of the many fields one at a time. It also simplifies matches in many cases. See `rustc_save_analysis::dump_visitor::process_impl` or `rustdoc::clean::clean_impl` for a good example of how this makes `impl`s easier to work with. r? `@petrochenkov` maybe?
This commit is contained in:
commit
150d1fee04
61 changed files with 258 additions and 246 deletions
|
@ -126,7 +126,7 @@ fn is_const_impl_raw(tcx: TyCtxt<'_>, def_id: LocalDefId) -> bool {
|
|||
matches!(
|
||||
node,
|
||||
hir::Node::Item(hir::Item {
|
||||
kind: hir::ItemKind::Impl { constness: hir::Constness::Const, .. },
|
||||
kind: hir::ItemKind::Impl(hir::Impl { constness: hir::Constness::Const, .. }),
|
||||
..
|
||||
})
|
||||
)
|
||||
|
|
|
@ -1146,8 +1146,8 @@ fn create_mono_items_for_default_impls<'tcx>(
|
|||
output: &mut Vec<Spanned<MonoItem<'tcx>>>,
|
||||
) {
|
||||
match item.kind {
|
||||
hir::ItemKind::Impl { ref generics, ref items, .. } => {
|
||||
for param in generics.params {
|
||||
hir::ItemKind::Impl(ref impl_) => {
|
||||
for param in impl_.generics.params {
|
||||
match param.kind {
|
||||
hir::GenericParamKind::Lifetime { .. } => {}
|
||||
hir::GenericParamKind::Type { .. } | hir::GenericParamKind::Const { .. } => {
|
||||
|
@ -1167,7 +1167,7 @@ fn create_mono_items_for_default_impls<'tcx>(
|
|||
let param_env = ty::ParamEnv::reveal_all();
|
||||
let trait_ref = tcx.normalize_erasing_regions(param_env, trait_ref);
|
||||
let overridden_methods: FxHashSet<_> =
|
||||
items.iter().map(|iiref| iiref.ident.normalize_to_macros_2_0()).collect();
|
||||
impl_.items.iter().map(|iiref| iiref.ident.normalize_to_macros_2_0()).collect();
|
||||
for method in tcx.provided_trait_methods(trait_ref.def_id) {
|
||||
if overridden_methods.contains(&method.ident.normalize_to_macros_2_0()) {
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue