Skip to content

Commit 9a3bfb0

Browse files
authored
Unrolled build for #146117
Rollup merge of #146117 - GuillaumeGomez:fix-search-index-generation, r=notriddle Fix search index generation Fixes this issue: ``` error: couldn't generate documentation: failed to read column from disk: data consumer error: missing field `unknown number` at line 1 column 8 | = note: failed to create or modify "build/x86_64-unknown-linux-gnu/test/rustdoc-gui/doc/search.index/entry/": failed to read column from disk: data consumer error: missing field `unknown number` at line 1 column 8 warning: `theme_css` (lib doc) generated 1 warning error: could not document `theme_css` ``` The problem was that a conversion was forgotten for the `ItemType` enum. Thanks a lot to `@janis-bhm!` r? `@lolbinarycat`
2 parents a2c8b0b + ad2e096 commit 9a3bfb0

File tree

1 file changed

+41
-55
lines changed

1 file changed

+41
-55
lines changed

src/librustdoc/formats/item_type.rs

Lines changed: 41 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer, de};
88

99
use crate::clean;
1010

11+
macro_rules! item_type {
12+
($($variant:ident = $number:literal,)+) => {
13+
1114
/// Item type. Corresponds to `clean::ItemEnum` variants.
1215
///
1316
/// The search index uses item types encoded as smaller numbers which equal to
@@ -29,6 +32,44 @@ use crate::clean;
2932
#[derive(Copy, PartialEq, Eq, Hash, Clone, Debug, PartialOrd, Ord)]
3033
#[repr(u8)]
3134
pub(crate) enum ItemType {
35+
$($variant = $number,)+
36+
}
37+
38+
impl Serialize for ItemType {
39+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
40+
where
41+
S: Serializer,
42+
{
43+
(*self as u8).serialize(serializer)
44+
}
45+
}
46+
47+
impl<'de> Deserialize<'de> for ItemType {
48+
fn deserialize<D>(deserializer: D) -> Result<ItemType, D::Error>
49+
where
50+
D: Deserializer<'de>,
51+
{
52+
struct ItemTypeVisitor;
53+
impl<'de> de::Visitor<'de> for ItemTypeVisitor {
54+
type Value = ItemType;
55+
fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
56+
write!(formatter, "an integer between 0 and 27")
57+
}
58+
fn visit_u64<E: de::Error>(self, v: u64) -> Result<ItemType, E> {
59+
Ok(match v {
60+
$($number => ItemType::$variant,)+
61+
_ => return Err(E::missing_field("unknown number for `ItemType` enum")),
62+
})
63+
}
64+
}
65+
deserializer.deserialize_any(ItemTypeVisitor)
66+
}
67+
}
68+
69+
}
70+
}
71+
72+
item_type! {
3273
Keyword = 0,
3374
Primitive = 1,
3475
Module = 2,
@@ -60,61 +101,6 @@ pub(crate) enum ItemType {
60101
Attribute = 27,
61102
}
62103

63-
impl Serialize for ItemType {
64-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
65-
where
66-
S: Serializer,
67-
{
68-
(*self as u8).serialize(serializer)
69-
}
70-
}
71-
72-
impl<'de> Deserialize<'de> for ItemType {
73-
fn deserialize<D>(deserializer: D) -> Result<ItemType, D::Error>
74-
where
75-
D: Deserializer<'de>,
76-
{
77-
struct ItemTypeVisitor;
78-
impl<'de> de::Visitor<'de> for ItemTypeVisitor {
79-
type Value = ItemType;
80-
fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
81-
write!(formatter, "an integer between 0 and 25")
82-
}
83-
fn visit_u64<E: de::Error>(self, v: u64) -> Result<ItemType, E> {
84-
Ok(match v {
85-
0 => ItemType::Keyword,
86-
1 => ItemType::Primitive,
87-
2 => ItemType::Module,
88-
3 => ItemType::ExternCrate,
89-
4 => ItemType::Import,
90-
5 => ItemType::Struct,
91-
6 => ItemType::Enum,
92-
7 => ItemType::Function,
93-
8 => ItemType::TypeAlias,
94-
9 => ItemType::Static,
95-
10 => ItemType::Trait,
96-
11 => ItemType::Impl,
97-
12 => ItemType::TyMethod,
98-
13 => ItemType::Method,
99-
14 => ItemType::StructField,
100-
15 => ItemType::Variant,
101-
16 => ItemType::Macro,
102-
17 => ItemType::AssocType,
103-
18 => ItemType::Constant,
104-
19 => ItemType::AssocConst,
105-
20 => ItemType::Union,
106-
21 => ItemType::ForeignType,
107-
23 => ItemType::ProcAttribute,
108-
24 => ItemType::ProcDerive,
109-
25 => ItemType::TraitAlias,
110-
_ => return Err(E::missing_field("unknown number")),
111-
})
112-
}
113-
}
114-
deserializer.deserialize_any(ItemTypeVisitor)
115-
}
116-
}
117-
118104
impl<'a> From<&'a clean::Item> for ItemType {
119105
fn from(item: &'a clean::Item) -> ItemType {
120106
let kind = match &item.kind {

0 commit comments

Comments
 (0)