summaryrefslogtreecommitdiff
path: root/src/binary-writer-spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/binary-writer-spec.c')
-rw-r--r--src/binary-writer-spec.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/binary-writer-spec.c b/src/binary-writer-spec.c
index 909b709b..7bd0f29d 100644
--- a/src/binary-writer-spec.c
+++ b/src/binary-writer-spec.c
@@ -139,6 +139,7 @@ static void write_command_type(Context* ctx, const WasmCommand* command) {
"register",
"assert_malformed",
"assert_invalid",
+ NULL, /* ASSERT_INVALID_NON_BINARY, this command will never be written */
"assert_unlinkable",
"assert_uninstantiable",
"assert_return",
@@ -150,6 +151,7 @@ static void write_command_type(Context* ctx, const WasmCommand* command) {
WASM_NUM_COMMAND_TYPES);
write_key(ctx, "type");
+ assert(s_command_names[command->type] != NULL);
write_string(ctx, s_command_names[command->type]);
}
@@ -292,16 +294,13 @@ static void write_action_result_type(Context* ctx,
static void write_module(Context* ctx,
char* filename,
const WasmModule* module) {
- if (!ctx->write_modules)
- return;
-
WasmMemoryWriter writer;
WasmResult result = wasm_init_mem_writer(ctx->allocator, &writer);
if (WASM_SUCCEEDED(result)) {
WasmWriteBinaryOptions options = ctx->spec_options->write_binary_options;
result = wasm_write_binary_module(ctx->allocator, &writer.base, module,
&options);
- if (WASM_SUCCEEDED(result))
+ if (WASM_SUCCEEDED(result) && ctx->write_modules)
result = wasm_write_output_buffer_to_file(&writer.buf, filename);
wasm_close_mem_writer(&writer);
}
@@ -312,12 +311,9 @@ static void write_module(Context* ctx,
static void write_raw_module(Context* ctx,
char* filename,
const WasmRawModule* raw_module) {
- if (!ctx->write_modules)
- return;
-
if (raw_module->type == WASM_RAW_MODULE_TYPE_TEXT) {
write_module(ctx, filename, raw_module->text);
- } else {
+ } else if (ctx->write_modules) {
WasmFileStream stream;
WasmResult result = wasm_init_file_writer(&stream.writer, filename);
if (WASM_SUCCEEDED(result)) {
@@ -354,6 +350,13 @@ static void write_commands(Context* ctx, WasmScript* script) {
for (i = 0; i < script->commands.size; ++i) {
WasmCommand* command = &script->commands.data[i];
+ if (command->type == WASM_COMMAND_TYPE_ASSERT_INVALID_NON_BINARY)
+ continue;
+
+ if (i != 0)
+ write_separator(ctx);
+ wasm_writef(&ctx->json_stream, "\n");
+
wasm_writef(&ctx->json_stream, " {");
write_command_type(ctx, command);
write_separator(ctx);
@@ -459,15 +462,13 @@ static void write_commands(Context* ctx, WasmScript* script) {
write_action(ctx, &command->assert_trap.action);
break;
+ case WASM_COMMAND_TYPE_ASSERT_INVALID_NON_BINARY:
case WASM_NUM_COMMAND_TYPES:
assert(0);
break;
}
wasm_writef(&ctx->json_stream, "}");
- if (i != script->commands.size - 1)
- write_separator(ctx);
- wasm_writef(&ctx->json_stream, "\n");
}
wasm_writef(&ctx->json_stream, "]}\n");
}