oxilean_codegen/idris_backend/
idrispattern_traits.rs1use super::types::IdrisPattern;
12use std::fmt;
13
14impl fmt::Display for IdrisPattern {
15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 match self {
17 IdrisPattern::Wildcard => write!(f, "_"),
18 IdrisPattern::Var(x) => write!(f, "{}", x),
19 IdrisPattern::Lit(l) => write!(f, "{}", l),
20 IdrisPattern::Nil => write!(f, "[]"),
21 IdrisPattern::Tuple(ps) => {
22 write!(f, "(")?;
23 for (i, p) in ps.iter().enumerate() {
24 if i > 0 {
25 write!(f, ", ")?;
26 }
27 write!(f, "{}", p)?;
28 }
29 write!(f, ")")
30 }
31 IdrisPattern::Cons(h, t) => write!(f, "{} :: {}", h, t),
32 IdrisPattern::As(n, p) => write!(f, "{}@{}", n, p),
33 IdrisPattern::Implicit(p) => write!(f, "{{{}}}", p),
34 IdrisPattern::Dot(e) => write!(f, ".{}", e),
35 IdrisPattern::Con(c, args) => {
36 if args.is_empty() {
37 write!(f, "{}", c)
38 } else {
39 write!(f, "({}", c)?;
40 for a in args {
41 write!(f, " {}", a)?;
42 }
43 write!(f, ")")
44 }
45 }
46 }
47 }
48}