1fad3a1d3Sopenharmony_ciuse proc_macro2::{Ident, Span, TokenStream};
2fad3a1d3Sopenharmony_ciuse std::str::FromStr;
3fad3a1d3Sopenharmony_ciuse syn::Result;
4fad3a1d3Sopenharmony_ci
5fad3a1d3Sopenharmony_cifn parse(s: &str) -> Result<Ident> {
6fad3a1d3Sopenharmony_ci    syn::parse2(TokenStream::from_str(s).unwrap())
7fad3a1d3Sopenharmony_ci}
8fad3a1d3Sopenharmony_ci
9fad3a1d3Sopenharmony_cifn new(s: &str) -> Ident {
10fad3a1d3Sopenharmony_ci    Ident::new(s, Span::call_site())
11fad3a1d3Sopenharmony_ci}
12fad3a1d3Sopenharmony_ci
13fad3a1d3Sopenharmony_ci#[test]
14fad3a1d3Sopenharmony_cifn ident_parse() {
15fad3a1d3Sopenharmony_ci    parse("String").unwrap();
16fad3a1d3Sopenharmony_ci}
17fad3a1d3Sopenharmony_ci
18fad3a1d3Sopenharmony_ci#[test]
19fad3a1d3Sopenharmony_cifn ident_parse_keyword() {
20fad3a1d3Sopenharmony_ci    parse("abstract").unwrap_err();
21fad3a1d3Sopenharmony_ci}
22fad3a1d3Sopenharmony_ci
23fad3a1d3Sopenharmony_ci#[test]
24fad3a1d3Sopenharmony_cifn ident_parse_empty() {
25fad3a1d3Sopenharmony_ci    parse("").unwrap_err();
26fad3a1d3Sopenharmony_ci}
27fad3a1d3Sopenharmony_ci
28fad3a1d3Sopenharmony_ci#[test]
29fad3a1d3Sopenharmony_cifn ident_parse_lifetime() {
30fad3a1d3Sopenharmony_ci    parse("'static").unwrap_err();
31fad3a1d3Sopenharmony_ci}
32fad3a1d3Sopenharmony_ci
33fad3a1d3Sopenharmony_ci#[test]
34fad3a1d3Sopenharmony_cifn ident_parse_underscore() {
35fad3a1d3Sopenharmony_ci    parse("_").unwrap_err();
36fad3a1d3Sopenharmony_ci}
37fad3a1d3Sopenharmony_ci
38fad3a1d3Sopenharmony_ci#[test]
39fad3a1d3Sopenharmony_cifn ident_parse_number() {
40fad3a1d3Sopenharmony_ci    parse("255").unwrap_err();
41fad3a1d3Sopenharmony_ci}
42fad3a1d3Sopenharmony_ci
43fad3a1d3Sopenharmony_ci#[test]
44fad3a1d3Sopenharmony_cifn ident_parse_invalid() {
45fad3a1d3Sopenharmony_ci    parse("a#").unwrap_err();
46fad3a1d3Sopenharmony_ci}
47fad3a1d3Sopenharmony_ci
48fad3a1d3Sopenharmony_ci#[test]
49fad3a1d3Sopenharmony_cifn ident_new() {
50fad3a1d3Sopenharmony_ci    new("String");
51fad3a1d3Sopenharmony_ci}
52fad3a1d3Sopenharmony_ci
53fad3a1d3Sopenharmony_ci#[test]
54fad3a1d3Sopenharmony_cifn ident_new_keyword() {
55fad3a1d3Sopenharmony_ci    new("abstract");
56fad3a1d3Sopenharmony_ci}
57fad3a1d3Sopenharmony_ci
58fad3a1d3Sopenharmony_ci#[test]
59fad3a1d3Sopenharmony_ci#[should_panic(expected = "use Option<Ident>")]
60fad3a1d3Sopenharmony_cifn ident_new_empty() {
61fad3a1d3Sopenharmony_ci    new("");
62fad3a1d3Sopenharmony_ci}
63fad3a1d3Sopenharmony_ci
64fad3a1d3Sopenharmony_ci#[test]
65fad3a1d3Sopenharmony_ci#[should_panic(expected = "not a valid Ident")]
66fad3a1d3Sopenharmony_cifn ident_new_lifetime() {
67fad3a1d3Sopenharmony_ci    new("'static");
68fad3a1d3Sopenharmony_ci}
69fad3a1d3Sopenharmony_ci
70fad3a1d3Sopenharmony_ci#[test]
71fad3a1d3Sopenharmony_cifn ident_new_underscore() {
72fad3a1d3Sopenharmony_ci    new("_");
73fad3a1d3Sopenharmony_ci}
74fad3a1d3Sopenharmony_ci
75fad3a1d3Sopenharmony_ci#[test]
76fad3a1d3Sopenharmony_ci#[should_panic(expected = "use Literal instead")]
77fad3a1d3Sopenharmony_cifn ident_new_number() {
78fad3a1d3Sopenharmony_ci    new("255");
79fad3a1d3Sopenharmony_ci}
80fad3a1d3Sopenharmony_ci
81fad3a1d3Sopenharmony_ci#[test]
82fad3a1d3Sopenharmony_ci#[should_panic(expected = "\"a#\" is not a valid Ident")]
83fad3a1d3Sopenharmony_cifn ident_new_invalid() {
84fad3a1d3Sopenharmony_ci    new("a#");
85fad3a1d3Sopenharmony_ci}
86