CLI error handling
This commit is contained in:
@@ -145,8 +145,20 @@ impl<'a> TokenizerBuffer<'a> {
|
||||
use Ordering::*;
|
||||
match seek_to_int.cmp(&0) {
|
||||
Greater => {
|
||||
let mut tokens = Vec::with_capacity(seek_to_int as usize);
|
||||
for _ in 0..seek_to_int {
|
||||
let mut seek_remaining = seek_to_int as usize;
|
||||
|
||||
// First, consume tokens from the buffer (peeked but not yet consumed)
|
||||
while seek_remaining > 0 && !self.buffer.is_empty() {
|
||||
if let Some(token) = self.buffer.pop_front() {
|
||||
self.history.push_back(token);
|
||||
seek_remaining -= 1;
|
||||
self.index += 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Then get tokens from tokenizer if needed
|
||||
let mut tokens = Vec::with_capacity(seek_remaining);
|
||||
for _ in 0..seek_remaining {
|
||||
if let Some(token) = self.tokenizer.next_token()? {
|
||||
tokens.push(token);
|
||||
} else {
|
||||
@@ -157,6 +169,7 @@ impl<'a> TokenizerBuffer<'a> {
|
||||
}
|
||||
}
|
||||
self.history.extend(tokens);
|
||||
self.index += seek_remaining as i64;
|
||||
}
|
||||
Less => {
|
||||
let seek_to = seek_to_int.unsigned_abs() as usize;
|
||||
|
||||
Reference in New Issue
Block a user