chore(vendor): add anyhow crate
This commit was merged in pull request #68.
This commit is contained in:
180
third_party/crates/syn-3.0.6/tests/test_meta.rs
vendored
Normal file
180
third_party/crates/syn-3.0.6/tests/test_meta.rs
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
#![allow(
|
||||
clippy::elidable_lifetime_names,
|
||||
clippy::needless_lifetimes,
|
||||
clippy::shadow_unrelated,
|
||||
clippy::too_many_lines,
|
||||
clippy::uninlined_format_args
|
||||
)]
|
||||
|
||||
#[macro_use]
|
||||
mod snapshot;
|
||||
|
||||
mod debug;
|
||||
|
||||
use quote::quote;
|
||||
use syn::parse::{ParseStream, Parser as _, Result};
|
||||
use syn::{Meta, MetaList, MetaNameValue, Token};
|
||||
|
||||
#[test]
|
||||
fn test_parse_meta_item_word() {
|
||||
let input = "hello";
|
||||
|
||||
snapshot!(input as Meta, @r#"
|
||||
Meta::Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "hello",
|
||||
},
|
||||
],
|
||||
}
|
||||
"#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_meta_name_value() {
|
||||
let input = "foo = 5";
|
||||
let (inner, meta) = (input, input);
|
||||
|
||||
snapshot!(inner as MetaNameValue, @r#"
|
||||
MetaNameValue {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
value: Expr::Lit {
|
||||
lit: 5,
|
||||
},
|
||||
}
|
||||
"#);
|
||||
|
||||
snapshot!(meta as Meta, @r#"
|
||||
Meta::NameValue {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
value: Expr::Lit {
|
||||
lit: 5,
|
||||
},
|
||||
}
|
||||
"#);
|
||||
|
||||
assert_eq!(meta, Meta::NameValue(inner));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_meta_item_list_lit() {
|
||||
let input = "foo(5)";
|
||||
let (inner, meta) = (input, input);
|
||||
|
||||
snapshot!(inner as MetaList, @r#"
|
||||
MetaList {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
delimiter: MacroDelimiter::Paren,
|
||||
tokens: TokenStream(`5`),
|
||||
}
|
||||
"#);
|
||||
|
||||
snapshot!(meta as Meta, @r#"
|
||||
Meta::List {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
delimiter: MacroDelimiter::Paren,
|
||||
tokens: TokenStream(`5`),
|
||||
}
|
||||
"#);
|
||||
|
||||
assert_eq!(meta, Meta::List(inner));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_meta_item_multiple() {
|
||||
let input = "foo(word, name = 5, list(name2 = 6), word2)";
|
||||
let (inner, meta) = (input, input);
|
||||
|
||||
snapshot!(inner as MetaList, @r#"
|
||||
MetaList {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
delimiter: MacroDelimiter::Paren,
|
||||
tokens: TokenStream(`word , name = 5 , list (name2 = 6) , word2`),
|
||||
}
|
||||
"#);
|
||||
|
||||
snapshot!(meta as Meta, @r#"
|
||||
Meta::List {
|
||||
path: Path {
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "foo",
|
||||
},
|
||||
],
|
||||
},
|
||||
delimiter: MacroDelimiter::Paren,
|
||||
tokens: TokenStream(`word , name = 5 , list (name2 = 6) , word2`),
|
||||
}
|
||||
"#);
|
||||
|
||||
assert_eq!(meta, Meta::List(inner));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_path() {
|
||||
let input = "::serde::Serialize";
|
||||
snapshot!(input as Meta, @r#"
|
||||
Meta::Path {
|
||||
leading_colon: Some,
|
||||
segments: [
|
||||
PathSegment {
|
||||
ident: "serde",
|
||||
},
|
||||
Token![::],
|
||||
PathSegment {
|
||||
ident: "Serialize",
|
||||
},
|
||||
],
|
||||
}
|
||||
"#);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fat_arrow_after_meta() {
|
||||
fn parse(input: ParseStream) -> Result<()> {
|
||||
while !input.is_empty() {
|
||||
let _: Meta = input.parse()?;
|
||||
let _: Token![=>] = input.parse()?;
|
||||
let brace;
|
||||
syn::braced!(brace in input);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
let input = quote! {
|
||||
target_os = "linux" => {}
|
||||
windows => {}
|
||||
};
|
||||
|
||||
parse.parse2(input).unwrap();
|
||||
}
|
||||
Reference in New Issue
Block a user