summaryrefslogtreecommitdiff
path: root/src/emscripten-helpers.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/emscripten-helpers.cc')
-rw-r--r--src/emscripten-helpers.cc79
1 files changed, 41 insertions, 38 deletions
diff --git a/src/emscripten-helpers.cc b/src/emscripten-helpers.cc
index 5aa6f6be..dd39cb79 100644
--- a/src/emscripten-helpers.cc
+++ b/src/emscripten-helpers.cc
@@ -31,7 +31,7 @@
#include "src/binary-writer-spec.h"
#include "src/binary-writer.h"
#include "src/common.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/filenames.h"
#include "src/generate-names.h"
#include "src/ir.h"
@@ -85,28 +85,27 @@ wabt::WastLexer* wabt_new_wast_buffer_lexer(const char* filename,
}
WabtParseWatResult* wabt_parse_wat(wabt::WastLexer* lexer,
- wabt::ErrorHandlerBuffer* error_handler) {
+ wabt::Errors* errors) {
WabtParseWatResult* result = new WabtParseWatResult();
std::unique_ptr<wabt::Module> module;
- result->result = wabt::ParseWatModule(lexer, &module, error_handler);
+ result->result = wabt::ParseWatModule(lexer, &module, errors);
result->module = std::move(module);
return result;
}
WabtParseWastResult* wabt_parse_wast(wabt::WastLexer* lexer,
- wabt::ErrorHandlerBuffer* error_handler) {
+ wabt::Errors* errors) {
WabtParseWastResult* result = new WabtParseWastResult();
std::unique_ptr<wabt::Script> script;
- result->result = wabt::ParseWastScript(lexer, &script, error_handler);
+ result->result = wabt::ParseWastScript(lexer, &script, errors);
result->script = std::move(script);
return result;
}
-WabtReadBinaryResult* wabt_read_binary(
- const void* data,
- size_t size,
- int read_debug_names,
- wabt::ErrorHandlerBuffer* error_handler) {
+WabtReadBinaryResult* wabt_read_binary(const void* data,
+ size_t size,
+ int read_debug_names,
+ wabt::Errors* errors) {
wabt::ReadBinaryOptions options;
options.read_debug_names = read_debug_names;
@@ -115,29 +114,26 @@ WabtReadBinaryResult* wabt_read_binary(
// TODO(binji): Pass through from wabt_read_binary parameter.
const char* filename = "<binary>";
result->result =
- wabt::ReadBinaryIr(filename, data, size, options, error_handler, module);
+ wabt::ReadBinaryIr(filename, data, size, options, errors, module);
result->module.reset(module);
return result;
}
-wabt::Result::Enum wabt_resolve_names_module(
- wabt::Module* module,
- wabt::ErrorHandlerBuffer* error_handler) {
- return ResolveNamesModule(module, error_handler);
+wabt::Result::Enum wabt_resolve_names_module(wabt::Module* module,
+ wabt::Errors* errors) {
+ return ResolveNamesModule(module, errors);
}
-wabt::Result::Enum wabt_validate_module(
- wabt::Module* module,
- wabt::ErrorHandlerBuffer* error_handler) {
+wabt::Result::Enum wabt_validate_module(wabt::Module* module,
+ wabt::Errors* errors) {
wabt::ValidateOptions options;
- return ValidateModule(module, error_handler, options);
+ return ValidateModule(module, errors, options);
}
-wabt::Result::Enum wabt_validate_script(
- wabt::Script* script,
- wabt::ErrorHandlerBuffer* error_handler) {
+wabt::Result::Enum wabt_validate_script(wabt::Script* script,
+ wabt::Errors* errors) {
wabt::ValidateOptions options;
- return ValidateScript(script, error_handler, options);
+ return ValidateScript(script, errors, options);
}
WabtWriteScriptResult* wabt_write_binary_spec_script(
@@ -234,28 +230,35 @@ void wabt_destroy_wast_lexer(wabt::WastLexer* lexer) {
delete lexer;
}
-// ErrorHandlerBuffer
-wabt::ErrorHandlerBuffer* wabt_new_text_error_handler_buffer(void) {
- return new wabt::ErrorHandlerBuffer(wabt::Location::Type::Text);
+// Errors
+wabt::Errors* wabt_new_errors(void) {
+ return new wabt::Errors();
}
-wabt::ErrorHandlerBuffer* wabt_new_binary_error_handler_buffer(void) {
- return new wabt::ErrorHandlerBuffer(wabt::Location::Type::Binary);
-}
+wabt::OutputBuffer* wabt_format_text_errors(wabt::Errors* errors,
+ wabt::WastLexer* lexer) {
+ auto line_finder = lexer->MakeLineFinder();
+ std::string string_result = FormatErrorsToString(
+ *errors, wabt::Location::Type::Text, line_finder.get());
-const void* wabt_error_handler_buffer_get_data(
- wabt::ErrorHandlerBuffer* error_handler) {
- return error_handler->buffer().data();
+ wabt::OutputBuffer* result = new wabt::OutputBuffer();
+ std::copy(string_result.begin(), string_result.end(),
+ std::back_inserter(result->data));
+ return result;
}
-size_t wabt_error_handler_buffer_get_size(
- wabt::ErrorHandlerBuffer* error_handler) {
- return error_handler->buffer().size();
+wabt::OutputBuffer* wabt_format_binary_errors(wabt::Errors* errors) {
+ std::string string_result =
+ FormatErrorsToString(*errors, wabt::Location::Type::Binary);
+
+ wabt::OutputBuffer* result = new wabt::OutputBuffer();
+ std::copy(string_result.begin(), string_result.end(),
+ std::back_inserter(result->data));
+ return result;
}
-void wabt_destroy_error_handler_buffer(
- wabt::ErrorHandlerBuffer* error_handler) {
- delete error_handler;
+void wabt_destroy_errors(wabt::Errors* errors) {
+ delete errors;
}
// WabtParseWatResult