1
Fork 0

Fix failures in rustdoc

This commit is contained in:
Seiichi Uchida 2018-02-04 16:00:24 +09:00 committed by flip1995
parent 0de6544117
commit 24a6284fcd
No known key found for this signature in database
GPG key ID: 6757AB26F72F0084

View file

@ -67,7 +67,7 @@ impl Cfg {
/// If the content is not properly formatted, it will return an error indicating what and where /// If the content is not properly formatted, it will return an error indicating what and where
/// the error is. /// the error is.
pub fn parse(cfg: &MetaItem) -> Result<Cfg, InvalidCfgError> { pub fn parse(cfg: &MetaItem) -> Result<Cfg, InvalidCfgError> {
let name = cfg.ident.name; let name = cfg.name();
match cfg.node { match cfg.node {
MetaItemKind::Word => Ok(Cfg::Cfg(name, None)), MetaItemKind::Word => Ok(Cfg::Cfg(name, None)),
MetaItemKind::NameValue(ref lit) => match lit.node { MetaItemKind::NameValue(ref lit) => match lit.node {
@ -436,6 +436,42 @@ mod test {
Cfg::Cfg(Symbol::intern(name), Some(Symbol::intern(value))) Cfg::Cfg(Symbol::intern(name), Some(Symbol::intern(value)))
} }
fn dummy_meta_item_word(name: &str) -> MetaItem {
MetaItem {
name: Path::from_ident(DUMMY_SP, Ident::from_str(name)),
node: MetaItemKind::Word,
span: DUMMY_SP,
}
}
macro_rules! dummy_meta_item_list {
($name:ident, [$($list:ident),* $(,)*]) => {
MetaItem {
name: Path::from_ident(DUMMY_SP, Ident::from_str(stringify!($name))),
node: MetaItemKind::List(vec![
$(
dummy_spanned(NestedMetaItemKind::MetaItem(
dummy_meta_item_word(stringify!($list)),
)),
)*
]),
span: DUMMY_SP,
}
};
($name:ident, [$($list:expr),* $(,)*]) => {
MetaItem {
name: Path::from_ident(DUMMY_SP, Ident::from_str(stringify!($name))),
node: MetaItemKind::List(vec![
$(
dummy_spanned(NestedMetaItemKind::MetaItem($list)),
)*
]),
span: DUMMY_SP,
}
};
}
#[test] #[test]
fn test_cfg_not() { fn test_cfg_not() {
with_globals(|| { with_globals(|| {
@ -561,15 +597,11 @@ mod test {
#[test] #[test]
fn test_parse_ok() { fn test_parse_ok() {
with_globals(|| { with_globals(|| {
let mi = MetaItem { let mi = dummy_meta_item_word("all");
ident: Ident::from_str("all"),
node: MetaItemKind::Word,
span: DUMMY_SP,
};
assert_eq!(Cfg::parse(&mi), Ok(word_cfg("all"))); assert_eq!(Cfg::parse(&mi), Ok(word_cfg("all")));
let mi = MetaItem { let mi = MetaItem {
ident: Ident::from_str("all"), name: Path::from_ident(DUMMY_SP, Ident::from_str("all")),
node: MetaItemKind::NameValue(dummy_spanned(LitKind::Str( node: MetaItemKind::NameValue(dummy_spanned(LitKind::Str(
Symbol::intern("done"), Symbol::intern("done"),
StrStyle::Cooked, StrStyle::Cooked,
@ -578,111 +610,24 @@ mod test {
}; };
assert_eq!(Cfg::parse(&mi), Ok(name_value_cfg("all", "done"))); assert_eq!(Cfg::parse(&mi), Ok(name_value_cfg("all", "done")));
let mi = MetaItem { let mi = dummy_meta_item_list!(all, [a, b]);
ident: Ident::from_str("all"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") & word_cfg("b"))); assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") & word_cfg("b")));
let mi = MetaItem { let mi = dummy_meta_item_list!(any, [a, b]);
ident: Ident::from_str("any"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") | word_cfg("b"))); assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") | word_cfg("b")));
let mi = MetaItem { let mi = dummy_meta_item_list!(not, [a]);
ident: Ident::from_str("not"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert_eq!(Cfg::parse(&mi), Ok(!word_cfg("a"))); assert_eq!(Cfg::parse(&mi), Ok(!word_cfg("a")));
let mi = MetaItem { let mi = dummy_meta_item_list!(not, [
ident: Ident::from_str("not"), dummy_meta_item_list!(any, [
node: MetaItemKind::List(vec![ dummy_meta_item_word("a"),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem { dummy_meta_item_list!(all, [b, c]),
ident: Ident::from_str("any"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("all"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("c"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
})),
]), ]),
span: DUMMY_SP, ]);
};
assert_eq!(Cfg::parse(&mi), Ok(!(word_cfg("a") | (word_cfg("b") & word_cfg("c"))))); assert_eq!(Cfg::parse(&mi), Ok(!(word_cfg("a") | (word_cfg("b") & word_cfg("c")))));
let mi = MetaItem { let mi = dummy_meta_item_list!(all, [a, b, c]);
ident: Ident::from_str("all"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("c"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") & word_cfg("b") & word_cfg("c"))); assert_eq!(Cfg::parse(&mi), Ok(word_cfg("a") & word_cfg("b") & word_cfg("c")));
}) })
} }
@ -691,97 +636,36 @@ mod test {
fn test_parse_err() { fn test_parse_err() {
with_globals(|| { with_globals(|| {
let mi = MetaItem { let mi = MetaItem {
ident: Ident::from_str("foo"), name: Path::from_ident(DUMMY_SP, Ident::from_str("foo")),
node: MetaItemKind::NameValue(dummy_spanned(LitKind::Bool(false))), node: MetaItemKind::NameValue(dummy_spanned(LitKind::Bool(false))),
span: DUMMY_SP, span: DUMMY_SP,
}; };
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(not, [a, b]);
ident: Ident::from_str("not"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(not, []);
ident: Ident::from_str("not"),
node: MetaItemKind::List(vec![]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(foo, []);
ident: Ident::from_str("foo"),
node: MetaItemKind::List(vec![
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(all, [
ident: Ident::from_str("all"), dummy_meta_item_list!(foo, []),
node: MetaItemKind::List(vec![ dummy_meta_item_word("b"),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem { ]);
ident: Ident::from_str("foo"),
node: MetaItemKind::List(vec![]),
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("b"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(any, [
ident: Ident::from_str("any"), dummy_meta_item_word("a"),
node: MetaItemKind::List(vec![ dummy_meta_item_list!(foo, []),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem { ]);
ident: Ident::from_str("a"),
node: MetaItemKind::Word,
span: DUMMY_SP,
})),
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("foo"),
node: MetaItemKind::List(vec![]),
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
let mi = MetaItem { let mi = dummy_meta_item_list!(not, [
ident: Ident::from_str("not"), dummy_meta_item_list!(foo, []),
node: MetaItemKind::List(vec![ ]);
dummy_spanned(NestedMetaItemKind::MetaItem(MetaItem {
ident: Ident::from_str("foo"),
node: MetaItemKind::List(vec![]),
span: DUMMY_SP,
})),
]),
span: DUMMY_SP,
};
assert!(Cfg::parse(&mi).is_err()); assert!(Cfg::parse(&mi).is_err());
}) })
} }