diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/spectest-interp.cc | 39 | ||||
-rw-r--r-- | src/tools/wasm-interp.cc | 11 | ||||
-rw-r--r-- | src/tools/wasm-strip.cc | 18 | ||||
-rw-r--r-- | src/tools/wasm-validate.cc | 9 | ||||
-rw-r--r-- | src/tools/wasm2c.cc | 9 | ||||
-rw-r--r-- | src/tools/wasm2wat.cc | 9 | ||||
-rw-r--r-- | src/tools/wast2json.cc | 15 | ||||
-rw-r--r-- | src/tools/wat-desugar.cc | 10 | ||||
-rw-r--r-- | src/tools/wat2wasm.cc | 13 |
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; } |