rm ItemKind::OpaqueTy
This introduce an additional collection of opaques on HIR, as they can no longer be listed using the free item list.
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
use std::fmt::Write;
|
||||
|
||||
use rustc_hir::def::DefKind;
|
||||
use rustc_hir::def_id::{CRATE_DEF_ID, LocalDefId};
|
||||
use rustc_middle::ty::{GenericArgs, TyCtxt};
|
||||
use rustc_span::symbol::sym;
|
||||
@@ -24,18 +23,18 @@ fn format_variances(tcx: TyCtxt<'_>, def_id: LocalDefId) -> String {
|
||||
}
|
||||
|
||||
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 crate_items = tcx.hir_crate_items(());
|
||||
|
||||
if tcx.has_attr(CRATE_DEF_ID, sym::rustc_variance_of_opaques) {
|
||||
for id in crate_items.opaques() {
|
||||
tcx.dcx().emit_err(crate::errors::VariancesOf {
|
||||
span: tcx.def_span(id.owner_id),
|
||||
variances: format_variances(tcx, id.owner_id.def_id),
|
||||
span: tcx.def_span(id),
|
||||
variances: format_variances(tcx, id),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
for id in tcx.hir().items() {
|
||||
for id in crate_items.free_items() {
|
||||
if !tcx.has_attr(id.owner_id, sym::rustc_variance) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user