summaryrefslogtreecommitdiff
path: root/src/wast-parser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wast-parser.cc')
-rw-r--r--src/wast-parser.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/wast-parser.cc b/src/wast-parser.cc
index 25f73205..eab00380 100644
--- a/src/wast-parser.cc
+++ b/src/wast-parser.cc
@@ -220,6 +220,7 @@ bool IsCommand(TokenTypePair pair) {
case TokenType::AssertInvalid:
case TokenType::AssertMalformed:
case TokenType::AssertReturn:
+ case TokenType::AssertReturnFunc:
case TokenType::AssertReturnArithmeticNan:
case TokenType::AssertReturnCanonicalNan:
case TokenType::AssertTrap:
@@ -2383,6 +2384,9 @@ Result WastParser::ParseCommand(Script* script, CommandPtr* out_command) {
case TokenType::AssertReturn:
return ParseAssertReturnCommand(out_command);
+ case TokenType::AssertReturnFunc:
+ return ParseAssertReturnFuncCommand(out_command);
+
case TokenType::AssertReturnArithmeticNan:
return ParseAssertReturnArithmeticNanCommand(out_command);
@@ -2441,6 +2445,17 @@ Result WastParser::ParseAssertReturnCommand(CommandPtr* out_command) {
return Result::Ok;
}
+Result WastParser::ParseAssertReturnFuncCommand(CommandPtr* out_command) {
+ WABT_TRACE(ParseAssertReturnFuncCommand);
+ EXPECT(Lpar);
+ EXPECT(AssertReturnFunc);
+ auto command = MakeUnique<AssertReturnFuncCommand>();
+ CHECK_RESULT(ParseAction(&command->action));
+ EXPECT(Rpar);
+ *out_command = std::move(command);
+ return Result::Ok;
+}
+
Result WastParser::ParseAssertReturnArithmeticNanCommand(
CommandPtr* out_command) {
WABT_TRACE(ParseAssertReturnArithmeticNanCommand);