authorgravatar for codroid@gmail.comhryx <codroid@gmail.com> 2019-05-26 17:36:47-07:00
committergravatar for codroid@gmail.comhryx <codroid@gmail.com> 2019-05-26 17:36:47-07:00
log1a8f8c6262e68ece9dedd875b9a20b619f73035f
tree1562fb6ad50721ec51261258b4f9247fa5566d2b
parentc79b8aeaef860528da645b956f21c8d95d05880d
signaturelock-open Commit is signed but in an unrecognized format.

var decl: init node


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
509509pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint;
510510pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr;
511511pub extern fn ZigClangASTUnit_delete(arg0: ?*struct_ZigClangASTUnit) void;
512pub extern fn ZigClangVarDecl_getType(self: ?*const struct_ZigClangVarDecl) struct_ZigClangQualType;
513512
514513pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType;
515514pub extern fn ZigClangFunctionDecl_getLocation(self: *const ZigClangFunctionDecl) struct_ZigClangSourceLocation;
......@@ -871,6 +870,8 @@ pub const ZigClangDeclStmt_const_decl_iterator = [*c]const *struct_ZigClangDecl;
871870pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;
872871pub extern fn ZigClangDeclStmt_decl_end(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;
873872
873pub extern fn ZigClangVarDecl_getType(self: ?*const struct_ZigClangVarDecl) struct_ZigClangQualType;
874pub extern fn ZigClangVarDecl_getInit(*const ZigClangVarDecl) ?*const ZigClangExpr;
874875pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind;
875876pub const ZigClangVarDecl_TLSKind = extern enum {
876877 None,
src-self-hosted/translate_c.zig+16-5
......@@ -398,11 +398,6 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe
398398 @ptrCast(*const ZigClangDecl, var_decl),
399399 ));
400400 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, ";");
406401
407402 const var_scope = try c.a().create(Scope.Var);
408403 var_scope.* = Scope.Var{
......@@ -412,6 +407,13 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe
412407 };
413408 scope = &var_scope.base;
414409
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
415417 const node = try rp.c.a().create(ast.Node.VarDecl);
416418 node.* = ast.Node.VarDecl{
417419 .base = ast.Node{ .id = .VarDecl },
......@@ -450,6 +452,15 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe
450452 };
451453}
452454
455fn 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
453464fn findBlockScope(inner: *Scope) *Scope.Block {
454465 var scope = inner;
455466 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) {
14591459 return casted->getDeclKindName();
14601460}
14611461
1462enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) {
1463 auto casted = reinterpret_cast<const clang::VarDecl *>(self);
1464 return (ZigClangVarDecl_TLSKind)casted->getTLSKind();
1465}
1466
14671462ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) {
14681463 const clang::RecordDecl *record_decl = reinterpret_cast<const clang::RecordDecl *>(zig_record_decl);
14691464 return bitcast(record_decl->getLocation());
......@@ -1831,6 +1826,16 @@ struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *se
18311826 return bitcast(casted->getType());
18321827}
18331828
1829const 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
1834enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const ZigClangVarDecl *self) {
1835 auto casted = reinterpret_cast<const clang::VarDecl *>(self);
1836 return (ZigClangVarDecl_TLSKind)casted->getTLSKind();
1837}
1838
18341839enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) {
18351840 auto casted = reinterpret_cast<const clang::BuiltinType *>(self);
18361841 return (ZigClangBuiltinTypeKind)casted->getKind();
src/zig_clang.h+2-2
......@@ -759,8 +759,6 @@ ZIG_EXTERN_C struct ZigClangASTUnit *ZigClangLoadFromCommandLine(const char **ar
759759ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *);
760760ZIG_EXTERN_C void ZigClangErrorMsg_delete(struct Stage2ErrorMsg *ptr, size_t len);
761761
762ZIG_EXTERN_C struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *);
763
764762ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *);
765763ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *);
766764ZIG_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
798796ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl);
799797ZIG_EXTERN_C const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *decl);
800798
799ZIG_EXTERN_C struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *);
800ZIG_EXTERN_C const struct ZigClangExpr *ZigClangVarDecl_getInit(const struct ZigClangVarDecl *var_decl);
801801ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl);
802802
803803ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b);