diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2022-03-30 12:25:23 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2022-04-10 13:58:29 +0200 |
| commit | bbacfcb6c4b25ad4741ae9cf32db342f7e612b29 (patch) | |
| tree | 55019a3a367266afee7cd4a428df734bfbe0ba43 | |
| parent | 0c6e2466f233349a9d2dc6c6e4f5a22f86d7882b (diff) | |
| download | rust-bbacfcb6c4b25ad4741ae9cf32db342f7e612b29.tar.gz rust-bbacfcb6c4b25ad4741ae9cf32db342f7e612b29.zip | |
Avoid checking HIR in variances_of.
| -rw-r--r-- | compiler/rustc_typeck/src/variance/mod.rs | 51 |
1 files changed, 13 insertions, 38 deletions
diff --git a/compiler/rustc_typeck/src/variance/mod.rs b/compiler/rustc_typeck/src/variance/mod.rs index 66fb9eb8693..e622192f2c9 100644 --- a/compiler/rustc_typeck/src/variance/mod.rs +++ b/compiler/rustc_typeck/src/variance/mod.rs @@ -3,9 +3,8 @@ //! //! [rustc dev guide]: https://rustc-dev-guide.rust-lang.org/variance.html -use hir::Node; use rustc_arena::DroplessArena; -use rustc_hir as hir; +use rustc_hir::def::DefKind; use rustc_hir::def_id::DefId; use rustc_middle::ty::query::Providers; use rustc_middle::ty::{self, CrateVariancesMap, TyCtxt}; @@ -38,42 +37,18 @@ fn crate_variances(tcx: TyCtxt<'_>, (): ()) -> CrateVariancesMap<'_> { } fn variances_of(tcx: TyCtxt<'_>, item_def_id: DefId) -> &[ty::Variance] { - let id = tcx.hir().local_def_id_to_hir_id(item_def_id.expect_local()); - let unsupported = || { - // Variance not relevant. - span_bug!(tcx.hir().span(id), "asked to compute variance for wrong kind of item") - }; - match tcx.hir().get(id) { - Node::Item(item) => match item.kind { - hir::ItemKind::Enum(..) - | hir::ItemKind::Struct(..) - | hir::ItemKind::Union(..) - | hir::ItemKind::Fn(..) => {} - - _ => unsupported(), - }, - - Node::TraitItem(item) => match item.kind { - hir::TraitItemKind::Fn(..) => {} - - _ => unsupported(), - }, - - Node::ImplItem(item) => match item.kind { - hir::ImplItemKind::Fn(..) => {} - - _ => unsupported(), - }, - - Node::ForeignItem(item) => match item.kind { - hir::ForeignItemKind::Fn(..) => {} - - _ => unsupported(), - }, - - Node::Variant(_) | Node::Ctor(..) => {} - - _ => unsupported(), + match tcx.def_kind(item_def_id) { + DefKind::Fn + | DefKind::AssocFn + | DefKind::Enum + | DefKind::Struct + | DefKind::Union + | DefKind::Variant + | DefKind::Ctor(..) => {} + _ => { + // Variance not relevant. + span_bug!(tcx.def_span(item_def_id), "asked to compute variance for wrong kind of item") + } } // Everything else must be inferred. |
