wasmfmt/fmt/
type.rs

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}