diff --git a/src/translate_c.cpp b/src/translate_c.cpp index bb1c81f429..9f80d4e898 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -937,8 +937,7 @@ static AstNode *trans_compound_stmt(Context *c, AstNode *parent, CompoundStmt *s static AstNode *trans_return_stmt(Context *c, AstNode *block, ReturnStmt *stmt) { Expr *value_expr = stmt->getRetValue(); if (value_expr == nullptr) { - emit_warning(c, stmt->getLocStart(), "TODO handle C return void"); - return nullptr; + return trans_create_node(c, NodeTypeReturnExpr); } else { AstNode *return_node = trans_create_node(c, NodeTypeReturnExpr); return_node->data.return_expr.expr = trans_expr(c, true, block, value_expr, TransRValue); diff --git a/test/translate_c.zig b/test/translate_c.zig index 08626f6e90..feb44f2cf0 100644 --- a/test/translate_c.zig +++ b/test/translate_c.zig @@ -939,6 +939,16 @@ pub fn addCases(cases: &tests.TranslateCContext) { \\ return c"bar"; \\} ); + + cases.add("return void", + \\void foo(void) { + \\ return; + \\} + , + \\pub fn foo() { + \\ return; + \\} + ); }