diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2017-11-25 11:56:17 -0500 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2017-11-25 11:56:17 -0500 |
| commit | b390929826062f81b9f796d4cf46a72aa23d291a (patch) | |
| tree | b869d5f2bf947dba9f943be5569fc2eea58f8f06 /src | |
| parent | bf20b260ce1b76b3b3d2c8a1bc1819eb3871bb00 (diff) | |
| download | zig-b390929826062f81b9f796d4cf46a72aa23d291a.tar.gz zig-b390929826062f81b9f796d4cf46a72aa23d291a.zip | |
translate-c supports break and continue
Diffstat (limited to 'src')
| -rw-r--r-- | src/translate_c.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/translate_c.cpp b/src/translate_c.cpp index 6c55aa6afc..00309e8bc1 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -2231,6 +2231,14 @@ static AstNode *trans_string_literal(Context *c, AstNode *block, StringLiteral * zig_unreachable(); } +static AstNode *trans_break_stmt(Context *c, AstNode *block, BreakStmt *stmt) { + return trans_create_node(c, NodeTypeBreak); +} + +static AstNode *trans_continue_stmt(Context *c, AstNode *block, ContinueStmt *stmt) { + return trans_create_node(c, NodeTypeContinue); +} + static AstNode *trans_stmt(Context *c, bool result_used, AstNode *block, Stmt *stmt, TransLRValue lrvalue) { Stmt::StmtClass sc = stmt->getStmtClass(); switch (sc) { @@ -2276,6 +2284,10 @@ static AstNode *trans_stmt(Context *c, bool result_used, AstNode *block, Stmt *s return trans_for_loop(c, block, (ForStmt *)stmt); case Stmt::StringLiteralClass: return trans_string_literal(c, block, (StringLiteral *)stmt); + case Stmt::BreakStmtClass: + return trans_break_stmt(c, block, (BreakStmt *)stmt); + case Stmt::ContinueStmtClass: + return trans_continue_stmt(c, block, (ContinueStmt *)stmt); case Stmt::CaseStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C CaseStmtClass"); return nullptr; @@ -2297,9 +2309,6 @@ static AstNode *trans_stmt(Context *c, bool result_used, AstNode *block, Stmt *s case Stmt::AttributedStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C AttributedStmtClass"); return nullptr; - case Stmt::BreakStmtClass: - emit_warning(c, stmt->getLocStart(), "TODO handle C BreakStmtClass"); - return nullptr; case Stmt::CXXCatchStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C CXXCatchStmtClass"); return nullptr; @@ -2312,9 +2321,6 @@ static AstNode *trans_stmt(Context *c, bool result_used, AstNode *block, Stmt *s case Stmt::CapturedStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C CapturedStmtClass"); return nullptr; - case Stmt::ContinueStmtClass: - emit_warning(c, stmt->getLocStart(), "TODO handle C ContinueStmtClass"); - return nullptr; case Stmt::CoreturnStmtClass: emit_warning(c, stmt->getLocStart(), "TODO handle C CoreturnStmtClass"); return nullptr; |
