| 102 | } |
| 103 | |
| 104 | fn print_alias(ret: &mut String, name: &Id, dest: &TypeRef) { |
| 105 | match &**dest.type_() { |
| 106 | Type::List(_) => { |
| 107 | // Don't emit arrays as top-level types; instead we special-case |
| 108 | // them in places like parameter lists so that we can pass them |
| 109 | // as pointer and length pairs. |
| 110 | } |
| 111 | _ => { |
| 112 | ret.push_str(&format!( |
| 113 | "using __wasi_{}_t = {};\n", |
| 114 | ident_name(name), |
| 115 | typeref_name(dest) |
| 116 | )); |
| 117 | ret.push_str("\n"); |
| 118 | |
| 119 | ret.push_str(&format!( |
| 120 | "static_assert(sizeof(__wasi_{}_t) == {}, \"witx calculated size\");\n", |
| 121 | ident_name(name), |
| 122 | dest.mem_size_align().size |
| 123 | )); |
| 124 | ret.push_str(&format!( |
| 125 | "static_assert(alignof(__wasi_{}_t) == {}, \"witx calculated align\");\n", |
| 126 | ident_name(name), |
| 127 | dest.mem_size_align().align |
| 128 | )); |
| 129 | |
| 130 | ret.push_str("\n"); |
| 131 | } |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | fn print_enum(ret: &mut String, name: &Id, v: &Variant) { |
| 136 | ret.push_str(&format!( |