diff options
| author | mark <markm@cs.wisc.edu> | 2020-03-15 23:31:17 -0500 |
|---|---|---|
| committer | mark <markm@cs.wisc.edu> | 2020-03-15 23:31:17 -0500 |
| commit | 2c2d41dc000714ed3b8b734e608862ff6c74a8d4 (patch) | |
| tree | 23fc2d200509241c46c52d6fdb5ad8b014fa83a5 | |
| parent | 131772c5e0ba40cd656dedb5e1990d36e3ea31cf (diff) | |
| download | rust-2c2d41dc000714ed3b8b734e608862ff6c74a8d4.tar.gz rust-2c2d41dc000714ed3b8b734e608862ff6c74a8d4.zip | |
make article_and_description primarily use def_kind
| -rw-r--r-- | src/librustc/ty/context.rs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 6fab55e9fd9..ada14ec4d0b 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -1515,20 +1515,21 @@ impl<'tcx> TyCtxt<'tcx> { /// Returns a displayable description and article for the given `def_id` (e.g. `("a", "struct")`). pub fn article_and_description(&self, def_id: DefId) -> (&'static str, &'static str) { - match self.def_key(def_id).disambiguated_data.data { - DefPathData::TypeNs(..) | DefPathData::ValueNs(..) | DefPathData::MacroNs(..) => { - let kind = self.def_kind(def_id).unwrap(); - (kind.article(), kind.descr(def_id)) - } - DefPathData::ClosureExpr => match self.generator_kind(def_id) { - None => ("a", "closure"), - Some(rustc_hir::GeneratorKind::Async(..)) => ("an", "async closure"), - Some(rustc_hir::GeneratorKind::Gen) => ("a", "generator"), - }, - DefPathData::LifetimeNs(..) => ("a", "lifetime"), - DefPathData::Impl => ("an", "implementation"), - _ => bug!("article_and_description called on def_id {:?}", def_id), - } + self.def_kind(def_id) + .map(|def_kind| (def_kind.article(), def_kind.descr(def_id))) + .unwrap_or_else(|| match self.def_key(def_id).disambiguated_data.data { + DefPathData::ClosureExpr => match self.generator_kind(def_id) { + None => ("a", "closure"), + Some(rustc_hir::GeneratorKind::Async(..)) => ("an", "async closure"), + Some(rustc_hir::GeneratorKind::Gen) => ("a", "generator"), + }, + DefPathData::LifetimeNs(..) => ("a", "lifetime"), + DefPathData::Impl => ("an", "implementation"), + DefPathData::TypeNs(..) | DefPathData::ValueNs(..) | DefPathData::MacroNs(..) => { + unreachable!() + } + _ => bug!("article_and_description called on def_id {:?}", def_id), + }) } } |
