]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_hir_analysis/src/variance/test.rs
New upstream version 1.74.1+dfsg1
[rustc.git] / compiler / rustc_hir_analysis / src / variance / test.rs
CommitLineData
781aab86
FG
1use rustc_hir::def::DefKind;
2use rustc_hir::def_id::CRATE_DEF_ID;
ba9703b0 3use rustc_middle::ty::TyCtxt;
dfeec247 4use rustc_span::symbol::sym;
60c5eb7d 5
353b0b11
FG
6use crate::errors;
7
416331ca 8pub fn test_variance(tcx: TyCtxt<'_>) {
781aab86
FG
9 if tcx.has_attr(CRATE_DEF_ID, sym::rustc_variance_of_opaques) {
10 for id in tcx.hir().items() {
11 if matches!(tcx.def_kind(id.owner_id), DefKind::OpaqueTy) {
12 let variances_of = tcx.variances_of(id.owner_id);
13
14 tcx.sess.emit_err(errors::VariancesOf {
15 span: tcx.def_span(id.owner_id),
16 variances_of: format!("{variances_of:?}"),
17 });
18 }
19 }
20 }
21
04454e1e
FG
22 // For unit testing: check for a special "rustc_variance"
23 // attribute and report an error with various results if found.
24 for id in tcx.hir().items() {
353b0b11 25 if tcx.has_attr(id.owner_id, sym::rustc_variance) {
2b03887a 26 let variances_of = tcx.variances_of(id.owner_id);
9c376795 27
353b0b11
FG
28 tcx.sess.emit_err(errors::VariancesOf {
29 span: tcx.def_span(id.owner_id),
30 variances_of: format!("{variances_of:?}"),
31 });
7cac9316
XL
32 }
33 }
7cac9316 34}