]>
Commit | Line | Data |
---|---|---|
781aab86 FG |
1 | use rustc_hir::def::DefKind; |
2 | use rustc_hir::def_id::CRATE_DEF_ID; | |
ba9703b0 | 3 | use rustc_middle::ty::TyCtxt; |
dfeec247 | 4 | use rustc_span::symbol::sym; |
60c5eb7d | 5 | |
353b0b11 FG |
6 | use crate::errors; |
7 | ||
416331ca | 8 | pub 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 | } |