summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/spectest-interp.cc39
-rw-r--r--src/tools/wasm-interp.cc11
-rw-r--r--src/tools/wasm-strip.cc18
-rw-r--r--src/tools/wasm-validate.cc9
-rw-r--r--src/tools/wasm2c.cc9
-rw-r--r--src/tools/wasm2wat.cc9
-rw-r--r--src/tools/wast2json.cc15
-rw-r--r--src/tools/wat-desugar.cc10
-rw-r--r--src/tools/wat2wasm.cc13
9 files changed, 76 insertions, 57 deletions
diff --git a/src/tools/spectest-interp.cc b/src/tools/spectest-interp.cc
index f66efcdd..22becce2 100644
--- a/src/tools/spectest-interp.cc
+++ b/src/tools/spectest-interp.cc
@@ -26,7 +26,7 @@
#include "src/binary-reader-interp.h"
#include "src/binary-reader.h"
#include "src/cast.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/interp.h"
#include "src/literal.h"
@@ -979,26 +979,28 @@ wabt::Result CommandRunner::ReadInvalidTextModule(string_view module_filename,
const std::string& header) {
std::unique_ptr<WastLexer> lexer =
WastLexer::CreateFileLexer(module_filename);
- ErrorHandlerFile error_handler(Location::Type::Text, lexer->MakeLineFinder(),
- stdout, header,
- ErrorHandlerFile::PrintHeader::Once);
+ Errors errors;
std::unique_ptr<::Script> script;
- wabt::Result result = ParseWastScript(lexer.get(), &script, &error_handler);
+ wabt::Result result = ParseWastScript(lexer.get(), &script, &errors);
if (Succeeded(result)) {
wabt::Module* module = script->GetFirstModule();
- result = ResolveNamesModule(module, &error_handler);
+ result = ResolveNamesModule(module, &errors);
if (Succeeded(result)) {
ValidateOptions options(s_features);
// Don't do a full validation, just validate the function signatures.
- result = ValidateFuncSignatures(module, &error_handler, options);
+ result = ValidateFuncSignatures(module, &errors, options);
}
}
+
+ auto line_finder = lexer->MakeLineFinder();
+ FormatErrorsToFile(errors, Location::Type::Text, line_finder.get(), stdout,
+ header, PrintHeader::Once);
return result;
}
static wabt::Result ReadModule(string_view module_filename,
Environment* env,
- ErrorHandler* error_handler,
+ Errors* errors,
DefinedModule** out_module) {
wabt::Result result;
std::vector<uint8_t> file_data;
@@ -1013,7 +1015,7 @@ static wabt::Result ReadModule(string_view module_filename,
ReadBinaryOptions options(s_features, s_log_stream.get(), kReadDebugNames,
kStopOnFirstError, kFailOnCustomSectionError);
result = ReadBinaryInterp(env, file_data.data(), file_data.size(), options,
- error_handler, out_module);
+ errors, out_module);
if (Succeeded(result)) {
if (s_verbose) {
@@ -1039,9 +1041,11 @@ wabt::Result CommandRunner::ReadInvalidModule(int line_number,
case ModuleType::Binary: {
DefinedModule* module;
- ErrorHandlerFile error_handler(Location::Type::Binary, {}, stdout, header,
- ErrorHandlerFile::PrintHeader::Once);
- return ReadModule(module_filename, env, &error_handler, &module);
+ Errors errors;
+ wabt::Result result = ReadModule(module_filename, env, &errors, &module);
+ FormatErrorsToFile(errors, Location::Type::Binary, {}, stdout, header,
+ PrintHeader::Once);
+ return result;
}
}
@@ -1050,9 +1054,10 @@ wabt::Result CommandRunner::ReadInvalidModule(int line_number,
wabt::Result CommandRunner::OnModuleCommand(const ModuleCommand* command) {
Environment::MarkPoint mark = env_.Mark();
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
wabt::Result result = ReadModule(command->filename, &env_,
- &error_handler, &last_module_);
+ &errors, &last_module_);
+ FormatErrorsToFile(errors, Location::Type::Binary);
if (Failed(result)) {
env_.ResetToMarkPoint(mark);
@@ -1160,11 +1165,11 @@ wabt::Result CommandRunner::OnAssertInvalidCommand(
wabt::Result CommandRunner::OnAssertUninstantiableCommand(
const AssertUninstantiableCommand* command) {
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
DefinedModule* module;
Environment::MarkPoint mark = env_.Mark();
- wabt::Result result =
- ReadModule(command->filename, &env_, &error_handler, &module);
+ wabt::Result result = ReadModule(command->filename, &env_, &errors, &module);
+ FormatErrorsToFile(errors, Location::Type::Binary);
if (Succeeded(result)) {
ExecResult exec_result = executor_.RunStartFunction(module);
diff --git a/src/tools/wasm-interp.cc b/src/tools/wasm-interp.cc
index 0e4e2dd8..01f18e66 100644
--- a/src/tools/wasm-interp.cc
+++ b/src/tools/wasm-interp.cc
@@ -26,7 +26,7 @@
#include "src/binary-reader-interp.h"
#include "src/binary-reader.h"
#include "src/cast.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/interp.h"
#include "src/literal.h"
@@ -128,7 +128,7 @@ static void RunAllExports(interp::Module* module,
static wabt::Result ReadModule(const char* module_filename,
Environment* env,
- ErrorHandler* error_handler,
+ Errors* errors,
DefinedModule** out_module) {
wabt::Result result;
std::vector<uint8_t> file_data;
@@ -143,7 +143,7 @@ static wabt::Result ReadModule(const char* module_filename,
ReadBinaryOptions options(s_features, s_log_stream.get(), kReadDebugNames,
kStopOnFirstError, kFailOnCustomSectionError);
result = ReadBinaryInterp(env, file_data.data(), file_data.size(), options,
- error_handler, out_module);
+ errors, out_module);
if (Succeeded(result)) {
if (s_verbose) {
@@ -186,9 +186,10 @@ static wabt::Result ReadAndRunModule(const char* module_filename) {
Environment env;
InitEnvironment(&env);
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
DefinedModule* module = nullptr;
- result = ReadModule(module_filename, &env, &error_handler, &module);
+ result = ReadModule(module_filename, &env, &errors, &module);
+ FormatErrorsToFile(errors, Location::Type::Binary);
if (Succeeded(result)) {
Executor executor(&env, s_trace_stream, s_thread_options);
ExecResult exec_result = executor.RunStartFunction(module);
diff --git a/src/tools/wasm-strip.cc b/src/tools/wasm-strip.cc
index c12d105a..5df87527 100644
--- a/src/tools/wasm-strip.cc
+++ b/src/tools/wasm-strip.cc
@@ -17,7 +17,7 @@
#include "src/binary.h"
#include "src/binary-reader.h"
#include "src/binary-reader-nop.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/leb128.h"
#include "src/option-parser.h"
#include "src/stream.h"
@@ -48,14 +48,15 @@ static void ParseOptions(int argc, char** argv) {
class BinaryReaderStrip : public BinaryReaderNop {
public:
- explicit BinaryReaderStrip(ErrorHandler* error_handler)
- : error_handler_(error_handler) {
+ explicit BinaryReaderStrip(Errors* errors)
+ : errors_(errors) {
stream_.WriteU32(WABT_BINARY_MAGIC, "WASM_BINARY_MAGIC");
stream_.WriteU32(WABT_BINARY_VERSION, "WASM_BINARY_VERSION");
}
- bool OnError(ErrorLevel error_level, const char* message) override {
- return error_handler_->OnError(error_level, state->offset, message);
+ bool OnError(const Error& error) override {
+ errors_->push_back(error);
+ return true;
}
Result BeginSection(BinarySection section_type, Offset size) override {
@@ -74,7 +75,7 @@ class BinaryReaderStrip : public BinaryReaderNop {
private:
MemoryStream stream_;
- ErrorHandler* error_handler_;
+ Errors* errors_;
};
int ProgramMain(int argc, char** argv) {
@@ -86,16 +87,17 @@ int ProgramMain(int argc, char** argv) {
std::vector<uint8_t> file_data;
result = ReadFile(s_filename.c_str(), &file_data);
if (Succeeded(result)) {
+ Errors errors;
Features features;
- ErrorHandlerFile error_handler(Location::Type::Binary);
const bool kReadDebugNames = false;
const bool kStopOnFirstError = true;
const bool kFailOnCustomSectionError = false;
ReadBinaryOptions options(features, nullptr, kReadDebugNames,
kStopOnFirstError, kFailOnCustomSectionError);
- BinaryReaderStrip reader(&error_handler);
+ BinaryReaderStrip reader(&errors);
result = ReadBinary(file_data.data(), file_data.size(), &reader, options);
+ FormatErrorsToFile(errors, Location::Type::Binary);
if (Succeeded(result)) {
result = reader.WriteToFile(s_filename);
diff --git a/src/tools/wasm-validate.cc b/src/tools/wasm-validate.cc
index 54c13daa..5ec6be1d 100644
--- a/src/tools/wasm-validate.cc
+++ b/src/tools/wasm-validate.cc
@@ -21,7 +21,7 @@
#include "src/binary-reader.h"
#include "src/binary-reader-ir.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/ir.h"
#include "src/option-parser.h"
#include "src/stream.h"
@@ -76,18 +76,19 @@ int ProgramMain(int argc, char** argv) {
std::vector<uint8_t> file_data;
result = ReadFile(s_infile.c_str(), &file_data);
if (Succeeded(result)) {
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
Module module;
const bool kStopOnFirstError = true;
ReadBinaryOptions options(s_features, s_log_stream.get(),
s_read_debug_names, kStopOnFirstError,
s_fail_on_custom_section_error);
result = ReadBinaryIr(s_infile.c_str(), file_data.data(), file_data.size(),
- options, &error_handler, &module);
+ options, &errors, &module);
if (Succeeded(result)) {
ValidateOptions options(s_features);
- result = ValidateModule(&module, &error_handler, options);
+ result = ValidateModule(&module, &errors, options);
}
+ FormatErrorsToFile(errors, Location::Type::Binary);
}
return result != Result::Ok;
}
diff --git a/src/tools/wasm2c.cc b/src/tools/wasm2c.cc
index 45a55b0b..c7ce2113 100644
--- a/src/tools/wasm2c.cc
+++ b/src/tools/wasm2c.cc
@@ -22,7 +22,7 @@
#include "src/apply-names.h"
#include "src/binary-reader.h"
#include "src/binary-reader-ir.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/generate-names.h"
#include "src/ir.h"
@@ -113,7 +113,7 @@ int ProgramMain(int argc, char** argv) {
std::vector<uint8_t> file_data;
result = ReadFile(s_infile.c_str(), &file_data);
if (Succeeded(result)) {
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
Module module;
const bool kStopOnFirstError = true;
const bool kFailOnCustomSectionError = true;
@@ -121,11 +121,11 @@ int ProgramMain(int argc, char** argv) {
s_read_debug_names, kStopOnFirstError,
kFailOnCustomSectionError);
result = ReadBinaryIr(s_infile.c_str(), file_data.data(), file_data.size(),
- options, &error_handler, &module);
+ options, &errors, &module);
if (Succeeded(result)) {
if (Succeeded(result)) {
ValidateOptions options(s_features);
- result = ValidateModule(&module, &error_handler, options);
+ result = ValidateModule(&module, &errors, options);
result |= GenerateNames(&module);
}
@@ -151,6 +151,7 @@ int ProgramMain(int argc, char** argv) {
}
}
}
+ FormatErrorsToFile(errors, Location::Type::Binary);
}
return result != Result::Ok;
}
diff --git a/src/tools/wasm2wat.cc b/src/tools/wasm2wat.cc
index fe1d17a9..53c7001c 100644
--- a/src/tools/wasm2wat.cc
+++ b/src/tools/wasm2wat.cc
@@ -22,7 +22,7 @@
#include "src/apply-names.h"
#include "src/binary-reader.h"
#include "src/binary-reader-ir.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/generate-names.h"
#include "src/ir.h"
@@ -107,18 +107,18 @@ int ProgramMain(int argc, char** argv) {
std::vector<uint8_t> file_data;
result = ReadFile(s_infile.c_str(), &file_data);
if (Succeeded(result)) {
- ErrorHandlerFile error_handler(Location::Type::Binary);
+ Errors errors;
Module module;
const bool kStopOnFirstError = true;
ReadBinaryOptions options(s_features, s_log_stream.get(),
s_read_debug_names, kStopOnFirstError,
s_fail_on_custom_section_error);
result = ReadBinaryIr(s_infile.c_str(), file_data.data(), file_data.size(),
- options, &error_handler, &module);
+ options, &errors, &module);
if (Succeeded(result)) {
if (Succeeded(result) && s_validate) {
ValidateOptions options(s_features);
- result = ValidateModule(&module, &error_handler, options);
+ result = ValidateModule(&module, &errors, options);
}
if (s_generate_names) {
@@ -138,6 +138,7 @@ int ProgramMain(int argc, char** argv) {
result = WriteWat(&stream, &module, s_write_wat_options);
}
}
+ FormatErrorsToFile(errors, Location::Type::Binary);
}
return result != Result::Ok;
}
diff --git a/src/tools/wast2json.cc b/src/tools/wast2json.cc
index f82a493d..5f5d211f 100644
--- a/src/tools/wast2json.cc
+++ b/src/tools/wast2json.cc
@@ -26,7 +26,7 @@
#include "src/binary-writer.h"
#include "src/binary-writer-spec.h"
#include "src/common.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/filenames.h"
#include "src/ir.h"
@@ -100,18 +100,18 @@ int ProgramMain(int argc, char** argv) {
WABT_FATAL("unable to read file: %s\n", s_infile);
}
- ErrorHandlerFile error_handler(Location::Type::Text, lexer->MakeLineFinder());
+ Errors errors;
std::unique_ptr<Script> script;
WastParseOptions parse_wast_options(s_features);
- Result result = ParseWastScript(lexer.get(), &script, &error_handler,
- &parse_wast_options);
+ Result result =
+ ParseWastScript(lexer.get(), &script, &errors, &parse_wast_options);
if (Succeeded(result)) {
- result = ResolveNamesScript(script.get(), &error_handler);
+ result = ResolveNamesScript(script.get(), &errors);
if (Succeeded(result) && s_validate) {
ValidateOptions options(s_features);
- result = ValidateScript(script.get(), &error_handler, options);
+ result = ValidateScript(script.get(), &errors, options);
}
if (Succeeded(result)) {
@@ -135,6 +135,9 @@ int ProgramMain(int argc, char** argv) {
}
}
+ auto line_finder = lexer->MakeLineFinder();
+ FormatErrorsToFile(errors, Location::Type::Text, line_finder.get());
+
return result != Result::Ok;
}
diff --git a/src/tools/wat-desugar.cc b/src/tools/wat-desugar.cc
index 5deb9615..767bd8d7 100644
--- a/src/tools/wat-desugar.cc
+++ b/src/tools/wat-desugar.cc
@@ -24,7 +24,7 @@
#include "src/apply-names.h"
#include "src/common.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/generate-names.h"
#include "src/ir.h"
@@ -90,11 +90,13 @@ int ProgramMain(int argc, char** argv) {
WABT_FATAL("unable to read %s\n", s_infile);
}
- ErrorHandlerFile error_handler(Location::Type::Text, lexer->MakeLineFinder());
+ Errors errors;
std::unique_ptr<Script> script;
WastParseOptions parse_wast_options(s_features);
- Result result = ParseWastScript(lexer.get(), &script, &error_handler,
- &parse_wast_options);
+ Result result =
+ ParseWastScript(lexer.get(), &script, &errors, &parse_wast_options);
+ auto line_finder = lexer->MakeLineFinder();
+ FormatErrorsToFile(errors, Location::Type::Text);
if (Succeeded(result)) {
Module* module = script->GetFirstModule();
diff --git a/src/tools/wat2wasm.cc b/src/tools/wat2wasm.cc
index 5810ba56..d2f2185d 100644
--- a/src/tools/wat2wasm.cc
+++ b/src/tools/wat2wasm.cc
@@ -25,7 +25,7 @@
#include "src/binary-writer.h"
#include "src/common.h"
-#include "src/error-handler.h"
+#include "src/error-formatter.h"
#include "src/feature.h"
#include "src/filenames.h"
#include "src/ir.h"
@@ -131,18 +131,18 @@ int ProgramMain(int argc, char** argv) {
WABT_FATAL("unable to read file: %s\n", s_infile);
}
- ErrorHandlerFile error_handler(Location::Type::Text, lexer->MakeLineFinder());
+ Errors errors;
std::unique_ptr<Module> module;
WastParseOptions parse_wast_options(s_features);
Result result =
- ParseWatModule(lexer.get(), &module, &error_handler, &parse_wast_options);
+ ParseWatModule(lexer.get(), &module, &errors, &parse_wast_options);
if (Succeeded(result)) {
- result = ResolveNamesModule(module.get(), &error_handler);
+ result = ResolveNamesModule(module.get(), &errors);
if (Succeeded(result) && s_validate) {
ValidateOptions options(s_features);
- result = ValidateModule(module.get(), &error_handler, options);
+ result = ValidateModule(module.get(), &errors, options);
}
if (Succeeded(result)) {
@@ -158,6 +158,9 @@ int ProgramMain(int argc, char** argv) {
}
}
+ auto line_finder = lexer->MakeLineFinder();
+ FormatErrorsToFile(errors, Location::Type::Text, line_finder.get());
+
return result != Result::Ok;
}