| ... | ... | @@ -1246,13 +1246,16 @@ pub const Parser = struct { |
| 1246 | 1246 | self.nextToken(.normal) catch unreachable; |
| 1247 | 1247 | switch (statement_type) { |
| 1248 | 1248 | .file_version, .product_version => { |
| 1249 | | var parts = std.BoundedArray(*Node, 4){}; |
| 1249 | var parts_buffer: [4]*Node = undefined; |
| 1250 | var parts = std.ArrayListUnmanaged(*Node).initBuffer(&parts_buffer); |
| 1250 | 1251 | |
| 1251 | | while (parts.len < 4) { |
| 1252 | while (true) { |
| 1252 | 1253 | const value = try self.parseExpression(.{ .allowed_types = .{ .number = true } }); |
| 1253 | 1254 | parts.addOneAssumeCapacity().* = value; |
| 1254 | 1255 | |
| 1255 | | if (parts.len == 4 or !(try self.parseOptionalToken(.comma))) { |
| 1256 | if (parts.unusedCapacitySlice().len == 0 or |
| 1257 | !(try self.parseOptionalToken(.comma))) |
| 1258 | { |
| 1256 | 1259 | break; |
| 1257 | 1260 | } |
| 1258 | 1261 | } |
| ... | ... | @@ -1260,7 +1263,7 @@ pub const Parser = struct { |
| 1260 | 1263 | const node = try self.state.arena.create(Node.VersionStatement); |
| 1261 | 1264 | node.* = .{ |
| 1262 | 1265 | .type = type_token, |
| 1263 | | .parts = try self.state.arena.dupe(*Node, parts.slice()), |
| 1266 | .parts = try self.state.arena.dupe(*Node, parts.items), |
| 1264 | 1267 | }; |
| 1265 | 1268 | return &node.base; |
| 1266 | 1269 | }, |