Commit 1f28fcdec5
Changed files (2)
src
test
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;
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;
+ \\}
+ );
}