diff --git a/src/parsec.cpp b/src/parsec.cpp index 09f5be0fa7..a3c2456bb1 100644 --- a/src/parsec.cpp +++ b/src/parsec.cpp @@ -1267,6 +1267,8 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas node->data.fn_call_expr.params.append(target_node); return node; } + case CK_NullToPointer: + return trans_create_node(c, NodeTypeNullLiteral); case CK_Dependent: emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent"); return nullptr; @@ -1291,9 +1293,6 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas case CK_ToUnion: emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToUnion"); return nullptr; - case CK_NullToPointer: - emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToPointer"); - return nullptr; case CK_NullToMemberPointer: emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToMemberPointer"); return nullptr; diff --git a/test/parsec.zig b/test/parsec.zig index d47ea2e33e..c3f4ab5412 100644 --- a/test/parsec.zig +++ b/test/parsec.zig @@ -596,6 +596,16 @@ pub fn addCases(cases: &tests.ParseCContext) { \\ return @sizeOf(c_int); \\} ); + + cases.addC("null pointer implicit cast", + \\int* foo(void) { + \\ return 0; + \\} + , + \\export fn foo() -> ?&c_int { + \\ return null; + \\} + ); }