From 46af8bd2ba723e4dbcff07e457d2786cd7c74440 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 21 Nov 2023 20:44:32 -0700 Subject: resinator: use ArrayList instead of BoundedArray In this case it improved maintainability because magic number `4` is no longer repeated 3 times, and there is no longer a redundant branch in the loop. --- src/resinator/parse.zig | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/resinator/parse.zig') diff --git a/src/resinator/parse.zig b/src/resinator/parse.zig index 68537b94f6..7d56b92134 100644 --- a/src/resinator/parse.zig +++ b/src/resinator/parse.zig @@ -1246,13 +1246,16 @@ pub const Parser = struct { self.nextToken(.normal) catch unreachable; switch (statement_type) { .file_version, .product_version => { - var parts = std.BoundedArray(*Node, 4){}; + var parts_buffer: [4]*Node = undefined; + var parts = std.ArrayListUnmanaged(*Node).initBuffer(&parts_buffer); - while (parts.len < 4) { + while (true) { const value = try self.parseExpression(.{ .allowed_types = .{ .number = true } }); parts.addOneAssumeCapacity().* = value; - if (parts.len == 4 or !(try self.parseOptionalToken(.comma))) { + if (parts.unusedCapacitySlice().len == 0 or + !(try self.parseOptionalToken(.comma))) + { break; } } @@ -1260,7 +1263,7 @@ pub const Parser = struct { const node = try self.state.arena.create(Node.VersionStatement); node.* = .{ .type = type_token, - .parts = try self.state.arena.dupe(*Node, parts.slice()), + .parts = try self.state.arena.dupe(*Node, parts.items), }; return &node.base; }, -- cgit v1.2.3