| author | |
| committer | |
| log | 1a8f8c6262e68ece9dedd875b9a20b619f73035f |
| tree | 1562fb6ad50721ec51261258b4f9247fa5566d2b |
| parent | c79b8aeaef860528da645b956f21c8d95d05880d |
| signature |
4 files changed, 30 insertions(+), 13 deletions(-)
src-self-hosted/clang.zig+2-1| ... | ... | @@ -509,7 +509,6 @@ pub extern fn ZigClangAPSInt_getRawData(self: ?*const struct_ZigClangAPSInt) [*c |
| 509 | 509 | pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint; |
| 510 | 510 | pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr; |
| 511 | 511 | pub extern fn ZigClangASTUnit_delete(arg0: ?*struct_ZigClangASTUnit) void; |
| 512 | pub extern fn ZigClangVarDecl_getType(self: ?*const struct_ZigClangVarDecl) struct_ZigClangQualType; | |
| 513 | 512 | |
| 514 | 513 | pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType; |
| 515 | 514 | pub extern fn ZigClangFunctionDecl_getLocation(self: *const ZigClangFunctionDecl) struct_ZigClangSourceLocation; |
| ... | ... | @@ -871,6 +870,8 @@ pub const ZigClangDeclStmt_const_decl_iterator = [*c]const *struct_ZigClangDecl; |
| 871 | 870 | pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator; |
| 872 | 871 | pub extern fn ZigClangDeclStmt_decl_end(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator; |
| 873 | 872 | |
| 873 | pub extern fn ZigClangVarDecl_getType(self: ?*const struct_ZigClangVarDecl) struct_ZigClangQualType; | |
| 874 | pub extern fn ZigClangVarDecl_getInit(*const ZigClangVarDecl) ?*const ZigClangExpr; | |
| 874 | 875 | pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind; |
| 875 | 876 | pub const ZigClangVarDecl_TLSKind = extern enum { |
| 876 | 877 | None, |
src-self-hosted/translate_c.zig+16-5| ... | ... | @@ -398,11 +398,6 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe |
| 398 | 398 | @ptrCast(*const ZigClangDecl, var_decl), |
| 399 | 399 | )); |
| 400 | 400 | const name_token = try appendToken(c, .Identifier, c_name); |
| 401 | const eq_token = try appendToken(c, .Equal, "="); | |
| 402 | // TODO: | |
| 403 | // const init_node = ZigClangVarDecl_getInit(); | |
| 404 | const init_node: ?*ast.Node = null; | |
| 405 | const semicolon_token = try appendToken(c, .Semicolon, ";"); | |
| 406 | 401 | |
| 407 | 402 | const var_scope = try c.a().create(Scope.Var); |
| 408 | 403 | var_scope.* = Scope.Var{ |
| ... | ... | @@ -412,6 +407,13 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe |
| 412 | 407 | }; |
| 413 | 408 | scope = &var_scope.base; |
| 414 | 409 | |
| 410 | const eq_token = try appendToken(c, .Equal, "="); | |
| 411 | const init_node = if (ZigClangVarDecl_getInit(var_decl)) |expr| | |
| 412 | (try transExpr(rp, scope, expr)).node | |
| 413 | else | |
| 414 | null; | |
| 415 | const semicolon_token = try appendToken(c, .Semicolon, ";"); | |
| 416 | ||
| 415 | 417 | const node = try rp.c.a().create(ast.Node.VarDecl); |
| 416 | 418 | node.* = ast.Node.VarDecl{ |
| 417 | 419 | .base = ast.Node{ .id = .VarDecl }, |
| ... | ... | @@ -450,6 +452,15 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe |
| 450 | 452 | }; |
| 451 | 453 | } |
| 452 | 454 | |
| 455 | fn transExpr(rp: RestorePoint, scope: *Scope, expr: *const ZigClangExpr) !TransResult { | |
| 456 | return revertAndWarn( | |
| 457 | rp, | |
| 458 | error.UnsupportedTranslation, | |
| 459 | ZigClangExpr_getBeginLoc(expr), | |
| 460 | "TODO implement translation of Expr", | |
| 461 | ); | |
| 462 | } | |
| 463 | ||
| 453 | 464 | fn findBlockScope(inner: *Scope) *Scope.Block { |
| 454 | 465 | var scope = inner; |
| 455 | 466 | while (true) : (scope = scope.parent orelse unreachable) { |
src/zig_clang.cpp+10-5| ... | ... | @@ -1459,11 +1459,6 @@ const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *self) { |
| 1459 | 1459 | return casted->getDeclKindName(); |
| 1460 | 1460 | } |
| 1461 | 1461 | |
| 1462 | enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) { | |
| 1463 | auto casted = reinterpret_cast<const clang::VarDecl *>(self); | |
| 1464 | return (ZigClangVarDecl_TLSKind)casted->getTLSKind(); | |
| 1465 | } | |
| 1466 | ||
| 1467 | 1462 | ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) { |
| 1468 | 1463 | const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl); |
| 1469 | 1464 | return bitcast(record_decl->getLocation()); |
| ... | ... | @@ -1831,6 +1826,16 @@ struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *se |
| 1831 | 1826 | return bitcast(casted->getType()); |
| 1832 | 1827 | } |
| 1833 | 1828 | |
| 1829 | const struct ZigClangExpr *ZigClangVarDecl_getInit(const struct ZigClangVarDecl *self) { | |
| 1830 | auto casted = reinterpret_cast<const clang::VarDecl *>(self); | |
| 1831 | return reinterpret_cast<const ZigClangExpr *>(casted->getInit()); | |
| 1832 | } | |
| 1833 | ||
| 1834 | enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) { | |
| 1835 | auto casted = reinterpret_cast<const clang::VarDecl *>(self); | |
| 1836 | return (ZigClangVarDecl_TLSKind)casted->getTLSKind(); | |
| 1837 | } | |
| 1838 | ||
| 1834 | 1839 | enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) { |
| 1835 | 1840 | auto casted = reinterpret_cast<const clang::BuiltinType *>(self); |
| 1836 | 1841 | return (ZigClangBuiltinTypeKind)casted->getKind(); |
src/zig_clang.h+2-2| ... | ... | @@ -759,8 +759,6 @@ ZIG_EXTERN_C struct ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **ar |
| 759 | 759 | ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *); |
| 760 | 760 | ZIG_EXTERN_C void ZigClangErrorMsg_delete(struct Stage2ErrorMsg *ptr, size_t len); |
| 761 | 761 | |
| 762 | ZIG_EXTERN_C struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *); | |
| 763 | ||
| 764 | 762 | ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *); |
| 765 | 763 | ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *); |
| 766 | 764 | ZIG_EXTERN_C bool ZigClangASTUnit_visitLocalTopLevelDecls(struct ZigClangASTUnit *, void *context, |
| ... | ... | @@ -798,6 +796,8 @@ ZIG_EXTERN_C const char *ZigClangDecl_getName_bytes_begin(const struct ZigClangD |
| 798 | 796 | ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl); |
| 799 | 797 | ZIG_EXTERN_C const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *decl); |
| 800 | 798 | |
| 799 | ZIG_EXTERN_C struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *); | |
| 800 | ZIG_EXTERN_C const struct ZigClangExpr *ZigClangVarDecl_getInit(const struct ZigClangVarDecl *var_decl); | |
| 801 | 801 | ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl); |
| 802 | 802 | |
| 803 | 803 | ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b); |