1use super::utils::id_is_gensym;
2use super::{Fmt, Formatter};
3use wast::core::{FunctionType, Type, TypeDef};
4
5impl<'src> Fmt for &Type<'src> {
6 fn fmt(&self, formatter: &mut Formatter) {
7 formatter.start_line();
8 formatter.write("(type ");
9 if let Some(id) = &self.id {
10 if !id_is_gensym(id) {
11 formatter.fmt(id);
12 formatter.write(" ");
13 }
14 }
15 formatter.fmt(&self.def);
16 formatter.write(")");
17 formatter.end_line();
18 }
19}
20
21impl<'src> Fmt for &TypeDef<'src> {
22 fn fmt(&self, formatter: &mut Formatter) {
23 match self {
24 TypeDef::Func(functy) => functy.fmt(formatter),
25 TypeDef::Struct(..) => unimplemented!(),
26 TypeDef::Array(..) => unimplemented!(),
27 };
28 }
29}
30
31impl<'src> Fmt for &FunctionType<'src> {
32 fn fmt(&self, formatter: &mut Formatter) {
33 formatter.write("(func");
34 if !self.params.is_empty() {
35 formatter.write(" ");
36 }
37 formatter.fmt(&*self.params);
38 if !self.results.is_empty() {
39 formatter.write(" ");
40 }
41 formatter.fmt(&*self.results);
42 formatter.write(")");
43 }
44}