oxilean_codegen/scala_backend/
scalapattern_traits.rs1use crate::lcnf::*;
12
13use super::types::ScalaPattern;
14use std::fmt;
15
16impl fmt::Display for ScalaPattern {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 ScalaPattern::Wildcard => write!(f, "_"),
20 ScalaPattern::Var(v) => write!(f, "{}", v),
21 ScalaPattern::Lit(lit) => write!(f, "{}", lit),
22 ScalaPattern::Typed(name, ty) => write!(f, "{}: {}", name, ty),
23 ScalaPattern::Tuple(pats) => {
24 write!(f, "(")?;
25 for (i, p) in pats.iter().enumerate() {
26 if i > 0 {
27 write!(f, ", ")?;
28 }
29 write!(f, "{}", p)?;
30 }
31 write!(f, ")")
32 }
33 ScalaPattern::Extractor(name, args) => {
34 write!(f, "{}", name)?;
35 if !args.is_empty() {
36 write!(f, "(")?;
37 for (i, a) in args.iter().enumerate() {
38 if i > 0 {
39 write!(f, ", ")?;
40 }
41 write!(f, "{}", a)?;
42 }
43 write!(f, ")")?;
44 }
45 Ok(())
46 }
47 ScalaPattern::Alt(pats) => {
48 for (i, p) in pats.iter().enumerate() {
49 if i > 0 {
50 write!(f, " | ")?;
51 }
52 write!(f, "{}", p)?;
53 }
54 Ok(())
55 }
56 }
57 }
58}