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
signature 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...@@ -509,7 +509,6 @@ pub extern fn ZigClangAPSInt_getRawData(self: ?*const struct_ZigClangAPSInt) [*c
509pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint;509pub extern fn ZigClangAPSInt_getNumWords(self: ?*const struct_ZigClangAPSInt) c_uint;
510pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr;510pub extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(self: struct_ZigClangAPValueLValueBase) ?*const struct_ZigClangExpr;
511pub extern fn ZigClangASTUnit_delete(arg0: ?*struct_ZigClangASTUnit) void;511pub extern fn ZigClangASTUnit_delete(arg0: ?*struct_ZigClangASTUnit) void;
512pub extern fn ZigClangVarDecl_getType(self: ?*const struct_ZigClangVarDecl) struct_ZigClangQualType;
513512
514pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType;513pub extern fn ZigClangFunctionDecl_getType(self: *const ZigClangFunctionDecl) struct_ZigClangQualType;
515pub extern fn ZigClangFunctionDecl_getLocation(self: *const ZigClangFunctionDecl) struct_ZigClangSourceLocation;514pub 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;
871pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;870pub extern fn ZigClangDeclStmt_decl_begin(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;
872pub extern fn ZigClangDeclStmt_decl_end(self: *const ZigClangDeclStmt) ZigClangDeclStmt_const_decl_iterator;871pub 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;
874pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind;875pub extern fn ZigClangVarDecl_getTLSKind(self: ?*const struct_ZigClangVarDecl) ZigClangVarDecl_TLSKind;
875pub const ZigClangVarDecl_TLSKind = extern enum {876pub 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, ";");
406401
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;
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
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}
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
453fn findBlockScope(inner: *Scope) *Scope.Block {464fn 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}
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
1467ZigClangSourceLocation ZigClangRecordDecl_getLocation(const ZigClangRecordDecl *zig_record_decl) {1462ZigClangSourceLocation 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}
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
1834enum ZigClangBuiltinTypeKind ZigClangBuiltinType_getKind(const struct ZigClangBuiltinType *self) {1839enum 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
759ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *);759ZIG_EXTERN_C void ZigClangASTUnit_delete(struct ZigClangASTUnit *);
760ZIG_EXTERN_C void ZigClangErrorMsg_delete(struct Stage2ErrorMsg *ptr, size_t len);760ZIG_EXTERN_C void ZigClangErrorMsg_delete(struct Stage2ErrorMsg *ptr, size_t len);
761761
762ZIG_EXTERN_C struct ZigClangQualType ZigClangVarDecl_getType(const struct ZigClangVarDecl *);
763
764ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *);762ZIG_EXTERN_C struct ZigClangASTContext *ZigClangASTUnit_getASTContext(struct ZigClangASTUnit *);
765ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *);763ZIG_EXTERN_C struct ZigClangSourceManager *ZigClangASTUnit_getSourceManager(struct ZigClangASTUnit *);
766ZIG_EXTERN_C bool ZigClangASTUnit_visitLocalTopLevelDecls(struct ZigClangASTUnit *, void *context,764ZIG_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
798ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl);796ZIG_EXTERN_C enum ZigClangDeclKind ZigClangDecl_getKind(const struct ZigClangDecl *decl);
799ZIG_EXTERN_C const char *ZigClangDecl_getDeclKindName(const struct ZigClangDecl *decl);797ZIG_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);
801ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl);801ZIG_EXTERN_C enum ZigClangVarDecl_TLSKind ZigClangVarDecl_getTLSKind(const struct ZigClangVarDecl *var_decl);
802802
803ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b);803ZIG_EXTERN_C bool ZigClangSourceLocation_eq(struct ZigClangSourceLocation a, struct ZigClangSourceLocation b);