fix parse error on undefined variables
This commit is contained in:
@@ -157,15 +157,21 @@ impl ParseTree {
|
|||||||
.ok_or(ParseError::UnexpectedEndInput)?
|
.ok_or(ParseError::UnexpectedEndInput)?
|
||||||
.map_err(|e| ParseError::TokenizeError(e))?;
|
.map_err(|e| ParseError::TokenizeError(e))?;
|
||||||
|
|
||||||
|
let body = Box::new(ParseTree::parse(tokens, globals, locals)?);
|
||||||
|
|
||||||
if let Token::Identifier(ident) = token {
|
if let Token::Identifier(ident) = token {
|
||||||
|
let locals = locals.to_mut();
|
||||||
|
|
||||||
|
locals.insert(ident.clone(), Object::Variable(Evaluation::Computed(Value::Nil)));
|
||||||
|
|
||||||
match op {
|
match op {
|
||||||
Op::Equ => Ok(ParseTree::Equ(ident.clone(),
|
Op::Equ => Ok(ParseTree::Equ(ident,
|
||||||
Box::new(ParseTree::parse(tokens, globals, locals)?),
|
body,
|
||||||
Box::new(ParseTree::parse(tokens, globals, locals)?)
|
Box::new(ParseTree::parse(tokens, globals, &mut Cow::Borrowed(&locals))?)
|
||||||
)),
|
)),
|
||||||
Op::LazyEqu => Ok(ParseTree::LazyEqu(ident.clone(),
|
Op::LazyEqu => Ok(ParseTree::LazyEqu(ident,
|
||||||
Box::new(ParseTree::parse(tokens, globals, locals)?),
|
body,
|
||||||
Box::new(ParseTree::parse(tokens, globals, locals)?)
|
Box::new(ParseTree::parse(tokens, globals, &mut Cow::Borrowed(&locals))?)
|
||||||
)),
|
)),
|
||||||
_ => panic!("Operator literally changed under your nose"),
|
_ => panic!("Operator literally changed under your nose"),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user