From 62d287e51864a57eee92d4ef2fd7c346def074f8 Mon Sep 17 00:00:00 2001 From: Lee Cannon Date: Sat, 26 Jun 2021 20:56:22 +0100 Subject: [PATCH 1/2] Handle tag moved backwards without logging --- src/semantic_tokens.zig | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/semantic_tokens.zig b/src/semantic_tokens.zig index e84bab1..028a4b6 100644 --- a/src/semantic_tokens.zig +++ b/src/semantic_tokens.zig @@ -68,15 +68,10 @@ const Builder = struct { fn add(self: *Builder, token: ast.TokenIndex, token_type: TokenType, token_modifiers: TokenModifiers) !void { const tree = self.handle.tree; const starts = tree.tokens.items(.start); - const tags = tree.tokens.items(.tag); const next_start = starts[token]; if (next_start < self.previous_position) { - log.err( - "Moved backwards from {} at position {} to {} at {}.", - .{ tags[self.previous_token orelse 0], self.previous_position, tags[token], next_start }, - ); - return; + return error.MovedBackwards; } if (self.previous_token) |prev| { @@ -259,6 +254,7 @@ const WriteTokensError = error{ Utf8OverlongEncoding, Utf8EncodesSurrogateHalf, Utf8CodepointTooLarge, + MovedBackwards, }; fn writeNodeTokens( @@ -1048,7 +1044,10 @@ pub fn writeAllSemanticTokens( // reverse the ast from the root declarations var buf: [2]ast.Node.Index = undefined; for (declMembers(handle.tree, 0, &buf)) |child| { - try writeNodeTokens(&builder, arena, store, child); + writeNodeTokens(&builder, arena, store, child) catch |err| switch (err) { + error.MovedBackwards => break, + else => |e| return e, + }; } try builder.finish(); return builder.toOwnedSlice(); From b1fee2dad2c06e5a2f270c252d4980f9dfc2ae9a Mon Sep 17 00:00:00 2001 From: Lee Cannon Date: Sat, 26 Jun 2021 21:13:00 +0100 Subject: [PATCH 2/2] Fix tests --- tests/sessions.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/sessions.zig b/tests/sessions.zig index 8976b4c..6e05ec8 100644 --- a/tests/sessions.zig +++ b/tests/sessions.zig @@ -100,7 +100,7 @@ const Server = struct { fn shutdown(self: *Server) void { self.request("shutdown", "{}", null) catch @panic("Could not send shutdown request"); - waitNoError(self.process) catch |err| @panic("Server error"); + waitNoError(self.process) catch @panic("Server error"); self.process.deinit(); } };