drop_expansions whenever a compilation error occurs
This commit is contained in:
@@ -437,12 +437,11 @@ impl ListingCompiler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub
|
fn compile_work<R: Read>(compiler: &mut ListingCompiler, wam: &mut Machine, src: R,
|
||||||
fn compile_listing<R: Read>(wam: &mut Machine, src: R, mut indices: IndexStore) -> EvalSession
|
mut indices: IndexStore)
|
||||||
|
-> EvalSession
|
||||||
{
|
{
|
||||||
let mut compiler = ListingCompiler::new(&wam.code_repo);
|
let mut results = try_eval_session!(compiler.gather_items(wam, src, &mut indices));
|
||||||
let mut results = try_eval_session!(compiler.gather_items(wam, src, &mut indices)
|
|
||||||
.map_err(|e| compiler.drop_expansions(wam, e)));
|
|
||||||
|
|
||||||
let module_code = try_eval_session!(compiler.generate_code(results.worker_results, wam,
|
let module_code = try_eval_session!(compiler.generate_code(results.worker_results, wam,
|
||||||
&mut indices.code_dir));
|
&mut indices.code_dir));
|
||||||
@@ -465,6 +464,17 @@ fn compile_listing<R: Read>(wam: &mut Machine, src: R, mut indices: IndexStore)
|
|||||||
EvalSession::EntrySuccess
|
EvalSession::EntrySuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn compile_listing<R: Read>(wam: &mut Machine, src: R, indices: IndexStore) -> EvalSession
|
||||||
|
{
|
||||||
|
let mut compiler = ListingCompiler::new(&wam.code_repo);
|
||||||
|
|
||||||
|
match compile_work(&mut compiler, wam, src, indices) {
|
||||||
|
EvalSession::Error(e) => EvalSession::Error(compiler.drop_expansions(wam, e)),
|
||||||
|
result => result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn setup_indices(wam: &mut Machine, indices: &mut IndexStore) -> Result<(), SessionError> {
|
fn setup_indices(wam: &mut Machine, indices: &mut IndexStore) -> Result<(), SessionError> {
|
||||||
if let Some(builtins) = wam.indices.take_module(clause_name!("builtins")) {
|
if let Some(builtins) = wam.indices.take_module(clause_name!("builtins")) {
|
||||||
let flags = wam.machine_flags();
|
let flags = wam.machine_flags();
|
||||||
|
|||||||
Reference in New Issue
Block a user