| ... | ... | @@ -382,8 +382,10 @@ fn declVisitorC(context: ?*c_void, decl: *const ZigClangDecl) callconv(.C) bool |
| 382 | 382 | } |
| 383 | 383 | |
| 384 | 384 | fn declVisitorNamesOnly(c: *Context, decl: *const ZigClangDecl) Error!void { |
| 385 | | const decl_name = try c.str(ZigClangDecl_getName_bytes_begin(decl)); |
| 386 | | _ = try c.global_names.put(decl_name, {}); |
| 385 | if (ZigClangDecl_castToNamedDecl(decl)) |named_decl| { |
| 386 | const decl_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(named_decl)); |
| 387 | _ = try c.global_names.put(decl_name, {}); |
| 388 | } |
| 387 | 389 | } |
| 388 | 390 | |
| 389 | 391 | fn declVisitor(c: *Context, decl: *const ZigClangDecl) Error!void { |
| ... | ... | @@ -403,6 +405,9 @@ fn declVisitor(c: *Context, decl: *const ZigClangDecl) Error!void { |
| 403 | 405 | .Var => { |
| 404 | 406 | return visitVarDecl(c, @ptrCast(*const ZigClangVarDecl, decl)); |
| 405 | 407 | }, |
| 408 | .Empty => { |
| 409 | // Do nothing |
| 410 | }, |
| 406 | 411 | else => { |
| 407 | 412 | const decl_name = try c.str(ZigClangDecl_getDeclKindName(decl)); |
| 408 | 413 | try emitWarning(c, ZigClangDecl_getLocation(decl), "ignoring {} declaration", .{decl_name}); |
| ... | ... | @@ -411,7 +416,7 @@ fn declVisitor(c: *Context, decl: *const ZigClangDecl) Error!void { |
| 411 | 416 | } |
| 412 | 417 | |
| 413 | 418 | fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void { |
| 414 | | const fn_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, fn_decl))); |
| 419 | const fn_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, fn_decl))); |
| 415 | 420 | if (c.global_scope.sym_table.contains(fn_name)) |
| 416 | 421 | return; // Avoid processing this decl twice |
| 417 | 422 | |
| ... | ... | @@ -521,7 +526,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void { |
| 521 | 526 | } |
| 522 | 527 | |
| 523 | 528 | fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void { |
| 524 | | const var_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, var_decl))); |
| 529 | const var_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, var_decl))); |
| 525 | 530 | if (c.global_scope.sym_table.contains(var_name)) |
| 526 | 531 | return; // Avoid processing this decl twice |
| 527 | 532 | const rp = makeRestorePoint(c); |
| ... | ... | @@ -648,7 +653,7 @@ fn transTypeDef(c: *Context, typedef_decl: *const ZigClangTypedefNameDecl, top_l |
| 648 | 653 | return transCreateNodeIdentifier(c, kv.value); // Avoid processing this decl twice |
| 649 | 654 | const rp = makeRestorePoint(c); |
| 650 | 655 | |
| 651 | | const typedef_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, typedef_decl))); |
| 656 | const typedef_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, typedef_decl))); |
| 652 | 657 | |
| 653 | 658 | // TODO https://github.com/ziglang/zig/issues/3756 |
| 654 | 659 | // TODO https://github.com/ziglang/zig/issues/1802 |
| ... | ... | @@ -708,7 +713,7 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!?* |
| 708 | 713 | return try transCreateNodeIdentifier(c, kv.value); // Avoid processing this decl twice |
| 709 | 714 | const record_loc = ZigClangRecordDecl_getLocation(record_decl); |
| 710 | 715 | |
| 711 | | var bare_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, record_decl))); |
| 716 | var bare_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, record_decl))); |
| 712 | 717 | var is_unnamed = false; |
| 713 | 718 | // Record declarations such as `struct {...} x` have no name but they're not |
| 714 | 719 | // anonymous hence here isAnonymousStructOrUnion is not needed |
| ... | ... | @@ -777,7 +782,7 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!?* |
| 777 | 782 | } |
| 778 | 783 | |
| 779 | 784 | var is_anon = false; |
| 780 | | var raw_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, field_decl))); |
| 785 | var raw_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, field_decl))); |
| 781 | 786 | if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl)) { |
| 782 | 787 | raw_name = try std.fmt.allocPrint(c.a(), "unnamed_{}", .{c.getMangle()}); |
| 783 | 788 | is_anon = true; |
| ... | ... | @@ -830,7 +835,7 @@ fn transEnumDecl(c: *Context, enum_decl: *const ZigClangEnumDecl) Error!?*ast.No |
| 830 | 835 | const rp = makeRestorePoint(c); |
| 831 | 836 | const enum_loc = ZigClangEnumDecl_getLocation(enum_decl); |
| 832 | 837 | |
| 833 | | var bare_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, enum_decl))); |
| 838 | var bare_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, enum_decl))); |
| 834 | 839 | var is_unnamed = false; |
| 835 | 840 | if (bare_name.len == 0) { |
| 836 | 841 | bare_name = try std.fmt.allocPrint(c.a(), "unnamed_{}", .{c.getMangle()}); |
| ... | ... | @@ -899,7 +904,7 @@ fn transEnumDecl(c: *Context, enum_decl: *const ZigClangEnumDecl) Error!?*ast.No |
| 899 | 904 | while (ZigClangEnumDecl_enumerator_iterator_neq(it, end_it)) : (it = ZigClangEnumDecl_enumerator_iterator_next(it)) { |
| 900 | 905 | const enum_const = ZigClangEnumDecl_enumerator_iterator_deref(it); |
| 901 | 906 | |
| 902 | | const enum_val_name = try c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, enum_const))); |
| 907 | const enum_val_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, enum_const))); |
| 903 | 908 | |
| 904 | 909 | const field_name = if (!is_unnamed and mem.startsWith(u8, enum_val_name, bare_name)) |
| 905 | 910 | enum_val_name[bare_name.len..] |
| ... | ... | @@ -1303,8 +1308,8 @@ fn transDeclStmt(rp: RestorePoint, scope: *Scope, stmt: *const ZigClangDeclStmt) |
| 1303 | 1308 | else |
| 1304 | 1309 | try appendToken(c, .Keyword_threadlocal, "threadlocal"); |
| 1305 | 1310 | const qual_type = ZigClangVarDecl_getTypeSourceInfo_getType(var_decl); |
| 1306 | | const name = try c.str(ZigClangDecl_getName_bytes_begin( |
| 1307 | | @ptrCast(*const ZigClangDecl, var_decl), |
| 1311 | const name = try c.str(ZigClangNamedDecl_getName_bytes_begin( |
| 1312 | @ptrCast(*const ZigClangNamedDecl, var_decl), |
| 1308 | 1313 | )); |
| 1309 | 1314 | const mangled_name = try block_scope.makeMangledName(c, name); |
| 1310 | 1315 | const node = try transCreateNodeVarDecl(c, false, ZigClangQualType_isConstQualified(qual_type), mangled_name); |
| ... | ... | @@ -1347,7 +1352,7 @@ fn transDeclRefExpr( |
| 1347 | 1352 | lrvalue: LRValue, |
| 1348 | 1353 | ) TransError!*ast.Node { |
| 1349 | 1354 | const value_decl = ZigClangDeclRefExpr_getDecl(expr); |
| 1350 | | const name = try rp.c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, value_decl))); |
| 1355 | const name = try rp.c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, value_decl))); |
| 1351 | 1356 | const mangled_name = scope.getAlias(name); |
| 1352 | 1357 | return transCreateNodeIdentifier(rp.c, mangled_name); |
| 1353 | 1358 | } |
| ... | ... | @@ -1938,7 +1943,7 @@ fn transInitListExprRecord( |
| 1938 | 1943 | // .field_name = expr |
| 1939 | 1944 | const period_tok = try appendToken(rp.c, .Period, "."); |
| 1940 | 1945 | |
| 1941 | | var raw_name = try rp.c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, field_decl))); |
| 1946 | var raw_name = try rp.c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, field_decl))); |
| 1942 | 1947 | if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl)) { |
| 1943 | 1948 | const name = rp.c.decl_table.get(@ptrToInt(ZigClangFieldDecl_getCanonicalDecl(field_decl))).?; |
| 1944 | 1949 | raw_name = try mem.dupe(rp.c.a(), u8, name.value); |
| ... | ... | @@ -2563,8 +2568,8 @@ fn transMemberExpr(rp: RestorePoint, scope: *Scope, stmt: *const ZigClangMemberE |
| 2563 | 2568 | break :blk try mem.dupe(rp.c.a(), u8, name.value); |
| 2564 | 2569 | } |
| 2565 | 2570 | } |
| 2566 | | const decl = @ptrCast(*const ZigClangDecl, member_decl); |
| 2567 | | break :blk try rp.c.str(ZigClangDecl_getName_bytes_begin(decl)); |
| 2571 | const decl = @ptrCast(*const ZigClangNamedDecl, member_decl); |
| 2572 | break :blk try rp.c.str(ZigClangNamedDecl_getName_bytes_begin(decl)); |
| 2568 | 2573 | }; |
| 2569 | 2574 | |
| 2570 | 2575 | const node = try transCreateNodeFieldAccess(rp.c, container_node, name); |
| ... | ... | @@ -3326,7 +3331,7 @@ fn qualTypeIntBitWidth(rp: RestorePoint, qt: ZigClangQualType, source_loc: ZigCl |
| 3326 | 3331 | .Typedef => { |
| 3327 | 3332 | const typedef_ty = @ptrCast(*const ZigClangTypedefType, ty); |
| 3328 | 3333 | const typedef_decl = ZigClangTypedefType_getDecl(typedef_ty); |
| 3329 | | const type_name = try rp.c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, typedef_decl))); |
| 3334 | const type_name = try rp.c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, typedef_decl))); |
| 3330 | 3335 | |
| 3331 | 3336 | if (mem.eql(u8, type_name, "uint8_t") or mem.eql(u8, type_name, "int8_t")) { |
| 3332 | 3337 | return 8; |
| ... | ... | @@ -4487,7 +4492,7 @@ fn finishTransFnProto( |
| 4487 | 4492 | const param_name_tok: ?ast.TokenIndex = blk: { |
| 4488 | 4493 | if (fn_decl) |decl| { |
| 4489 | 4494 | const param = ZigClangFunctionDecl_getParamDecl(decl, @intCast(c_uint, i)); |
| 4490 | | const param_name: []const u8 = try rp.c.str(ZigClangDecl_getName_bytes_begin(@ptrCast(*const ZigClangDecl, param))); |
| 4495 | const param_name: []const u8 = try rp.c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, param))); |
| 4491 | 4496 | if (param_name.len < 1) |
| 4492 | 4497 | break :blk null; |
| 4493 | 4498 | |