Clean up
This commit is contained in:
parent
d7d8fd2499
commit
50b7b4bfc6
@ -89,6 +89,33 @@ impl AbstractTree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn run(self, context: &Context) -> Result<Option<Value>, Vec<Error>> {
|
pub fn run(self, context: &Context) -> Result<Option<Value>, Vec<Error>> {
|
||||||
|
let valid_statements = self.run_type_definitions(context)?;
|
||||||
|
let mut previous_value = None;
|
||||||
|
|
||||||
|
for statement in valid_statements {
|
||||||
|
let run = statement.node.run(context);
|
||||||
|
|
||||||
|
match run {
|
||||||
|
Ok(action) => match action {
|
||||||
|
Action::Return(value) => previous_value = Some(value),
|
||||||
|
_ => {}
|
||||||
|
},
|
||||||
|
Err(runtime_error) => {
|
||||||
|
return Err(vec![Error::Runtime {
|
||||||
|
error: runtime_error,
|
||||||
|
position: statement.position,
|
||||||
|
}]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(previous_value)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_type_definitions(
|
||||||
|
self,
|
||||||
|
context: &Context,
|
||||||
|
) -> Result<Vec<WithPosition<Statement>>, Vec<Error>> {
|
||||||
let mut errors = Vec::new();
|
let mut errors = Vec::new();
|
||||||
let mut valid_statements = Vec::new();
|
let mut valid_statements = Vec::new();
|
||||||
|
|
||||||
@ -118,32 +145,11 @@ impl AbstractTree {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !errors.is_empty() {
|
if errors.is_empty() {
|
||||||
return Err(errors);
|
Ok(valid_statements)
|
||||||
|
} else {
|
||||||
|
Err(errors)
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut previous_value = None;
|
|
||||||
|
|
||||||
for statement in valid_statements {
|
|
||||||
let run = statement.node.run(context);
|
|
||||||
|
|
||||||
match run {
|
|
||||||
Ok(action) => match action {
|
|
||||||
Action::Return(value) => previous_value = Some(value),
|
|
||||||
_ => {}
|
|
||||||
},
|
|
||||||
Err(runtime_error) => {
|
|
||||||
errors.push(Error::Runtime {
|
|
||||||
error: runtime_error,
|
|
||||||
position: statement.position,
|
|
||||||
});
|
|
||||||
|
|
||||||
return Err(errors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(previous_value)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user