Skip to main content

oxilean_codegen/scala_backend/
scaladecl_traits.rs

1//! # ScalaDecl - Trait Implementations
2//!
3//! This module contains trait implementations for `ScalaDecl`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Display`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use crate::lcnf::*;
12
13use super::types::ScalaDecl;
14use std::fmt;
15
16impl fmt::Display for ScalaDecl {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        match self {
19            ScalaDecl::CaseClass(c) => write!(f, "{}", c),
20            ScalaDecl::Trait(t) => write!(f, "{}", t),
21            ScalaDecl::Enum(e) => write!(f, "{}", e),
22            ScalaDecl::Object(o) => write!(f, "{}", o),
23            ScalaDecl::Class(c) => write!(f, "{}", c),
24            ScalaDecl::Method(m) => write!(f, "{}", m),
25            ScalaDecl::Val(name, ty, expr) => {
26                write!(f, "val {}: {} = {}", name, ty, expr)
27            }
28            ScalaDecl::TypeAlias(name, params, ty) => {
29                write!(f, "type {}", name)?;
30                if !params.is_empty() {
31                    write!(f, "[")?;
32                    for (i, p) in params.iter().enumerate() {
33                        if i > 0 {
34                            write!(f, ", ")?;
35                        }
36                        write!(f, "{}", p)?;
37                    }
38                    write!(f, "]")?;
39                }
40                write!(f, " = {}", ty)
41            }
42            ScalaDecl::OpaqueType(name, params, ty) => {
43                write!(f, "opaque type {}", name)?;
44                if !params.is_empty() {
45                    write!(f, "[")?;
46                    for (i, p) in params.iter().enumerate() {
47                        if i > 0 {
48                            write!(f, ", ")?;
49                        }
50                        write!(f, "{}", p)?;
51                    }
52                    write!(f, "]")?;
53                }
54                write!(f, " = {}", ty)
55            }
56            ScalaDecl::Extension(ty, methods) => {
57                write!(f, "extension (x: {})", ty)?;
58                write!(f, " {{")?;
59                for m in methods {
60                    write!(f, "\n  {}", m)?;
61                }
62                write!(f, "\n}}")
63            }
64            ScalaDecl::Given(name, ty, methods) => {
65                write!(f, "given {}: {} with {{", name, ty)?;
66                for m in methods {
67                    write!(f, "\n  {}", m)?;
68                }
69                write!(f, "\n}}")
70            }
71            ScalaDecl::Comment(c) => write!(f, "// {}", c),
72            ScalaDecl::RawLine(l) => write!(f, "{}", l),
73        }
74    }
75}