| use rustc_data_structures::fx::FxIndexMap; | |
| use rustc_middle::ty::TyCtxt; | |
| use crate::diagnostics::GlobOrListDelegationUnusedTargetExpr; | |
| pub fn check_glob_and_list_delegations_target_expr(tcx: TyCtxt<'_>) { | |
| let mut delegations_by_group_id = FxIndexMap::default(); | |
| for &id in tcx.resolutions(()).delegation_infos.keys() { | |
| if let Some(info) = tcx.hir_opt_delegation_info(id) | |
| && let Some((group_id, unused_target_expr)) = info.group_id | |
| { | |
| delegations_by_group_id | |
| .entry(group_id) | |
| .or_insert_with(|| (true, tcx.def_span(id))) | |
| .0 &= unused_target_expr; | |
| } | |
| } | |
| for (_, (unused_target_expr, span)) in delegations_by_group_id { | |
| if unused_target_expr { | |
| tcx.dcx().emit_err(GlobOrListDelegationUnusedTargetExpr { span }); | |
| } | |
| } | |
| } |