diff options
Diffstat (limited to 'src/tools/spectest-interp.cc')
-rw-r--r-- | src/tools/spectest-interp.cc | 55 |
1 files changed, 7 insertions, 48 deletions
diff --git a/src/tools/spectest-interp.cc b/src/tools/spectest-interp.cc index f335e572..4e310d68 100644 --- a/src/tools/spectest-interp.cc +++ b/src/tools/spectest-interp.cc @@ -169,12 +169,6 @@ class AssertReturnCommand : public CommandMixin<CommandType::AssertReturn> { std::vector<ExpectedValue> expected; }; -class AssertReturnFuncCommand - : public CommandMixin<CommandType::AssertReturnFunc> { - public: - Action action; -}; - template <CommandType TypeEnum> class AssertTrapCommandBase : public CommandMixin<TypeEnum> { public: @@ -816,13 +810,6 @@ wabt::Result JSONParser::ParseCommand(CommandPtr* out_command) { EXPECT_KEY("expected"); CHECK_RESULT(ParseExpectedValues(&command->expected)); *out_command = std::move(command); - } else if (Match("\"assert_return_func\"")) { - auto command = MakeUnique<AssertReturnFuncCommand>(); - EXPECT(","); - CHECK_RESULT(ParseLine(&command->line)); - EXPECT(","); - CHECK_RESULT(ParseAction(&command->action)); - *out_command = std::move(command); } else if (Match("\"assert_trap\"")) { auto command = MakeUnique<AssertTrapCommand>(); EXPECT(","); @@ -898,7 +885,6 @@ class CommandRunner { wabt::Result OnAssertUninstantiableCommand( const AssertUninstantiableCommand*); wabt::Result OnAssertReturnCommand(const AssertReturnCommand*); - wabt::Result OnAssertReturnFuncCommand(const AssertReturnFuncCommand*); wabt::Result OnAssertTrapCommand(const AssertTrapCommand*); wabt::Result OnAssertExhaustionCommand(const AssertExhaustionCommand*); @@ -1004,11 +990,6 @@ wabt::Result CommandRunner::Run(const Script& script) { OnAssertReturnCommand(cast<AssertReturnCommand>(command.get()))); break; - case CommandType::AssertReturnFunc: - TallyCommand( - OnAssertReturnFuncCommand(cast<AssertReturnFuncCommand>(command.get()))); - break; - case CommandType::AssertTrap: TallyCommand( OnAssertTrapCommand(cast<AssertTrapCommand>(command.get()))); @@ -1339,35 +1320,6 @@ static bool TypedValuesAreEqual(const TypedValue& tv1, const TypedValue& tv2) { } } -wabt::Result CommandRunner::OnAssertReturnFuncCommand( - const AssertReturnFuncCommand* command) { - ExecResult exec_result = - RunAction(command->line, &command->action, RunVerbosity::Quiet); - - if (!exec_result.ok()) { - PrintError(command->line, "unexpected trap: %s", - ResultToString(exec_result.result).c_str()); - return wabt::Result::Error; - } - - if (exec_result.values.size() != 1) { - PrintError(command->line, - "expected 1 result in assert_return_func, got %" PRIzd, - exec_result.values.size()); - return wabt::Result::Error; - } - - const TypedValue& result = exec_result.values[0]; - if (result.type != Type::Funcref) { - PrintError(command->line, - "mismatch in result of assert_return_func: expected %s, got %s", - GetTypeName(Type::Funcref), TypedValueToString(result).c_str()); - return wabt::Result::Error; - } - - return wabt::Result::Ok; -} - wabt::Result CommandRunner::OnAssertReturnCommand( const AssertReturnCommand* command) { ExecResult exec_result = @@ -1413,6 +1365,13 @@ wabt::Result CommandRunner::OnAssertReturnCommand( TypedValueToString(actual).c_str()); result = wabt::Result::Error; } + } else if (expected.value.type == Type::Funcref) { + if (actual.type != Type::Funcref) { + PrintError(command->line, + "mismatch in result %" PRIzd + " of assert_return: expected funcref, got %s", + i, TypedValueToString(actual).c_str()); + } } else { if (!TypedValuesAreEqual(expected.value, actual)) { PrintError(command->line, |