Skip to main content

oxilean_codegen/scala_backend/
scalaclass_traits.rs

1//! # ScalaClass - Trait Implementations
2//!
3//! This module contains trait implementations for `ScalaClass`.
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::ScalaClass;
14use std::fmt;
15
16impl fmt::Display for ScalaClass {
17    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18        for m in &self.modifiers {
19            write!(f, "{} ", m)?;
20        }
21        write!(f, "class {}", self.name)?;
22        if !self.type_params.is_empty() {
23            write!(f, "[")?;
24            for (i, tp) in self.type_params.iter().enumerate() {
25                if i > 0 {
26                    write!(f, ", ")?;
27                }
28                write!(f, "{}", tp)?;
29            }
30            write!(f, "]")?;
31        }
32        if !self.constructor_params.is_empty() {
33            write!(f, "(")?;
34            for (i, p) in self.constructor_params.iter().enumerate() {
35                if i > 0 {
36                    write!(f, ", ")?;
37                }
38                write!(f, "{}", p)?;
39            }
40            write!(f, ")")?;
41        }
42        if !self.extends_list.is_empty() {
43            write!(f, " extends {}", self.extends_list[0])?;
44            for e in &self.extends_list[1..] {
45                write!(f, " with {}", e)?;
46            }
47        }
48        write!(f, " {{")?;
49        for m in &self.methods {
50            write!(f, "\n  {}", m)?;
51        }
52        write!(f, "\n}}")
53    }
54}