| 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,7 +509,6 @@ pub extern fn ZigClangAPSInt_getRawData(self: ?*const struct_ZigClangAPSInt) [*c |
| 509 | pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint; | 509 | pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint; |
| 510 | pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr; | 510 | pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr; |
| 511 | pub extern fn ZigClangASTUnit_delete(arg0: ?*struct_ZigClangASTUnit) void; | 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 | pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType; | 513 | pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType; |
| 515 | pub extern fn ZigClangFunctionDecl_getLocation(self: *const ZigClangFunctionDecl) struct_ZigClangSourceLocation; | 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,6 +870,8 @@ pub const ZigClangDeclStmt_const_decl_iterator = [*c]const *struct_ZigClangDecl; |
| 871 | pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator; | 870 | pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator; |
| 872 | pub extern fn ZigClangDeclStmt_decl_end(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator; | 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 | pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind; | 875 | pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind; |
| 875 | pub const ZigClangVarDecl_TLSKind = extern enum { | 876 | pub const ZigClangVarDecl_TLSKind = extern enum { |
| 876 | None, | 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,11 +398,6 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe |
| 398 | @ptrCast(*const ZigClangDecl, var_decl), | 398 | @ptrCast(*const ZigClangDecl, var_decl), |
| 399 | )); | 399 | )); |
| 400 | const name_token = try appendToken(c, .Identifier, c_name); | 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 | const var_scope = try c.a().create(Scope.Var); | 402 | const var_scope = try c.a().create(Scope.Var); |
| 408 | var_scope.* = Scope.Var{ | 403 | var_scope.* = Scope.Var{ |
| ... | @@ -412,6 +407,13 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe | ... | @@ -412,6 +407,13 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe |
| 412 | }; | 407 | }; |
| 413 | scope = &var_scope.base; | 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 | const node = try rp.c.a().create(ast.Node.VarDecl); | 417 | const node = try rp.c.a().create(ast.Node.VarDecl); |
| 416 | node.* = ast.Node.VarDecl{ | 418 | node.* = ast.Node.VarDecl{ |
| 417 | .base = ast.Node{ .id = .VarDecl }, | 419 | .base = ast.Node{ .id = .VarDecl }, |
| ... | @@ -450,6 +452,15 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe | ... | @@ -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 | fn findBlockScope(inner: *Scope) *Scope.Block { | 464 | fn findBlockScope(inner: *Scope) *Scope.Block { |
| 454 | var scope = inner; | 465 | var scope = inner; |
| 455 | while (true) : (scope = scope.parent orelse unreachable) { | 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,11 +1459,6 @@ const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *self) { |
| 1459 | return casted->getDeclKindName(); | 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 | ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) { | 1462 | ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) { |
| 1468 | const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl); | 1463 | const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl); |
| 1469 | return bitcast(record_decl->getLocation()); | 1464 | return bitcast(record_decl->getLocation()); |
| ... | @@ -1831,6 +1826,16 @@ struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *se | ... | @@ -1831,6 +1826,16 @@ struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *se |
| 1831 | return bitcast(casted->getType()); | 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 | enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) { | 1839 | enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) { |
| 1835 | auto casted = reinterpret_cast<const clang::BuiltinType *>(self); | 1840 | auto casted = reinterpret_cast<const clang::BuiltinType *>(self); |
| 1836 | return (ZigClangBuiltinTypeKind)casted->getKind(); | 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,8 +759,6 @@ ZIG_EXTERN_C struct ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **ar |
| 759 | ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *); | 759 | ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *); |
| 760 | ZIG_EXTERN_C void ZigClangErrorMsg_delete(struct Stage2ErrorMsg *ptr, size_t len); | 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 | ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *); | 762 | ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *); |
| 765 | ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *); | 763 | ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *); |
| 766 | ZIG_EXTERN_C bool ZigClangASTUnit_visitLocalTopLevelDecls(struct ZigClangASTUnit *, void *context, | 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,6 +796,8 @@ ZIG_EXTERN_C const char *ZigClangDecl_getName_bytes_begin(const struct ZigClangD |
| 798 | ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl); | 796 | ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl); |
| 799 | ZIG_EXTERN_C const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *decl); | 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 | ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl); | 801 | ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl); |
| 802 | 802 | ||
| 803 | ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b); | 803 | ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b); |