oxilean_codegen/java_backend/
javalit_traits.rs1use crate::lcnf::*;
12
13use super::types::JavaLit;
14use std::fmt;
15
16impl fmt::Display for JavaLit {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 JavaLit::Int(n) => write!(f, "{}", n),
20 JavaLit::Long(n) => write!(f, "{}L", n),
21 JavaLit::Double(v) => {
22 if v.fract() == 0.0 && v.is_finite() {
23 write!(f, "{}.0", *v as i64)
24 } else {
25 write!(f, "{}", v)
26 }
27 }
28 JavaLit::Float(v) => {
29 if v.fract() == 0.0 && v.is_finite() {
30 write!(f, "{}.0f", *v as i64)
31 } else {
32 write!(f, "{}f", v)
33 }
34 }
35 JavaLit::Bool(b) => write!(f, "{}", b),
36 JavaLit::Char(c) => write!(f, "'{}'", c),
37 JavaLit::Str(s) => {
38 write!(f, "\"")?;
39 for c in s.chars() {
40 match c {
41 '"' => write!(f, "\\\"")?,
42 '\\' => write!(f, "\\\\")?,
43 '\n' => write!(f, "\\n")?,
44 '\r' => write!(f, "\\r")?,
45 '\t' => write!(f, "\\t")?,
46 c => write!(f, "{}", c)?,
47 }
48 }
49 write!(f, "\"")
50 }
51 JavaLit::Null => write!(f, "null"),
52 }
53 }
54}