authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-01-02 17:33:45+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-01-02 17:49:14+02:00
log386270425fbfdaf6aa1a8c9c56d8a3ee49897ecc
tree4741f87df1525fb5fb711b3c912057a1f4158763
parent576320e6d5bf706a0ee03a3e9318c8ef2fd6e76f
signature Commit is signed but in an unrecognized format.

translate-c use canonical type in casts


1 files changed, 3 insertions(+), 11 deletions(-)

src-self-hosted/translate_c.zig+3-11
...@@ -1676,15 +1676,7 @@ fn transCCast(...@@ -1676,15 +1676,7 @@ fn transCCast(
1676 builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")");1676 builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")");
1677 return &builtin_node.base;1677 return &builtin_node.base;
1678 }1678 }
1679 if (ZigClangQualType_getTypeClass(src_type) == .Elaborated) {1679 if (ZigClangQualType_getTypeClass(ZigClangQualType_getCanonicalType(dst_type)) == .Enum) {
1680 const elaborated_ty = @ptrCast(*const ZigClangElaboratedType, ZigClangQualType_getTypePtr(src_type));
1681 return transCCast(rp, scope, loc, dst_type, ZigClangElaboratedType_getNamedType(elaborated_ty), expr);
1682 }
1683 if (ZigClangQualType_getTypeClass(dst_type) == .Elaborated) {
1684 const elaborated_ty = @ptrCast(*const ZigClangElaboratedType, ZigClangQualType_getTypePtr(dst_type));
1685 return transCCast(rp, scope, loc, ZigClangElaboratedType_getNamedType(elaborated_ty), src_type, expr);
1686 }
1687 if (ZigClangQualType_getTypeClass(dst_type) == .Enum) {
1688 const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@intToEnum");1680 const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@intToEnum");
1689 try builtin_node.params.push(try transQualType(rp, dst_type, loc));1681 try builtin_node.params.push(try transQualType(rp, dst_type, loc));
1690 _ = try appendToken(rp.c, .Comma, ",");1682 _ = try appendToken(rp.c, .Comma, ",");
...@@ -1692,8 +1684,8 @@ fn transCCast(...@@ -1692,8 +1684,8 @@ fn transCCast(
1692 builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")");1684 builtin_node.rparen_token = try appendToken(rp.c, .RParen, ")");
1693 return &builtin_node.base;1685 return &builtin_node.base;
1694 }1686 }
1695 if (ZigClangQualType_getTypeClass(src_type) == .Enum and1687 if (ZigClangQualType_getTypeClass(ZigClangQualType_getCanonicalType(src_type)) == .Enum and
1696 ZigClangQualType_getTypeClass(dst_type) != .Enum)1688 ZigClangQualType_getTypeClass(ZigClangQualType_getCanonicalType(dst_type)) != .Enum)
1697 {1689 {
1698 const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@enumToInt");1690 const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@enumToInt");
1699 try builtin_node.params.push(expr);1691 try builtin_node.params.push(expr);