From 34ba67b3d18eb8e393794c225ecbae9930d48104 Mon Sep 17 00:00:00 2001 From: Alexandros Naskos Date: Sun, 24 May 2020 17:07:48 +0300 Subject: [PATCH] Fixed node iteration: --- src/analysis.zig | 26 +++++++++++++------------- src/main.zig | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/analysis.zig b/src/analysis.zig index 95e31e7..2b414fd 100644 --- a/src/analysis.zig +++ b/src/analysis.zig @@ -220,8 +220,8 @@ fn getDeclName(tree: *ast.Tree, node: *ast.Node) ?[]const u8 { /// Gets the child of node pub fn getChild(tree: *ast.Tree, node: *ast.Node, name: []const u8) ?*ast.Node { - var child_it = node.iterate(); - while (child_it.next()) |child| { + var child_idx: usize = 0; + while (node.iterate(child_idx)) |child| : (child_idx += 1) { const child_name = getDeclName(tree, child) orelse continue; if (std.mem.eql(u8, child_name, name)) return child; } @@ -239,8 +239,8 @@ pub fn getChildOfSlice(tree: *ast.Tree, nodes: []*ast.Node, name: []const u8) ?* fn findReturnStatementInternal(base_node: *ast.Node, already_found: *bool) ?*ast.Node.ControlFlowExpression { var result: ?*ast.Node.ControlFlowExpression = null; - var child_it = base_node.iterate(); - while (child_it.next()) |child_node| { + var child_idx: usize = 0; + while (base_node.iterate(child_idx)) |child_node| : (child_idx += 1) { switch (child_node.id) { .ControlFlowExpression => { const cfe = child_node.cast(ast.Node.ControlFlowExpression).?; @@ -529,8 +529,8 @@ pub fn declsFromIndexInternal( switch (node.id) { .Root, .ContainerDecl => { container.* = node; - var node_it = node.iterate(); - while (node_it.next()) |child_node| { + var node_idx: usize = 0; + while (node.iterate(node_idx)) |child_node| : (node_idx += 1) { // Skip over container fields, we can only dot access those. if (child_node.id == .ContainerField) continue; @@ -560,8 +560,8 @@ pub fn declsFromIndexInternal( try declsFromIndexInternal(decls, tree, test_decl.body_node, container, source_index); }, .Block => { - var node_it = node.iterate(); - while (node_it.next()) |inode| { + var inode_idx: usize = 0; + while (node.iterate(inode_idx)) |inode| : (inode_idx += 1) { if (nodeComesAfterSourceIndex(tree, inode, source_index)) return; try declsFromIndexInternal(decls, tree, inode, container, source_index); } @@ -658,8 +658,8 @@ pub fn declsFromIndexInternal( } pub fn addChildrenNodes(decls: *std.ArrayList(*ast.Node), tree: *ast.Tree, node: *ast.Node) !void { - var node_it = node.iterate(); - while (node_it.next()) |child_node| { + var node_idx: usize = 0; + while (node.iterate(node_idx)) |child_node| : (node_idx += 1) { try decls.append(child_node); } } @@ -685,8 +685,8 @@ fn nodeComesAfterSourceIndex(tree: *ast.Tree, node: *ast.Node, source_index: usi pub fn getImportStr(tree: *ast.Tree, source_index: usize) ?[]const u8 { var node = &tree.root_node.base; - var child_it = node.iterate(); - while (child_it.next()) |child| { + var child_idx: usize = 0; + while (node.iterate(child_idx)) |child| : (child_idx += 1) { if (!nodeContainsSourceIndex(tree, child, source_index)) { continue; } @@ -702,7 +702,7 @@ pub fn getImportStr(tree: *ast.Tree, source_index: usize) ?[]const u8 { return import_str[1 .. import_str.len - 1]; } node = child; - child_it = node.iterate(); + child_idx = 0; } return null; } diff --git a/src/main.zig b/src/main.zig index 8cf1b69..fa82776 100644 --- a/src/main.zig +++ b/src/main.zig @@ -176,8 +176,8 @@ fn containerToCompletion( container: *std.zig.ast.Node, config: Config, ) !void { - var child_it = container.iterate(); - while (child_it.next()) |child_node| { + var child_idx: usize = 0; + while (container.iterate(child_idx)) |child_node| : (child_idx += 1) { // Declarations in the same file do not need to be public. if (orig_handle == analysis_ctx.handle or analysis.isNodePublic(analysis_ctx.tree, child_node)) { try nodeToCompletion(list, analysis_ctx, orig_handle, child_node, container, config);