rustc_monomorphize/mono_checks/
mod.rs

1//! This implements a single query, `check_mono_fn`, that gets fired for each
2//! monomorphization of all functions. This lets us implement monomorphization-time
3//! checks in a way that is friendly to incremental compilation.
4
5use rustc_middle::query::Providers;
6use rustc_middle::ty::{Instance, TyCtxt};
7
8mod abi_check;
9mod move_check;
10
11fn check_mono_item<'tcx>(tcx: TyCtxt<'tcx>, instance: Instance<'tcx>) {
12    let body = tcx.instance_mir(instance.def);
13    abi_check::check_feature_dependent_abi(tcx, instance, body);
14    move_check::check_moves(tcx, instance, body);
15}
16
17pub(super) fn provide(providers: &mut Providers) {
18    *providers = Providers {
19        check_mono_item,
20        skip_move_check_fns: move_check::skip_move_check_fns,
21        ..*providers
22    }
23}