From cc336a81d7955b52ff0ec21455ad867f3347df1f Mon Sep 17 00:00:00 2001 From: Kisaragi Marine Date: Sun, 22 Oct 2023 19:54:35 +0900 Subject: [PATCH] fix: another LC-bug, it does not handle backward case correctly --- package/origlang-compiler/src/lexer.rs | 5 +++-- package/origlang-compiler/src/lexer/token.rs | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package/origlang-compiler/src/lexer.rs b/package/origlang-compiler/src/lexer.rs index 87adf423..4041a00b 100644 --- a/package/origlang-compiler/src/lexer.rs +++ b/package/origlang-compiler/src/lexer.rs @@ -386,11 +386,12 @@ impl Lexer<'_> { self.set_line(NonZeroUsize::new(new_line).expect("overflow")); self.set_column(NonZeroUsize::new(new_col).expect("overflow")); } else { + // THIS BRANCH IS IMPORTANT!!! OTHERWISE, RESET OPERATION WILL NOT WORK!!! // back let new_line = current_line - src[new..old].bytes().filter(|x| *x == b'\n').count(); let new_col = src[new..old].find('\n').map_or_else(|| { - let mut c = self.column.get().get(); - c += old - new; + let mut c = self.column().get(); + c -= old - new; c }, |new_relative| { diff --git a/package/origlang-compiler/src/lexer/token.rs b/package/origlang-compiler/src/lexer/token.rs index a85c0bc5..f851557b 100644 --- a/package/origlang-compiler/src/lexer/token.rs +++ b/package/origlang-compiler/src/lexer/token.rs @@ -1,3 +1,4 @@ +use std::num::NonZeroUsize; use origlang_ast::{Comment, Identifier}; use crate::chars::boundary::Utf8CharBoundaryStartByte; use crate::lexer::Lexer; @@ -16,7 +17,7 @@ impl TemporalLexerUnwindToken { } pub fn reset(self, lexer: &Lexer) { - lexer.source_bytes_nth.set(self.unwind_index); + lexer.set_current_index(self.unwind_index).expect("Error during reset"); } }