aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/enum_llvm.zig
diff options
context:
space:
mode:
Diffstat (limited to 'test/behavior/enum_llvm.zig')
-rw-r--r--test/behavior/enum_llvm.zig32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/behavior/enum_llvm.zig b/test/behavior/enum_llvm.zig
index c0d536c029..700e396087 100644
--- a/test/behavior/enum_llvm.zig
+++ b/test/behavior/enum_llvm.zig
@@ -90,3 +90,35 @@ fn getB(data: *const BitFieldOfEnums) B {
fn getC(data: *const BitFieldOfEnums) C {
return data.c;
}
+
+const EnumWithOneMember = enum { Eof };
+
+fn doALoopThing(id: EnumWithOneMember) void {
+ while (true) {
+ if (id == EnumWithOneMember.Eof) {
+ break;
+ }
+ @compileError("above if condition should be comptime");
+ }
+}
+
+test "comparison operator on enum with one member is comptime known" {
+ doALoopThing(EnumWithOneMember.Eof);
+}
+
+const State = enum { Start };
+test "switch on enum with one member is comptime known" {
+ var state = State.Start;
+ switch (state) {
+ State.Start => return,
+ }
+ @compileError("analysis should not reach here");
+}
+
+test "enum literal in array literal" {
+ const Items = enum { one, two };
+ const array = [_]Items{ .one, .two };
+
+ try expect(array[0] == .one);
+ try expect(array[1] == .two);
+}