From bb4b65186668ff3ebd2f088778337608969a9567 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 21 Feb 2020 09:50:32 -0800 Subject: Move ValidateFuncSignatures after ParseModuleWat (#1338) Validating function signatures (i.e. making sure a named function type matches its explicit signature) really should be parse of text parsing. Example: (type $F (func (param i32) (result i32))) ... (call_indirect (type $F) (param f32) (result i32) ;; ERROR! This change doesn't quite get us there, but it's closer. The next step will be to remove `ValidateFuncSignatures` entirely and perform those checks in the parser itself. --- src/tools/spectest-interp.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'src/tools/spectest-interp.cc') diff --git a/src/tools/spectest-interp.cc b/src/tools/spectest-interp.cc index f29bb0ab..047a3dc1 100644 --- a/src/tools/spectest-interp.cc +++ b/src/tools/spectest-interp.cc @@ -1067,15 +1067,9 @@ wabt::Result CommandRunner::ReadInvalidTextModule(string_view module_filename, module_filename, file_data.data(), file_data.size()); Errors errors; if (Succeeded(result)) { - std::unique_ptr<::Script> script; + std::unique_ptr module; WastParseOptions options(s_features); - result = ParseWastScript(lexer.get(), &script, &errors, &options); - if (Succeeded(result)) { - wabt::Module* module = script->GetFirstModule(); - ValidateOptions options(s_features); - // Don't do a full validation, just validate the function signatures. - result = ValidateFuncSignatures(module, &errors, options); - } + result = ParseWatModule(lexer.get(), &module, &errors, &options); } auto line_finder = lexer->MakeLineFinder(); -- cgit v1.2.3