authorgravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-11-13 19:39:46-07:00
committergravatar for thejoshwolfe@gmail.comJosh Wolfe <thejoshwolfe@gmail.com> 2017-11-13 19:39:46-07:00
log1f28fcdec5210762e1ebcf5d5d386d1427f82126
treea4c37660e6e76b6f3113195e8637176ac243d70c
parenta890380b6aaf68f97a29f2224bcb06295c292596

parsec supports C NULL to pointer implicit cast


2 files changed, 12 insertions(+), 3 deletions(-)

src/parsec.cpp+2-3
......@@ -1267,6 +1267,8 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas
12671267 node->data.fn_call_expr.params.append(target_node);
12681268 return node;
12691269 }
1270 case CK_NullToPointer:
1271 return trans_create_node(c, NodeTypeNullLiteral);
12701272 case CK_Dependent:
12711273 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_Dependent");
12721274 return nullptr;
......@@ -1291,9 +1293,6 @@ static AstNode *trans_implicit_cast_expr(Context *c, AstNode *block, ImplicitCas
12911293 case CK_ToUnion:
12921294 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_ToUnion");
12931295 return nullptr;
1294 case CK_NullToPointer:
1295 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToPointer");
1296 return nullptr;
12971296 case CK_NullToMemberPointer:
12981297 emit_warning(c, stmt->getLocStart(), "TODO handle C translation cast CK_NullToMemberPointer");
12991298 return nullptr;
test/parsec.zig+10
......@@ -596,6 +596,16 @@ pub fn addCases(cases: &tests.ParseCContext) {
596596 \\ return @sizeOf(c_int);
597597 \\}
598598 );
599
600 cases.addC("null pointer implicit cast",
601 \\int* foo(void) {
602 \\ return 0;
603 \\}
604 ,
605 \\export fn foo() -> ?&c_int {
606 \\ return null;
607 \\}
608 );
599609}
600610
601611