parsec supports C NULL to pointer implicit cast

This commit is contained in:
Josh Wolfe 2017-11-13 19:39:46 -07:00
parent a890380b6a
commit 1f28fcdec5
2 changed files with 12 additions and 3 deletions

View File

@ -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;

View File

@ -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;
\\}
);
}