Improved logic surrounding expansion of assignments
This commit is contained in:
@@ -51,6 +51,11 @@ impl InputMan {
|
||||
Rc::new(RefCell::new(Span::new(0,0)))
|
||||
}
|
||||
}
|
||||
pub fn remove_span(&mut self, span: Rc<RefCell<Span>>) {
|
||||
if let Some(idx) = self.spans.iter().position(|iter_span| *iter_span == span) {
|
||||
self.spans.remove(idx);
|
||||
}
|
||||
}
|
||||
pub fn spans_mut(&mut self) -> &mut Vec<Rc<RefCell<Span>>> {
|
||||
&mut self.spans
|
||||
}
|
||||
|
||||
@@ -51,9 +51,12 @@ impl ShEnv {
|
||||
if repl_span.borrow().expanded {
|
||||
return vec![];
|
||||
}
|
||||
log!(INFO, repl_span);
|
||||
log!(INFO, new);
|
||||
repl_span.borrow_mut().expanded = true;
|
||||
let saved_spans = self.input_man.spans_mut().clone();
|
||||
let mut new_tokens = Lexer::new(new.to_string(), self).lex();
|
||||
log!(INFO, new_tokens);
|
||||
*self.input_man.spans_mut() = saved_spans;
|
||||
|
||||
let offset = repl_span.borrow().start();
|
||||
@@ -68,8 +71,9 @@ impl ShEnv {
|
||||
if let Some(input) = self.input_man.get_input_mut() {
|
||||
let old = &input[range.clone()];
|
||||
let delta: isize = new.len() as isize - old.len() as isize;
|
||||
log!(INFO, input);
|
||||
log!(INFO, range);
|
||||
input.replace_range(range, new);
|
||||
let expanded = input.clone();
|
||||
|
||||
for span in self.input_man.spans_mut() {
|
||||
let mut span_mut = span.borrow_mut();
|
||||
|
||||
Reference in New Issue
Block a user