Handle tag moved backwards without logging
This commit is contained in:
parent
865ca42ed4
commit
62d287e518
@ -68,15 +68,10 @@ const Builder = struct {
|
|||||||
fn add(self: *Builder, token: ast.TokenIndex, token_type: TokenType, token_modifiers: TokenModifiers) !void {
|
fn add(self: *Builder, token: ast.TokenIndex, token_type: TokenType, token_modifiers: TokenModifiers) !void {
|
||||||
const tree = self.handle.tree;
|
const tree = self.handle.tree;
|
||||||
const starts = tree.tokens.items(.start);
|
const starts = tree.tokens.items(.start);
|
||||||
const tags = tree.tokens.items(.tag);
|
|
||||||
const next_start = starts[token];
|
const next_start = starts[token];
|
||||||
|
|
||||||
if (next_start < self.previous_position) {
|
if (next_start < self.previous_position) {
|
||||||
log.err(
|
return error.MovedBackwards;
|
||||||
"Moved backwards from {} at position {} to {} at {}.",
|
|
||||||
.{ tags[self.previous_token orelse 0], self.previous_position, tags[token], next_start },
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.previous_token) |prev| {
|
if (self.previous_token) |prev| {
|
||||||
@ -259,6 +254,7 @@ const WriteTokensError = error{
|
|||||||
Utf8OverlongEncoding,
|
Utf8OverlongEncoding,
|
||||||
Utf8EncodesSurrogateHalf,
|
Utf8EncodesSurrogateHalf,
|
||||||
Utf8CodepointTooLarge,
|
Utf8CodepointTooLarge,
|
||||||
|
MovedBackwards,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn writeNodeTokens(
|
fn writeNodeTokens(
|
||||||
@ -1048,7 +1044,10 @@ pub fn writeAllSemanticTokens(
|
|||||||
// reverse the ast from the root declarations
|
// reverse the ast from the root declarations
|
||||||
var buf: [2]ast.Node.Index = undefined;
|
var buf: [2]ast.Node.Index = undefined;
|
||||||
for (declMembers(handle.tree, 0, &buf)) |child| {
|
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();
|
try builder.finish();
|
||||||
return builder.toOwnedSlice();
|
return builder.toOwnedSlice();
|
||||||
|
Loading…
Reference in New Issue
Block a user