zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit f8de4db8731e20995d16ec29bc0fb553e7d6f5bf (tree)
parent 9c550721e40f50b2ee44a5b1bf633ebdd50d5fd2
Author: Ali Chraghi <alichraghi@proton.me>
Date:   Mon, 15 May 2023 14:22:40 +0330

spirv: implement arithmeticTypeInfo for Enum (`@intToEnum`)

Diffstat:
Msrc/codegen/spirv.zig | 11+++++++++++
Mtest/behavior/enum.zig | 5-----
Mtest/behavior/union.zig | 1-
3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/codegen/spirv.zig b/src/codegen/spirv.zig @@ -369,6 +369,17 @@ pub const DeclGen = struct { .composite_integer, }; }, + .Enum => blk: { + var buffer: Type.Payload.Bits = undefined; + const int_ty = ty.intTagType(&buffer); + const int_info = int_ty.intInfo(target); + break :blk ArithmeticTypeInfo{ + .bits = int_info.bits, + .is_vector = false, + .signedness = int_info.signedness, + .class = .integer, + }; + }, // As of yet, there is no vector support in the self-hosted compiler. .Vector => self.todo("implement arithmeticTypeInfo for Vector", .{}), // TODO: For which types is this the case? diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig @@ -27,7 +27,6 @@ const IntToEnumNumber = enum { Zero, One, Two, Three, Four }; test "int to enum" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try testIntToEnumEval(3); } @@ -576,8 +575,6 @@ test "enum literal equality" { } test "enum literal cast to enum" { - if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; - const Color = enum { Auto, Off, On }; var color1: Color = .Auto; @@ -874,8 +871,6 @@ test "switch on enum with one member is comptime-known" { } test "method call on an enum" { - if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; - const S = struct { const E = enum { one, diff --git a/test/behavior/union.zig b/test/behavior/union.zig @@ -366,7 +366,6 @@ test "simple union(enum(u32))" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; var x = MultipleChoice.C; try expect(x == MultipleChoice.C);