| author | |
| committer | |
| log | 18eb3c5f90900627b0582b7e341f9db9177fcc09 |
| tree | d4f60a204af589e554ac2af70395cc2d784f0b80 |
| parent | cd36baf530d0c312884f485ed619438c1de91ef1 |
2 files changed, 11 insertions(+), 2 deletions(-)
src/translate_c.cpp+1-2| ... | ... | @@ -937,8 +937,7 @@ static AstNode *trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *s |
| 937 | 937 | static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) { |
| 938 | 938 | Expr *value_expr = stmt->getRetValue(); |
| 939 | 939 | if (value_expr == nullptr) { |
| 940 | emit_warning(c, stmt->getLocStart(), "TODO handle C return void"); | |
| 941 | return nullptr; | |
| 940 | return trans_create_node(c, NodeTypeReturnExpr); | |
| 942 | 941 | } else { |
| 943 | 942 | AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr); |
| 944 | 943 | return_node->data.return_expr.expr = trans_expr(c, true, block, value_expr, TransRValue); |
test/translate_c.zig+10| ... | ... | @@ -939,6 +939,16 @@ pub fn addCases(cases: &tests.TranslateCContext) { |
| 939 | 939 | \\ return c"bar"; |
| 940 | 940 | \\} |
| 941 | 941 | ); |
| 942 | ||
| 943 | cases.add("return void", | |
| 944 | \\void foo(void) { | |
| 945 | \\ return; | |
| 946 | \\} | |
| 947 | , | |
| 948 | \\pub fn foo() { | |
| 949 | \\ return; | |
| 950 | \\} | |
| 951 | ); | |
| 942 | 952 | } |
| 943 | 953 | |
| 944 | 954 |