diff --git a/test/stage1/behavior.zig b/test/stage1/behavior.zig index 9f7c484fc5..f99de3b149 100644 --- a/test/stage1/behavior.zig +++ b/test/stage1/behavior.zig @@ -32,6 +32,7 @@ comptime { _ = @import("behavior/bugs/2346.zig"); _ = @import("behavior/bugs/2578.zig"); _ = @import("behavior/bugs/2692.zig"); + _ = @import("behavior/bugs/2889.zig"); _ = @import("behavior/bugs/3007.zig"); _ = @import("behavior/bugs/3046.zig"); _ = @import("behavior/bugs/3112.zig"); diff --git a/test/stage1/behavior/bugs/2889.zig b/test/stage1/behavior/bugs/2889.zig new file mode 100644 index 0000000000..4991b56510 --- /dev/null +++ b/test/stage1/behavior/bugs/2889.zig @@ -0,0 +1,31 @@ +const std = @import("std"); + +const source = "A-"; + +fn parseNote() ?i32 { + const letter = source[0]; + const modifier = source[1]; + + const semitone = blk: { + if (letter == 'C' and modifier == '-') break :blk @as(i32, 0); + if (letter == 'C' and modifier == '#') break :blk @as(i32, 1); + if (letter == 'D' and modifier == '-') break :blk @as(i32, 2); + if (letter == 'D' and modifier == '#') break :blk @as(i32, 3); + if (letter == 'E' and modifier == '-') break :blk @as(i32, 4); + if (letter == 'F' and modifier == '-') break :blk @as(i32, 5); + if (letter == 'F' and modifier == '#') break :blk @as(i32, 6); + if (letter == 'G' and modifier == '-') break :blk @as(i32, 7); + if (letter == 'G' and modifier == '#') break :blk @as(i32, 8); + if (letter == 'A' and modifier == '-') break :blk @as(i32, 9); + if (letter == 'A' and modifier == '#') break :blk @as(i32, 10); + if (letter == 'B' and modifier == '-') break :blk @as(i32, 11); + return null; + }; + + return semitone; +} + +test "fixed" { + const result = parseNote(); + std.testing.expect(result.? == 9); +}