| ... | @@ -591,9 +591,13 @@ fn parseValueEnum(self: *Assembler, kind: spec.OperandKind) !void { | ... | @@ -591,9 +591,13 @@ fn parseValueEnum(self: *Assembler, kind: spec.OperandKind) !void { |
| 591 | try self.expectToken(.value); | 591 | try self.expectToken(.value); |
| 592 | | 592 | |
| 593 | const text = self.tokenText(tok); | 593 | const text = self.tokenText(tok); |
| | 594 | const int_value = std.fmt.parseInt(u32, text, 0) catch null; |
| 594 | const enumerant = for (kind.enumerants()) |enumerant| { | 595 | const enumerant = for (kind.enumerants()) |enumerant| { |
| 595 | if (std.mem.eql(u8, enumerant.name, text)) | 596 | if (int_value) |v| { |
| 596 | break enumerant; | 597 | if (v == enumerant.value) break enumerant; |
| | 598 | } else { |
| | 599 | if (std.mem.eql(u8, enumerant.name, text)) break enumerant; |
| | 600 | } |
| 597 | } else { | 601 | } else { |
| 598 | return self.fail(tok.start, "'{s}' is not a valid value for enumeration {s}", .{ text, @tagName(kind) }); | 602 | return self.fail(tok.start, "'{s}' is not a valid value for enumeration {s}", .{ text, @tagName(kind) }); |
| 599 | }; | 603 | }; |