summaryrefslogtreecommitdiff
path: root/src/tools/wast-desugar.cc
diff options
context:
space:
mode:
authorKarlSchimpf <karlschimpf@gmail.com>2017-06-22 07:59:09 -0700
committerGitHub <noreply@github.com>2017-06-22 07:59:09 -0700
commit917d3bfa6593c9a85c81b674770aec2ca404a4a2 (patch)
treeff279590a68c00714889d1667da9739f7e7cbd9a /src/tools/wast-desugar.cc
parentc0ae2e69b53f12e57833270e1b48a01864fb5156 (diff)
downloadwabt-917d3bfa6593c9a85c81b674770aec2ca404a4a2.tar.gz
wabt-917d3bfa6593c9a85c81b674770aec2ca404a4a2.tar.bz2
wabt-917d3bfa6593c9a85c81b674770aec2ca404a4a2.zip
Fix the validator to be able to validate exception handling constructs. (#514)
* Save state. * Add exception declaration syntax. * Extend validator to handle exception declarations. * Fix binary writer to handle exception declarations. * Fix code to handle external exception kind. * Regenerate lexer. * Fix bug with last merge. * Add exception declarations, and add examples. * Fix nits. * Initial extensions for expr visitor. * Save state. * Fix issues with master merge. * Reconcile issues with merge of tools wast2wasm and wast-desugar. * Save state. * Save work to move to mtv. * Fix resolving names on try/throw constructs. * Completed implementation of validation for exception handling. * Fix nits. * Combine Catch and CatchAll in IR. * Remove tryblock visitors. * Clean up to only use one visitor for each catch. * Rework the structure of try blocks and catches. * Remove the need for common CLI options. * Fix issues raised by binji. * Fix re2c generated file. * Fix memory leak, and fix nits.
Diffstat (limited to 'src/tools/wast-desugar.cc')
-rw-r--r--src/tools/wast-desugar.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/tools/wast-desugar.cc b/src/tools/wast-desugar.cc
index 55caf7d0..6103066f 100644
--- a/src/tools/wast-desugar.cc
+++ b/src/tools/wast-desugar.cc
@@ -38,6 +38,7 @@ static const char* s_infile;
static const char* s_outfile;
static WriteWatOptions s_write_wat_options;
static bool s_generate_names;
+static WastParseOptions s_parse_options;
static const char s_description[] =
R"( read a file in the wasm s-expression format and format it.
@@ -59,8 +60,13 @@ static void parse_options(int argc, char** argv) {
parser.AddHelpOption();
parser.AddOption('o', "output", "FILE", "Output file for the formatted file",
[](const char* argument) { s_outfile = argument; });
+ parser.AddOption("debug-parser", "Turn on debugging the parser of wast files",
+ []() { s_parse_options.debug_parsing = true; });
parser.AddOption('f', "fold-exprs", "Write folded expressions where possible",
[]() { s_write_wat_options.fold_exprs = true; });
+ parser.AddOption("future-exceptions",
+ "Test future extension for exception handling",
+ []() { s_parse_options.allow_future_exceptions = true; });
parser.AddOption(
"generate-names",
"Give auto-generated names to non-named functions, types, etc.",
@@ -81,7 +87,8 @@ int ProgramMain(int argc, char** argv) {
SourceErrorHandlerFile error_handler;
Script* script;
- Result result = parse_wast(lexer.get(), &script, &error_handler);
+ Result result = parse_wast(lexer.get(), &script, &error_handler,
+ &s_parse_options);
if (WABT_SUCCEEDED(result)) {
Module* module = script->GetFirstModule();