From 1c0b7ddda8bfabc9274f0d3bcb79be8eb8869f36 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Sun, 24 May 2020 10:03:08 -0400 Subject: [PATCH] fix regression in AST node iteration the new iteration code caused an integer underflow for function prototypes with no parameters. now fixed. --- lib/std/zig/ast.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/std/zig/ast.zig b/lib/std/zig/ast.zig index a257b9e1c..91aaf2909 100644 --- a/lib/std/zig/ast.zig +++ b/lib/std/zig/ast.zig @@ -706,7 +706,6 @@ pub const Node = struct { return null; } - pub fn firstToken(self: *const VarDecl) TokenIndex { if (self.visib_token) |visib_token| return visib_token; if (self.thread_local_token) |thread_local_token| return thread_local_token; @@ -1049,7 +1048,9 @@ pub const Node = struct { i -= 1; } - const params_len = switch (self.paramsConst()[self.params_len - 1].param_type) { + const params_len: usize = if (self.params_len == 0) + 0 + else switch (self.paramsConst()[self.params_len - 1].param_type) { .var_type, .type_expr => self.params_len, .var_args => self.params_len - 1, }; @@ -2660,7 +2661,6 @@ pub const Node = struct { } }; - pub fn iterate(self: *const Asm, index: usize) ?*Node { var i = index;