prettyplease/
lit.rs
1use crate::algorithm::Printer;
2use proc_macro2::Literal;
3use syn::{Lit, LitBool, LitByte, LitByteStr, LitCStr, LitChar, LitFloat, LitInt, LitStr};
4
5impl Printer {
6 pub fn lit(&mut self, lit: &Lit) {
7 match lit {
8 #![cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
9 Lit::Str(lit) => self.lit_str(lit),
10 Lit::ByteStr(lit) => self.lit_byte_str(lit),
11 Lit::CStr(lit) => self.lit_c_str(lit),
12 Lit::Byte(lit) => self.lit_byte(lit),
13 Lit::Char(lit) => self.lit_char(lit),
14 Lit::Int(lit) => self.lit_int(lit),
15 Lit::Float(lit) => self.lit_float(lit),
16 Lit::Bool(lit) => self.lit_bool(lit),
17 Lit::Verbatim(lit) => self.lit_verbatim(lit),
18 _ => unimplemented!("unknown Lit"),
19 }
20 }
21
22 pub fn lit_str(&mut self, lit: &LitStr) {
23 self.word(lit.token().to_string());
24 }
25
26 fn lit_byte_str(&mut self, lit: &LitByteStr) {
27 self.word(lit.token().to_string());
28 }
29
30 fn lit_c_str(&mut self, lit: &LitCStr) {
31 self.word(lit.token().to_string());
32 }
33
34 fn lit_byte(&mut self, lit: &LitByte) {
35 self.word(lit.token().to_string());
36 }
37
38 fn lit_char(&mut self, lit: &LitChar) {
39 self.word(lit.token().to_string());
40 }
41
42 fn lit_int(&mut self, lit: &LitInt) {
43 self.word(lit.token().to_string());
44 }
45
46 fn lit_float(&mut self, lit: &LitFloat) {
47 self.word(lit.token().to_string());
48 }
49
50 fn lit_bool(&mut self, lit: &LitBool) {
51 self.word(if lit.value { "true" } else { "false" });
52 }
53
54 fn lit_verbatim(&mut self, token: &Literal) {
55 self.word(token.to_string());
56 }
57}