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