diff options
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 1b862de77..97777c9fe 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -215,6 +215,7 @@ public: BreakStmt* ParseBreakStatement(); ContinueStmt* ParseContinueStatement(); ReturnStmt* ParseReturnStatement(); + DeferStmt* ParseDeferStatement(); ExpressionStmt* ParseExpressionStatement(); Expr* ParseExpression(Precedence level = Precedence::Comma); @@ -5770,6 +5771,10 @@ Stmt* Parser::ParseStatement(Stmt* parentStmt) { statement = parseCompileTimeStmt(this); } + else if (LookAheadToken("defer")) + { + statement = ParseDeferStatement(); + } else if (LookAheadToken("try")) { statement = ParseExpressionStatement(); @@ -6299,6 +6304,15 @@ ReturnStmt* Parser::ParseReturnStatement() return returnStatement; } +DeferStmt* Parser::ParseDeferStatement() +{ + DeferStmt* deferStatement = astBuilder->create<DeferStmt>(); + FillPosition(deferStatement); + ReadToken("defer"); + deferStatement->statement = ParseStatement(); + return deferStatement; +} + ExpressionStmt* Parser::ParseExpressionStatement() { ExpressionStmt* statement = astBuilder->create<ExpressionStmt>(); |
