about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2021-01-12 13:58:16 +0100
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2021-02-05 17:22:27 +0100
commitd5174a4b0d3a72c8edefd65b2c1108f3168b24e0 (patch)
tree16d5e97483e5bcbb4954b804759f764936027749
parentf9435f4c92651d67d5dbaba13c5606c4c4fc1327 (diff)
downloadrust-d5174a4b0d3a72c8edefd65b2c1108f3168b24e0.tar.gz
rust-d5174a4b0d3a72c8edefd65b2c1108f3168b24e0.zip
Explicitly match all DefKind item in conversion to TypeKind
-rw-r--r--src/librustdoc/clean/types.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs
index e509ec3f021..cbe871bd65a 100644
--- a/src/librustdoc/clean/types.rs
+++ b/src/librustdoc/clean/types.rs
@@ -1304,6 +1304,49 @@ crate enum TypeKind {
     Primitive,
 }
 
+impl<'a> From<&'a hir::def::DefKind> for TypeKind {
+    fn from(other: &hir::def::DefKind) -> Self {
+        Self::from(*other)
+    }
+}
+
+impl From<hir::def::DefKind> for TypeKind {
+    fn from(other: hir::def::DefKind) -> Self {
+        match other {
+            hir::def::DefKind::Enum => Self::Enum,
+            hir::def::DefKind::Fn => Self::Function,
+            hir::def::DefKind::Mod => Self::Module,
+            hir::def::DefKind::Const => Self::Const,
+            hir::def::DefKind::Static => Self::Static,
+            hir::def::DefKind::Struct => Self::Struct,
+            hir::def::DefKind::Union => Self::Union,
+            hir::def::DefKind::Trait => Self::Trait,
+            hir::def::DefKind::TyAlias => Self::Typedef,
+            hir::def::DefKind::ForeignTy => Self::Foreign,
+            hir::def::DefKind::TraitAlias => Self::TraitAlias,
+            hir::def::DefKind::Macro(_) => Self::Macro,
+            hir::def::DefKind::Variant
+            | hir::def::DefKind::AssocTy
+            | hir::def::DefKind::TyParam
+            | hir::def::DefKind::ConstParam
+            | hir::def::DefKind::Ctor(..)
+            | hir::def::DefKind::AssocFn
+            | hir::def::DefKind::AssocConst
+            | hir::def::DefKind::ExternCrate
+            | hir::def::DefKind::Use
+            | hir::def::DefKind::ForeignMod
+            | hir::def::DefKind::AnonConst
+            | hir::def::DefKind::OpaqueTy
+            | hir::def::DefKind::Field
+            | hir::def::DefKind::LifetimeParam
+            | hir::def::DefKind::GlobalAsm
+            | hir::def::DefKind::Impl
+            | hir::def::DefKind::Closure
+            | hir::def::DefKind::Generator => Self::Foreign,
+        }
+    }
+}
+
 crate trait GetDefId {
     /// Use this method to get the [`DefId`] of a [`clean`] AST node.
     /// This will return [`None`] when called on a primitive [`clean::Type`].