| ... | ... | @@ -1,59 +1,63 @@ |
| 1 | 1 | const tests = @import("tests.zig"); |
| 2 | const builtin = @import("builtin"); |
| 2 | 3 | |
| 3 | 4 | pub fn addCases(cases: *tests.TranslateCContext) void { |
| 4 | | cases.add("negative enum init values", |
| 5 | | \\enum EnumWithInits { |
| 6 | | \\ VAL01 = 0, |
| 7 | | \\ VAL02 = 1, |
| 8 | | \\ VAL03 = 2, |
| 9 | | \\ VAL04 = 3, |
| 10 | | \\ VAL05 = -1, |
| 11 | | \\ VAL06 = -2, |
| 12 | | \\ VAL07 = -3, |
| 13 | | \\ VAL08 = -4, |
| 14 | | \\ VAL09 = VAL02 + VAL08, |
| 15 | | \\ VAL10 = -1000012000, |
| 16 | | \\ VAL11 = -1000161000, |
| 17 | | \\ VAL12 = -1000174001, |
| 18 | | \\ VAL13 = VAL09, |
| 19 | | \\ VAL14 = VAL10, |
| 20 | | \\ VAL15 = VAL11, |
| 21 | | \\ VAL16 = VAL13, |
| 22 | | \\ VAL17 = (VAL16 - VAL10 + 1), |
| 23 | | \\ VAL18 = 0x1000000000000000L, |
| 24 | | \\ VAL19 = VAL18 + VAL18 + VAL18 - 1, |
| 25 | | \\ VAL20 = VAL19 + VAL19, |
| 26 | | \\ VAL21 = VAL20 + 0xFFFFFFFFFFFFFFFF, |
| 27 | | \\ VAL22 = 0xFFFFFFFFFFFFFFFF + 1, |
| 28 | | \\ VAL23 = 0xFFFFFFFFFFFFFFFF, |
| 29 | | \\}; |
| 30 | | , |
| 31 | | \\pub const enum_EnumWithInits = extern enum(c_longlong) { |
| 32 | | \\ VAL01 = 0, |
| 33 | | \\ VAL02 = 1, |
| 34 | | \\ VAL03 = 2, |
| 35 | | \\ VAL04 = 3, |
| 36 | | \\ VAL05 = -1, |
| 37 | | \\ VAL06 = -2, |
| 38 | | \\ VAL07 = -3, |
| 39 | | \\ VAL08 = -4, |
| 40 | | \\ VAL09 = -3, |
| 41 | | \\ VAL10 = -1000012000, |
| 42 | | \\ VAL11 = -1000161000, |
| 43 | | \\ VAL12 = -1000174001, |
| 44 | | \\ VAL13 = -3, |
| 45 | | \\ VAL14 = -1000012000, |
| 46 | | \\ VAL15 = -1000161000, |
| 47 | | \\ VAL16 = -3, |
| 48 | | \\ VAL17 = 1000011998, |
| 49 | | \\ VAL18 = 1152921504606846976, |
| 50 | | \\ VAL19 = 3458764513820540927, |
| 51 | | \\ VAL20 = 6917529027641081854, |
| 52 | | \\ VAL21 = 6917529027641081853, |
| 53 | | \\ VAL22 = 0, |
| 54 | | \\ VAL23 = -1, |
| 55 | | \\}; |
| 56 | | ); |
| 5 | if (builtin.os != builtin.Os.windows) { |
| 6 | // Windows treats this as an enum with type c_int |
| 7 | cases.add("big negative enum init values when C ABI supports long long enums", |
| 8 | \\enum EnumWithInits { |
| 9 | \\ VAL01 = 0, |
| 10 | \\ VAL02 = 1, |
| 11 | \\ VAL03 = 2, |
| 12 | \\ VAL04 = 3, |
| 13 | \\ VAL05 = -1, |
| 14 | \\ VAL06 = -2, |
| 15 | \\ VAL07 = -3, |
| 16 | \\ VAL08 = -4, |
| 17 | \\ VAL09 = VAL02 + VAL08, |
| 18 | \\ VAL10 = -1000012000, |
| 19 | \\ VAL11 = -1000161000, |
| 20 | \\ VAL12 = -1000174001, |
| 21 | \\ VAL13 = VAL09, |
| 22 | \\ VAL14 = VAL10, |
| 23 | \\ VAL15 = VAL11, |
| 24 | \\ VAL16 = VAL13, |
| 25 | \\ VAL17 = (VAL16 - VAL10 + 1), |
| 26 | \\ VAL18 = 0x1000000000000000L, |
| 27 | \\ VAL19 = VAL18 + VAL18 + VAL18 - 1, |
| 28 | \\ VAL20 = VAL19 + VAL19, |
| 29 | \\ VAL21 = VAL20 + 0xFFFFFFFFFFFFFFFF, |
| 30 | \\ VAL22 = 0xFFFFFFFFFFFFFFFF + 1, |
| 31 | \\ VAL23 = 0xFFFFFFFFFFFFFFFF, |
| 32 | \\}; |
| 33 | , |
| 34 | \\pub const enum_EnumWithInits = extern enum(c_longlong) { |
| 35 | \\ VAL01 = 0, |
| 36 | \\ VAL02 = 1, |
| 37 | \\ VAL03 = 2, |
| 38 | \\ VAL04 = 3, |
| 39 | \\ VAL05 = -1, |
| 40 | \\ VAL06 = -2, |
| 41 | \\ VAL07 = -3, |
| 42 | \\ VAL08 = -4, |
| 43 | \\ VAL09 = -3, |
| 44 | \\ VAL10 = -1000012000, |
| 45 | \\ VAL11 = -1000161000, |
| 46 | \\ VAL12 = -1000174001, |
| 47 | \\ VAL13 = -3, |
| 48 | \\ VAL14 = -1000012000, |
| 49 | \\ VAL15 = -1000161000, |
| 50 | \\ VAL16 = -3, |
| 51 | \\ VAL17 = 1000011998, |
| 52 | \\ VAL18 = 1152921504606846976, |
| 53 | \\ VAL19 = 3458764513820540927, |
| 54 | \\ VAL20 = 6917529027641081854, |
| 55 | \\ VAL21 = 6917529027641081853, |
| 56 | \\ VAL22 = 0, |
| 57 | \\ VAL23 = -1, |
| 58 | \\}; |
| 59 | ); |
| 60 | } |
| 57 | 61 | |
| 58 | 62 | cases.add("for loop with var init but empty body", |
| 59 | 63 | \\void foo(void) { |