| ... | @@ -8069,14 +8069,6 @@ fn identifier( | ... | @@ -8069,14 +8069,6 @@ fn identifier( |
| 8069 | if (std.mem.eql(u8, ident_name_raw, "i0")) { | 8069 | if (std.mem.eql(u8, ident_name_raw, "i0")) { |
| 8070 | return astgen.failNode(ident, "signed integer cannot have bit width 0", .{}); | 8070 | return astgen.failNode(ident, "signed integer cannot have bit width 0", .{}); |
| 8071 | } | 8071 | } |
| 8072 | if (ident_name_raw[1] == '0') { | | |
| 8073 | assert(ident_name_raw.len >= 3); // `u0` and `i0` handled | | |
| 8074 | return astgen.failNode( | | |
| 8075 | ident, | | |
| 8076 | "primitive integer type '{s}' has leading zero", | | |
| 8077 | .{ident_name_raw}, | | |
| 8078 | ); | | |
| 8079 | } | | |
| 8080 | const bit_count = parseBitCount(ident_name_raw[1..]) catch |err| switch (err) { | 8072 | const bit_count = parseBitCount(ident_name_raw[1..]) catch |err| switch (err) { |
| 8081 | error.Overflow => return astgen.failNode( | 8073 | error.Overflow => return astgen.failNode( |
| 8082 | ident, | 8074 | ident, |
| ... | @@ -8085,6 +8077,14 @@ fn identifier( | ... | @@ -8085,6 +8077,14 @@ fn identifier( |
| 8085 | ), | 8077 | ), |
| 8086 | error.InvalidCharacter => break :int_type, | 8078 | error.InvalidCharacter => break :int_type, |
| 8087 | }; | 8079 | }; |
| | 8080 | if (ident_name_raw[1] == '0') { |
| | 8081 | assert(ident_name_raw.len >= 3); // `u0` and `i0` handled |
| | 8082 | return astgen.failNode( |
| | 8083 | ident, |
| | 8084 | "primitive integer type '{s}' has leading zero", |
| | 8085 | .{ident_name_raw}, |
| | 8086 | ); |
| | 8087 | } |
| 8088 | const result = try gz.add(.{ | 8088 | const result = try gz.add(.{ |
| 8089 | .tag = .int_type, | 8089 | .tag = .int_type, |
| 8090 | .data = .{ .int_type = .{ | 8090 | .data = .{ .int_type = .{ |