23 lines
772 B
Rust
23 lines
772 B
Rust
//! This implements a single query, `check_mono_fn`, that gets fired for each
|
|
//! monomorphization of all functions. This lets us implement monomorphization-time
|
|
//! checks in a way that is friendly to incremental compilation.
|
|
|
|
use rustc_middle::query::Providers;
|
|
use rustc_middle::ty::{Instance, TyCtxt};
|
|
|
|
mod abi_check;
|
|
mod move_check;
|
|
|
|
fn check_mono_item<'tcx>(tcx: TyCtxt<'tcx>, instance: Instance<'tcx>) {
|
|
let body = tcx.instance_mir(instance.def);
|
|
abi_check::check_feature_dependent_abi(tcx, instance, body);
|
|
move_check::check_moves(tcx, instance, body);
|
|
}
|
|
|
|
pub(super) fn provide(providers: &mut Providers) {
|
|
*providers = Providers {
|
|
check_mono_item,
|
|
skip_move_check_fns: move_check::skip_move_check_fns,
|
|
..*providers
|
|
}
|
|
}
|