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