authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-11-25 00:25:47-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-11-25 00:25:47-05:00
log18eb3c5f90900627b0582b7e341f9db9177fcc09
treed4f60a204af589e554ac2af70395cc2d784f0b80
parentcd36baf530d0c312884f485ed619438c1de91ef1

translate-c supports returning void


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,8 +937,7 @@ static AstNode *trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *s
937static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) {937static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) {
938 Expr *value_expr = stmt->getRetValue();938 Expr *value_expr = stmt->getRetValue();
939 if (value_expr == nullptr) {939 if (value_expr == nullptr) {
940 emit_warning(c, stmt->getLocStart(), "TODO handle C return void");940 return trans_create_node(c, NodeTypeReturnExpr);
941 return nullptr;
942 } else {941 } else {
943 AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr);942 AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr);
944 return_node->data.return_expr.expr = trans_expr(c, true, block, value_expr, TransRValue);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,6 +939,16 @@ pub fn addCases(cases: &tests.TranslateCContext) {
939 \\ return c"bar";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}
943953
944954