From f63338195da893bf3f50326fc69c1801182ebe80 Mon Sep 17 00:00:00 2001 From: Exonorid Date: Thu, 10 Jun 2021 13:56:55 -0700 Subject: [PATCH] Renamed @byteOffsetOf to @offsetOf --- doc/langref.html.in | 14 +++--- lib/std/os/bits/darwin.zig | 26 +++++----- lib/std/os/bits/dragonfly.zig | 2 +- src/AstGen.zig | 4 +- src/BuiltinFn.zig | 6 +-- src/Sema.zig | 6 +-- src/Zir.zig | 10 ++-- src/air.zig | 2 +- src/stage1/all_types.hpp | 6 +-- src/stage1/astgen.cpp | 16 +++---- src/stage1/codegen.cpp | 2 +- src/stage1/ir.cpp | 8 ++-- src/stage1/ir_print.cpp | 12 ++--- src/translate_c.zig | 2 +- src/translate_c/ast.zig | 14 +++--- test/behavior/bugs/6781.zig | 6 +-- test/behavior/sizeof_and_typeof.zig | 74 ++++++++++++++--------------- test/behavior/struct.zig | 2 +- test/compile_errors.zig | 16 +++---- 19 files changed, 114 insertions(+), 114 deletions(-) diff --git a/doc/langref.html.in b/doc/langref.html.in index 14b9e9bb27..c84885074e 100644 --- a/doc/langref.html.in +++ b/doc/langref.html.in @@ -2715,7 +2715,7 @@ test "pointer to non-bit-aligned field" { } {#code_end#}

- This can be observed with {#link|@bitOffsetOf#} and {#link|byteOffsetOf#}: + This can be observed with {#link|@bitOffsetOf#} and {#link|offsetOf#}:

{#code_begin|test#} const std = @import("std"); @@ -2733,9 +2733,9 @@ test "pointer to non-bit-aligned field" { try expect(@bitOffsetOf(BitField, "b") == 3); try expect(@bitOffsetOf(BitField, "c") == 6); - try expect(@byteOffsetOf(BitField, "a") == 0); - try expect(@byteOffsetOf(BitField, "b") == 0); - try expect(@byteOffsetOf(BitField, "c") == 0); + try expect(@offsetOf(BitField, "a") == 0); + try expect(@offsetOf(BitField, "b") == 0); + try expect(@offsetOf(BitField, "c") == 0); } } {#code_end#} @@ -7026,7 +7026,7 @@ fn func(y: *i32) void { For packed structs, non-byte-aligned fields will share a byte offset, but they will have different bit offsets.

- {#see_also|@byteOffsetOf#} + {#see_also|@offsetOf#} {#header_close#} {#header_open|@boolToInt#} @@ -7106,8 +7106,8 @@ fn func(y: *i32) void {

{#header_close#} - {#header_open|@byteOffsetOf#} -
{#syntax#}@byteOffsetOf(comptime T: type, comptime field_name: []const u8) comptime_int{#endsyntax#}
+ {#header_open|@offsetOf#} +
{#syntax#}@offsetOf(comptime T: type, comptime field_name: []const u8) comptime_int{#endsyntax#}

Returns the byte offset of a field relative to its containing struct.

diff --git a/lib/std/os/bits/darwin.zig b/lib/std/os/bits/darwin.zig index 3ec373bbbb..2f188e924e 100644 --- a/lib/std/os/bits/darwin.zig +++ b/lib/std/os/bits/darwin.zig @@ -188,12 +188,12 @@ pub const Kevent = extern struct { // to make sure the struct is laid out the same. These values were // produced from C code using the offsetof macro. comptime { - assert(@byteOffsetOf(Kevent, "ident") == 0); - assert(@byteOffsetOf(Kevent, "filter") == 8); - assert(@byteOffsetOf(Kevent, "flags") == 10); - assert(@byteOffsetOf(Kevent, "fflags") == 12); - assert(@byteOffsetOf(Kevent, "data") == 16); - assert(@byteOffsetOf(Kevent, "udata") == 24); + assert(@offsetOf(Kevent, "ident") == 0); + assert(@offsetOf(Kevent, "filter") == 8); + assert(@offsetOf(Kevent, "flags") == 10); + assert(@offsetOf(Kevent, "fflags") == 12); + assert(@offsetOf(Kevent, "data") == 16); + assert(@offsetOf(Kevent, "udata") == 24); } pub const kevent64_s = extern struct { @@ -210,13 +210,13 @@ pub const kevent64_s = extern struct { // to make sure the struct is laid out the same. These values were // produced from C code using the offsetof macro. comptime { - assert(@byteOffsetOf(kevent64_s, "ident") == 0); - assert(@byteOffsetOf(kevent64_s, "filter") == 8); - assert(@byteOffsetOf(kevent64_s, "flags") == 10); - assert(@byteOffsetOf(kevent64_s, "fflags") == 12); - assert(@byteOffsetOf(kevent64_s, "data") == 16); - assert(@byteOffsetOf(kevent64_s, "udata") == 24); - assert(@byteOffsetOf(kevent64_s, "ext") == 32); + assert(@offsetOf(kevent64_s, "ident") == 0); + assert(@offsetOf(kevent64_s, "filter") == 8); + assert(@offsetOf(kevent64_s, "flags") == 10); + assert(@offsetOf(kevent64_s, "fflags") == 12); + assert(@offsetOf(kevent64_s, "data") == 16); + assert(@offsetOf(kevent64_s, "udata") == 24); + assert(@offsetOf(kevent64_s, "ext") == 32); } pub const mach_port_t = c_uint; diff --git a/lib/std/os/bits/dragonfly.zig b/lib/std/os/bits/dragonfly.zig index 5c3ad305da..5b61db9e7f 100644 --- a/lib/std/os/bits/dragonfly.zig +++ b/lib/std/os/bits/dragonfly.zig @@ -360,7 +360,7 @@ pub const dirent = extern struct { d_name: [256]u8, pub fn reclen(self: dirent) u16 { - return (@byteOffsetOf(dirent, "d_name") + self.d_namlen + 1 + 7) & ~@as(u16, 7); + return (@offsetOf(dirent, "d_name") + self.d_namlen + 1 + 7) & ~@as(u16, 7); } }; diff --git a/src/AstGen.zig b/src/AstGen.zig index b2e3b88aab..374d27c3e6 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -2027,7 +2027,7 @@ fn unusedResultExpr(gz: *GenZir, scope: *Scope, statement: ast.Node.Index) Inner .shl_exact, .shr_exact, .bit_offset_of, - .byte_offset_of, + .offset_of, .cmpxchg_strong, .cmpxchg_weak, .splat, @@ -6816,7 +6816,7 @@ fn builtinCall( .shr_exact => return shiftOp(gz, scope, rl, node, params[0], params[1], .shr_exact), .bit_offset_of => return offsetOf(gz, scope, rl, node, params[0], params[1], .bit_offset_of), - .byte_offset_of => return offsetOf(gz, scope, rl, node, params[0], params[1], .byte_offset_of), + .offset_of => return offsetOf(gz, scope, rl, node, params[0], params[1], .offset_of), .c_undef => return simpleCBuiltin(gz, scope, rl, node, params[0], .c_undef), .c_include => return simpleCBuiltin(gz, scope, rl, node, params[0], .c_include), diff --git a/src/BuiltinFn.zig b/src/BuiltinFn.zig index aa0ba0515d..1715060afc 100644 --- a/src/BuiltinFn.zig +++ b/src/BuiltinFn.zig @@ -17,7 +17,7 @@ pub const Tag = enum { mul_add, byte_swap, bit_reverse, - byte_offset_of, + offset_of, call, c_define, c_import, @@ -235,9 +235,9 @@ pub const list = list: { }, }, .{ - "@byteOffsetOf", + "@offsetOf", .{ - .tag = .byte_offset_of, + .tag = .offset_of, .param_count = 2, }, }, diff --git a/src/Sema.zig b/src/Sema.zig index 6145b8c137..9814b68f3e 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -322,7 +322,7 @@ pub fn analyzeBody( .shl_exact => try sema.zirShlExact(block, inst), .shr_exact => try sema.zirShrExact(block, inst), .bit_offset_of => try sema.zirBitOffsetOf(block, inst), - .byte_offset_of => try sema.zirByteOffsetOf(block, inst), + .offset_of => try sema.zirOffsetOf(block, inst), .cmpxchg_strong => try sema.zirCmpxchg(block, inst), .cmpxchg_weak => try sema.zirCmpxchg(block, inst), .splat => try sema.zirSplat(block, inst), @@ -5860,10 +5860,10 @@ fn zirBitOffsetOf(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerE return sema.mod.fail(&block.base, src, "TODO: Sema.zirBitOffsetOf", .{}); } -fn zirByteOffsetOf(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { +fn zirOffsetOf(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { const inst_data = sema.code.instructions.items(.data)[inst].pl_node; const src = inst_data.src(); - return sema.mod.fail(&block.base, src, "TODO: Sema.zirByteOffsetOf", .{}); + return sema.mod.fail(&block.base, src, "TODO: Sema.zirOffsetOf", .{}); } fn zirCmpxchg(sema: *Sema, block: *Scope.Block, inst: Zir.Inst.Index) InnerError!*Inst { diff --git a/src/Zir.zig b/src/Zir.zig index b907c89081..8f40d95940 100644 --- a/src/Zir.zig +++ b/src/Zir.zig @@ -859,9 +859,9 @@ pub const Inst = struct { /// Implements the `@bitOffsetOf` builtin. /// Uses the `pl_node` union field with payload `Bin`. bit_offset_of, - /// Implements the `@byteOffsetOf` builtin. + /// Implements the `@offsetOf` builtin. /// Uses the `pl_node` union field with payload `Bin`. - byte_offset_of, + offset_of, /// Implements the `@cmpxchgStrong` builtin. /// Uses the `pl_node` union field with payload `Cmpxchg`. cmpxchg_strong, @@ -1166,7 +1166,7 @@ pub const Inst = struct { .shl_exact, .shr_exact, .bit_offset_of, - .byte_offset_of, + .offset_of, .cmpxchg_strong, .cmpxchg_weak, .splat, @@ -1436,7 +1436,7 @@ pub const Inst = struct { .shr_exact = .pl_node, .bit_offset_of = .pl_node, - .byte_offset_of = .pl_node, + .offset_of = .pl_node, .cmpxchg_strong = .pl_node, .cmpxchg_weak = .pl_node, .splat = .pl_node, @@ -2992,7 +2992,7 @@ const Writer = struct { .mod, .rem, .bit_offset_of, - .byte_offset_of, + .offset_of, .splat, .reduce, .atomic_load, diff --git a/src/air.zig b/src/air.zig index 490816ecd7..8f3ae6d631 100644 --- a/src/air.zig +++ b/src/air.zig @@ -407,7 +407,7 @@ pub const Inst = struct { pub const convertable_br_size = std.math.max(@sizeOf(BrBlockFlat), @sizeOf(Br)); pub const convertable_br_align = std.math.max(@alignOf(BrBlockFlat), @alignOf(Br)); comptime { - assert(@byteOffsetOf(BrBlockFlat, "base") == @byteOffsetOf(Br, "base")); + assert(@offsetOf(BrBlockFlat, "base") == @offsetOf(Br, "base")); } pub const BrBlockFlat = struct { diff --git a/src/stage1/all_types.hpp b/src/stage1/all_types.hpp index 949945dea4..34cd773abe 100644 --- a/src/stage1/all_types.hpp +++ b/src/stage1/all_types.hpp @@ -1768,7 +1768,7 @@ enum BuiltinFnId { BuiltinFnIdPtrToInt, BuiltinFnIdTagName, BuiltinFnIdFieldParentPtr, - BuiltinFnIdByteOffsetOf, + BuiltinFnIdOffsetOf, BuiltinFnIdBitOffsetOf, BuiltinFnIdAsyncCall, BuiltinFnIdShlExact, @@ -2576,7 +2576,7 @@ enum IrInstSrcId { IrInstSrcIdPanic, IrInstSrcIdTagName, IrInstSrcIdFieldParentPtr, - IrInstSrcIdByteOffsetOf, + IrInstSrcIdOffsetOf, IrInstSrcIdBitOffsetOf, IrInstSrcIdTypeInfo, IrInstSrcIdType, @@ -4047,7 +4047,7 @@ struct IrInstGenFieldParentPtr { TypeStructField *field; }; -struct IrInstSrcByteOffsetOf { +struct IrInstSrcOffsetOf { IrInstSrc base; IrInstSrc *type_value; diff --git a/src/stage1/astgen.cpp b/src/stage1/astgen.cpp index 6f38eca936..118b920f58 100644 --- a/src/stage1/astgen.cpp +++ b/src/stage1/astgen.cpp @@ -256,8 +256,8 @@ void destroy_instruction_src(IrInstSrc *inst) { return heap::c_allocator.destroy(reinterpret_cast(inst)); case IrInstSrcIdFieldParentPtr: return heap::c_allocator.destroy(reinterpret_cast(inst)); - case IrInstSrcIdByteOffsetOf: - return heap::c_allocator.destroy(reinterpret_cast(inst)); + case IrInstSrcIdOffsetOf: + return heap::c_allocator.destroy(reinterpret_cast(inst)); case IrInstSrcIdBitOffsetOf: return heap::c_allocator.destroy(reinterpret_cast(inst)); case IrInstSrcIdTypeInfo: @@ -777,8 +777,8 @@ static constexpr IrInstSrcId ir_inst_id(IrInstSrcFieldParentPtr *) { return IrInstSrcIdFieldParentPtr; } -static constexpr IrInstSrcId ir_inst_id(IrInstSrcByteOffsetOf *) { - return IrInstSrcIdByteOffsetOf; +static constexpr IrInstSrcId ir_inst_id(IrInstSrcOffsetOf *) { + return IrInstSrcIdOffsetOf; } static constexpr IrInstSrcId ir_inst_id(IrInstSrcBitOffsetOf *) { @@ -2472,10 +2472,10 @@ static IrInstSrc *ir_build_field_parent_ptr_src(Stage1AstGen *ag, Scope *scope, return &inst->base; } -static IrInstSrc *ir_build_byte_offset_of(Stage1AstGen *ag, Scope *scope, AstNode *source_node, +static IrInstSrc *ir_build_offset_of(Stage1AstGen *ag, Scope *scope, AstNode *source_node, IrInstSrc *type_value, IrInstSrc *field_name) { - IrInstSrcByteOffsetOf *instruction = ir_build_instruction(ag, scope, source_node); + IrInstSrcOffsetOf *instruction = ir_build_instruction(ag, scope, source_node); instruction->type_value = type_value; instruction->field_name = field_name; @@ -4945,7 +4945,7 @@ static IrInstSrc *astgen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode arg0_value, arg1_value, arg2_value); return ir_lval_wrap(ag, scope, field_parent_ptr, lval, result_loc); } - case BuiltinFnIdByteOffsetOf: + case BuiltinFnIdOffsetOf: { AstNode *arg0_node = node->data.fn_call_expr.params.at(0); IrInstSrc *arg0_value = astgen_node(ag, arg0_node, scope); @@ -4957,7 +4957,7 @@ static IrInstSrc *astgen_builtin_fn_call(Stage1AstGen *ag, Scope *scope, AstNode if (arg1_value == ag->codegen->invalid_inst_src) return arg1_value; - IrInstSrc *offset_of = ir_build_byte_offset_of(ag, scope, node, arg0_value, arg1_value); + IrInstSrc *offset_of = ir_build_offset_of(ag, scope, node, arg0_value, arg1_value); return ir_lval_wrap(ag, scope, offset_of, lval, result_loc); } case BuiltinFnIdBitOffsetOf: diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp index 4aa02680a2..d0ec853f06 100644 --- a/src/stage1/codegen.cpp +++ b/src/stage1/codegen.cpp @@ -8902,7 +8902,7 @@ static void define_builtin_fns(CodeGen *g) { create_builtin_fn(g, BuiltinFnIdPtrToInt, "ptrToInt", 1); create_builtin_fn(g, BuiltinFnIdTagName, "tagName", 1); create_builtin_fn(g, BuiltinFnIdFieldParentPtr, "fieldParentPtr", 3); - create_builtin_fn(g, BuiltinFnIdByteOffsetOf, "byteOffsetOf", 2); + create_builtin_fn(g, BuiltinFnIdOffsetOf, "offsetOf", 2); create_builtin_fn(g, BuiltinFnIdBitOffsetOf, "bitOffsetOf", 2); create_builtin_fn(g, BuiltinFnIdDivExact, "divExact", 2); create_builtin_fn(g, BuiltinFnIdDivTrunc, "divTrunc", 2); diff --git a/src/stage1/ir.cpp b/src/stage1/ir.cpp index fd44e11721..053eb87e62 100644 --- a/src/stage1/ir.cpp +++ b/src/stage1/ir.cpp @@ -17082,7 +17082,7 @@ static TypeStructField *validate_host_int_byte_offset(IrAnalyze *ira, return field; } -static IrInstGen *ir_analyze_instruction_byte_offset_of(IrAnalyze *ira, IrInstSrcByteOffsetOf *instruction) { +static IrInstGen *ir_analyze_instruction_offset_of(IrAnalyze *ira, IrInstSrcOffsetOf *instruction) { IrInstGen *type_value = instruction->type_value->child; if (type_is_invalid(type_value->value->type)) return ira->codegen->invalid_inst_gen; @@ -24368,8 +24368,8 @@ static IrInstGen *ir_analyze_instruction_base(IrAnalyze *ira, IrInstSrc *instruc return ir_analyze_instruction_enum_tag_name(ira, (IrInstSrcTagName *)instruction); case IrInstSrcIdFieldParentPtr: return ir_analyze_instruction_field_parent_ptr(ira, (IrInstSrcFieldParentPtr *)instruction); - case IrInstSrcIdByteOffsetOf: - return ir_analyze_instruction_byte_offset_of(ira, (IrInstSrcByteOffsetOf *)instruction); + case IrInstSrcIdOffsetOf: + return ir_analyze_instruction_offset_of(ira, (IrInstSrcOffsetOf *)instruction); case IrInstSrcIdBitOffsetOf: return ir_analyze_instruction_bit_offset_of(ira, (IrInstSrcBitOffsetOf *)instruction); case IrInstSrcIdTypeInfo: @@ -24824,7 +24824,7 @@ bool ir_inst_src_has_side_effects(IrInstSrc *instruction) { case IrInstSrcIdTypeName: case IrInstSrcIdTagName: case IrInstSrcIdFieldParentPtr: - case IrInstSrcIdByteOffsetOf: + case IrInstSrcIdOffsetOf: case IrInstSrcIdBitOffsetOf: case IrInstSrcIdTypeInfo: case IrInstSrcIdType: diff --git a/src/stage1/ir_print.cpp b/src/stage1/ir_print.cpp index ef3bda60d2..c6837b21cc 100644 --- a/src/stage1/ir_print.cpp +++ b/src/stage1/ir_print.cpp @@ -287,8 +287,8 @@ const char* ir_inst_src_type_str(IrInstSrcId id) { return "SrcTagName"; case IrInstSrcIdFieldParentPtr: return "SrcFieldParentPtr"; - case IrInstSrcIdByteOffsetOf: - return "SrcByteOffsetOf"; + case IrInstSrcIdOffsetOf: + return "SrcOffsetOf"; case IrInstSrcIdBitOffsetOf: return "SrcBitOffsetOf"; case IrInstSrcIdTypeInfo: @@ -2292,8 +2292,8 @@ static void ir_print_field_parent_ptr(IrPrintGen *irp, IrInstGenFieldParentPtr * fprintf(irp->f, ")"); } -static void ir_print_byte_offset_of(IrPrintSrc *irp, IrInstSrcByteOffsetOf *instruction) { - fprintf(irp->f, "@byte_offset_of("); +static void ir_print_offset_of(IrPrintSrc *irp, IrInstSrcOffsetOf *instruction) { + fprintf(irp->f, "@offset_of("); ir_print_other_inst_src(irp, instruction->type_value); fprintf(irp->f, ","); ir_print_other_inst_src(irp, instruction->field_name); @@ -2946,8 +2946,8 @@ static void ir_print_inst_src(IrPrintSrc *irp, IrInstSrc *instruction, bool trai case IrInstSrcIdFieldParentPtr: ir_print_field_parent_ptr(irp, (IrInstSrcFieldParentPtr *)instruction); break; - case IrInstSrcIdByteOffsetOf: - ir_print_byte_offset_of(irp, (IrInstSrcByteOffsetOf *)instruction); + case IrInstSrcIdOffsetOf: + ir_print_offset_of(irp, (IrInstSrcOffsetOf *)instruction); break; case IrInstSrcIdBitOffsetOf: ir_print_bit_offset_of(irp, (IrInstSrcBitOffsetOf *)instruction); diff --git a/src/translate_c.zig b/src/translate_c.zig index cd752a4c44..6cb19b26b8 100644 --- a/src/translate_c.zig +++ b/src/translate_c.zig @@ -1426,7 +1426,7 @@ fn transSimpleOffsetOfExpr( const quoted_field_name = try std.fmt.allocPrint(c.arena, "\"{s}\"", .{raw_field_name}); const field_name_node = try Tag.string_literal.create(c.arena, quoted_field_name); - return Tag.byte_offset_of.create(c.arena, .{ + return Tag.offset_of.create(c.arena, .{ .lhs = type_node, .rhs = field_name_node, }); diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig index ba881f2daa..a0f2a1798a 100644 --- a/src/translate_c/ast.zig +++ b/src/translate_c/ast.zig @@ -158,8 +158,8 @@ pub const Node = extern union { ptr_cast, /// @divExact(lhs, rhs) div_exact, - /// @byteOffsetOf(lhs, rhs) - byte_offset_of, + /// @offsetOf(lhs, rhs) + offset_of, /// @shuffle(type, a, b, mask) shuffle, @@ -335,7 +335,7 @@ pub const Node = extern union { .std_meta_vector, .ptr_cast, .div_exact, - .byte_offset_of, + .offset_of, .std_meta_cast, => Payload.BinOp, @@ -1304,9 +1304,9 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex { const payload = node.castTag(.div_exact).?.data; return renderBuiltinCall(c, "@divExact", &.{ payload.lhs, payload.rhs }); }, - .byte_offset_of => { - const payload = node.castTag(.byte_offset_of).?.data; - return renderBuiltinCall(c, "@byteOffsetOf", &.{ payload.lhs, payload.rhs }); + .offset_of => { + const payload = node.castTag(.offset_of).?.data; + return renderBuiltinCall(c, "@offsetOf", &.{ payload.lhs, payload.rhs }); }, .sizeof => { const payload = node.castTag(.sizeof).?.data; @@ -2274,7 +2274,7 @@ fn renderNodeGrouped(c: *Context, node: Node) !NodeIndex { .null_sentinel_array_type, .bool_to_int, .div_exact, - .byte_offset_of, + .offset_of, .shuffle, => { // no grouping needed diff --git a/test/behavior/bugs/6781.zig b/test/behavior/bugs/6781.zig index beadd97f1d..0c9126510d 100644 --- a/test/behavior/bugs/6781.zig +++ b/test/behavior/bugs/6781.zig @@ -15,7 +15,7 @@ pub const JournalHeader = packed struct { assert(entry.len >= @sizeOf(JournalHeader)); assert(entry.len == self.size); - const checksum_offset = @byteOffsetOf(JournalHeader, "checksum"); + const checksum_offset = @offsetOf(JournalHeader, "checksum"); const checksum_size = @sizeOf(@TypeOf(self.checksum)); assert(checksum_offset == 0 + 16 + 16); assert(checksum_size == 16); @@ -29,12 +29,12 @@ pub const JournalHeader = packed struct { const hash_chain_root_size = @sizeOf(@TypeOf(self.hash_chain_root)); assert(hash_chain_root_size == 16); - const prev_hash_chain_root_offset = @byteOffsetOf(JournalHeader, "prev_hash_chain_root"); + const prev_hash_chain_root_offset = @offsetOf(JournalHeader, "prev_hash_chain_root"); const prev_hash_chain_root_size = @sizeOf(@TypeOf(self.prev_hash_chain_root)); assert(prev_hash_chain_root_offset == 0 + 16); assert(prev_hash_chain_root_size == 16); - const checksum_offset = @byteOffsetOf(JournalHeader, "checksum"); + const checksum_offset = @offsetOf(JournalHeader, "checksum"); const checksum_size = @sizeOf(@TypeOf(self.checksum)); assert(checksum_offset == 0 + 16 + 16); assert(checksum_size == 16); diff --git a/test/behavior/sizeof_and_typeof.zig b/test/behavior/sizeof_and_typeof.zig index ae5e760f59..d241448e05 100644 --- a/test/behavior/sizeof_and_typeof.zig +++ b/test/behavior/sizeof_and_typeof.zig @@ -34,71 +34,71 @@ const P = packed struct { i: u7, }; -test "@byteOffsetOf" { +test "@offsetOf" { // Packed structs have fixed memory layout - try expect(@byteOffsetOf(P, "a") == 0); - try expect(@byteOffsetOf(P, "b") == 1); - try expect(@byteOffsetOf(P, "c") == 5); - try expect(@byteOffsetOf(P, "d") == 6); - try expect(@byteOffsetOf(P, "e") == 6); - try expect(@byteOffsetOf(P, "f") == 7); - try expect(@byteOffsetOf(P, "g") == 9); - try expect(@byteOffsetOf(P, "h") == 11); - try expect(@byteOffsetOf(P, "i") == 12); + try expect(@offsetOf(P, "a") == 0); + try expect(@offsetOf(P, "b") == 1); + try expect(@offsetOf(P, "c") == 5); + try expect(@offsetOf(P, "d") == 6); + try expect(@offsetOf(P, "e") == 6); + try expect(@offsetOf(P, "f") == 7); + try expect(@offsetOf(P, "g") == 9); + try expect(@offsetOf(P, "h") == 11); + try expect(@offsetOf(P, "i") == 12); // Normal struct fields can be moved/padded var a: A = undefined; - try expect(@ptrToInt(&a.a) - @ptrToInt(&a) == @byteOffsetOf(A, "a")); - try expect(@ptrToInt(&a.b) - @ptrToInt(&a) == @byteOffsetOf(A, "b")); - try expect(@ptrToInt(&a.c) - @ptrToInt(&a) == @byteOffsetOf(A, "c")); - try expect(@ptrToInt(&a.d) - @ptrToInt(&a) == @byteOffsetOf(A, "d")); - try expect(@ptrToInt(&a.e) - @ptrToInt(&a) == @byteOffsetOf(A, "e")); - try expect(@ptrToInt(&a.f) - @ptrToInt(&a) == @byteOffsetOf(A, "f")); - try expect(@ptrToInt(&a.g) - @ptrToInt(&a) == @byteOffsetOf(A, "g")); - try expect(@ptrToInt(&a.h) - @ptrToInt(&a) == @byteOffsetOf(A, "h")); - try expect(@ptrToInt(&a.i) - @ptrToInt(&a) == @byteOffsetOf(A, "i")); + try expect(@ptrToInt(&a.a) - @ptrToInt(&a) == @offsetOf(A, "a")); + try expect(@ptrToInt(&a.b) - @ptrToInt(&a) == @offsetOf(A, "b")); + try expect(@ptrToInt(&a.c) - @ptrToInt(&a) == @offsetOf(A, "c")); + try expect(@ptrToInt(&a.d) - @ptrToInt(&a) == @offsetOf(A, "d")); + try expect(@ptrToInt(&a.e) - @ptrToInt(&a) == @offsetOf(A, "e")); + try expect(@ptrToInt(&a.f) - @ptrToInt(&a) == @offsetOf(A, "f")); + try expect(@ptrToInt(&a.g) - @ptrToInt(&a) == @offsetOf(A, "g")); + try expect(@ptrToInt(&a.h) - @ptrToInt(&a) == @offsetOf(A, "h")); + try expect(@ptrToInt(&a.i) - @ptrToInt(&a) == @offsetOf(A, "i")); } -test "@byteOffsetOf packed struct, array length not power of 2 or multiple of native pointer width in bytes" { +test "@offsetOf packed struct, array length not power of 2 or multiple of native pointer width in bytes" { const p3a_len = 3; const P3 = packed struct { a: [p3a_len]u8, b: usize, }; - try std.testing.expectEqual(0, @byteOffsetOf(P3, "a")); - try std.testing.expectEqual(p3a_len, @byteOffsetOf(P3, "b")); + try std.testing.expectEqual(0, @offsetOf(P3, "a")); + try std.testing.expectEqual(p3a_len, @offsetOf(P3, "b")); const p5a_len = 5; const P5 = packed struct { a: [p5a_len]u8, b: usize, }; - try std.testing.expectEqual(0, @byteOffsetOf(P5, "a")); - try std.testing.expectEqual(p5a_len, @byteOffsetOf(P5, "b")); + try std.testing.expectEqual(0, @offsetOf(P5, "a")); + try std.testing.expectEqual(p5a_len, @offsetOf(P5, "b")); const p6a_len = 6; const P6 = packed struct { a: [p6a_len]u8, b: usize, }; - try std.testing.expectEqual(0, @byteOffsetOf(P6, "a")); - try std.testing.expectEqual(p6a_len, @byteOffsetOf(P6, "b")); + try std.testing.expectEqual(0, @offsetOf(P6, "a")); + try std.testing.expectEqual(p6a_len, @offsetOf(P6, "b")); const p7a_len = 7; const P7 = packed struct { a: [p7a_len]u8, b: usize, }; - try std.testing.expectEqual(0, @byteOffsetOf(P7, "a")); - try std.testing.expectEqual(p7a_len, @byteOffsetOf(P7, "b")); + try std.testing.expectEqual(0, @offsetOf(P7, "a")); + try std.testing.expectEqual(p7a_len, @offsetOf(P7, "b")); const p9a_len = 9; const P9 = packed struct { a: [p9a_len]u8, b: usize, }; - try std.testing.expectEqual(0, @byteOffsetOf(P9, "a")); - try std.testing.expectEqual(p9a_len, @byteOffsetOf(P9, "b")); + try std.testing.expectEqual(0, @offsetOf(P9, "a")); + try std.testing.expectEqual(p9a_len, @offsetOf(P9, "b")); // 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 25 etc. are further cases } @@ -113,13 +113,13 @@ test "@bitOffsetOf" { try expect(@bitOffsetOf(P, "f") == 56); try expect(@bitOffsetOf(P, "g") == 72); - try expect(@byteOffsetOf(A, "a") * 8 == @bitOffsetOf(A, "a")); - try expect(@byteOffsetOf(A, "b") * 8 == @bitOffsetOf(A, "b")); - try expect(@byteOffsetOf(A, "c") * 8 == @bitOffsetOf(A, "c")); - try expect(@byteOffsetOf(A, "d") * 8 == @bitOffsetOf(A, "d")); - try expect(@byteOffsetOf(A, "e") * 8 == @bitOffsetOf(A, "e")); - try expect(@byteOffsetOf(A, "f") * 8 == @bitOffsetOf(A, "f")); - try expect(@byteOffsetOf(A, "g") * 8 == @bitOffsetOf(A, "g")); + try expect(@offsetOf(A, "a") * 8 == @bitOffsetOf(A, "a")); + try expect(@offsetOf(A, "b") * 8 == @bitOffsetOf(A, "b")); + try expect(@offsetOf(A, "c") * 8 == @bitOffsetOf(A, "c")); + try expect(@offsetOf(A, "d") * 8 == @bitOffsetOf(A, "d")); + try expect(@offsetOf(A, "e") * 8 == @bitOffsetOf(A, "e")); + try expect(@offsetOf(A, "f") * 8 == @bitOffsetOf(A, "f")); + try expect(@offsetOf(A, "g") * 8 == @bitOffsetOf(A, "g")); } test "@sizeOf on compile-time types" { diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig index da53ec9655..9773680922 100644 --- a/test/behavior/struct.zig +++ b/test/behavior/struct.zig @@ -699,7 +699,7 @@ test "non-packed struct with u128 entry in union" { var sx: S = undefined; var s = &sx; - try std.testing.expect(@ptrToInt(&s.f2) - @ptrToInt(&s.f1) == @byteOffsetOf(S, "f2")); + try std.testing.expect(@ptrToInt(&s.f2) - @ptrToInt(&s.f1) == @offsetOf(S, "f2")); var v2 = U{ .Num = 123 }; s.f2 = v2; try std.testing.expect(s.f2.Num == 123); diff --git a/test/compile_errors.zig b/test/compile_errors.zig index fd1255c5b8..f0ab776eb6 100644 --- a/test/compile_errors.zig +++ b/test/compile_errors.zig @@ -6669,24 +6669,24 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { "tmp.zig:8:29: error: field 'b' has index 1 but pointer value is index 0 of struct 'Foo'", }); - cases.add("@byteOffsetOf - non struct", + cases.add("@offsetOf - non struct", \\const Foo = i32; \\export fn foo() usize { - \\ return @byteOffsetOf(Foo, "a",); + \\ return @offsetOf(Foo, "a",); \\} , &[_][]const u8{ - "tmp.zig:3:26: error: expected struct type, found 'i32'", + "tmp.zig:3:22: error: expected struct type, found 'i32'", }); - cases.add("@byteOffsetOf - bad field name", + cases.add("@offsetOf - bad field name", \\const Foo = struct { \\ derp: i32, \\}; \\export fn foo() usize { - \\ return @byteOffsetOf(Foo, "a",); + \\ return @offsetOf(Foo, "a",); \\} , &[_][]const u8{ - "tmp.zig:5:31: error: struct 'Foo' has no field 'a'", + "tmp.zig:5:27: error: struct 'Foo' has no field 'a'", }); cases.addExe("missing main fn in executable", @@ -7693,10 +7693,10 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { \\ val: void, \\}; \\export fn foo() void { - \\ const fieldOffset = @byteOffsetOf(Empty, "val",); + \\ const fieldOffset = @offsetOf(Empty, "val",); \\} , &[_][]const u8{ - "tmp.zig:5:46: error: zero-bit field 'val' in struct 'Empty' has no offset", + "tmp.zig:5:42: error: zero-bit field 'val' in struct 'Empty' has no offset", }); cases.add("taking bit offset of void field in struct",