| ... | @@ -405,8 +405,11 @@ pub const DeclState = struct { | ... | @@ -405,8 +405,11 @@ pub const DeclState = struct { |
| 405 | const value: u64 = if (values) |vals| value: { | 405 | const value: u64 = if (values) |vals| value: { |
| 406 | if (vals.count() == 0) break :value @intCast(u64, field_i); // auto-numbered | 406 | if (vals.count() == 0) break :value @intCast(u64, field_i); // auto-numbered |
| 407 | const value = vals.keys()[field_i]; | 407 | const value = vals.keys()[field_i]; |
| | 408 | // TODO do not assume a 64bit enum value - could be bigger. |
| | 409 | // See https://github.com/ziglang/zig/issues/645 |
| 408 | var int_buffer: Value.Payload.U64 = undefined; | 410 | var int_buffer: Value.Payload.U64 = undefined; |
| 409 | break :value value.enumToInt(ty, &int_buffer).toUnsignedInt(target); | 411 | const field_int_val = value.enumToInt(ty, &int_buffer); |
| | 412 | break :value @bitCast(u64, field_int_val.toSignedInt()); |
| 410 | } else @intCast(u64, field_i); | 413 | } else @intCast(u64, field_i); |
| 411 | mem.writeInt(u64, dbg_info_buffer.addManyAsArrayAssumeCapacity(8), value, target_endian); | 414 | mem.writeInt(u64, dbg_info_buffer.addManyAsArrayAssumeCapacity(8), value, target_endian); |
| 412 | } | 415 | } |