mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-21 20:17:55 +00:00
33 lines
966 B
Rust
33 lines
966 B
Rust
![]() |
use rustc_hir::def::DefKind;
|
||
|
use rustc_hir::def_id::CRATE_DEF_ID;
|
||
|
use rustc_middle::ty::TyCtxt;
|
||
|
use rustc_span::symbol::sym;
|
||
|
|
||
|
pub(crate) fn variances(tcx: TyCtxt<'_>) {
|
||
|
if tcx.has_attr(CRATE_DEF_ID, sym::rustc_variance_of_opaques) {
|
||
|
for id in tcx.hir().items() {
|
||
|
let DefKind::OpaqueTy = tcx.def_kind(id.owner_id) else { continue };
|
||
|
|
||
|
let variances = tcx.variances_of(id.owner_id);
|
||
|
|
||
|
tcx.dcx().emit_err(crate::errors::VariancesOf {
|
||
|
span: tcx.def_span(id.owner_id),
|
||
|
variances: format!("{variances:?}"),
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for id in tcx.hir().items() {
|
||
|
if !tcx.has_attr(id.owner_id, sym::rustc_variance) {
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
let variances = tcx.variances_of(id.owner_id);
|
||
|
|
||
|
tcx.dcx().emit_err(crate::errors::VariancesOf {
|
||
|
span: tcx.def_span(id.owner_id),
|
||
|
variances: format!("{variances:?}"),
|
||
|
});
|
||
|
}
|
||
|
}
|