add another test, add unwind_protect!
This commit is contained in:
@@ -219,11 +219,13 @@ impl ListingCompiler {
|
||||
let mod_name = self.get_module_name();
|
||||
|
||||
if let Some(mut submodule) = wam_indices.take_module(submodule) {
|
||||
indices.use_module(code_repo, flags, &submodule)?;
|
||||
unwind_protect!(indices.use_module(code_repo, flags, &submodule),
|
||||
wam_indices.insert_module(submodule));
|
||||
|
||||
if let &mut Some(ref mut module) = &mut self.module {
|
||||
module.remove_module(mod_name, &submodule);
|
||||
module.use_module(code_repo, flags, &submodule)?;
|
||||
unwind_protect!(module.use_module(code_repo, flags, &submodule),
|
||||
wam_indices.insert_module(submodule));
|
||||
} else {
|
||||
submodule.inserted_expansions = true;
|
||||
wam_indices.remove_module(clause_name!("user"), &submodule);
|
||||
@@ -243,11 +245,13 @@ impl ListingCompiler {
|
||||
let mod_name = self.get_module_name();
|
||||
|
||||
if let Some(mut submodule) = wam_indices.take_module(submodule) {
|
||||
indices.use_qualified_module(code_repo, flags, &submodule, exports)?;
|
||||
unwind_protect!(indices.use_qualified_module(code_repo, flags, &submodule, exports),
|
||||
wam_indices.insert_module(submodule));
|
||||
|
||||
if let &mut Some(ref mut module) = &mut self.module {
|
||||
module.remove_module(mod_name, &submodule);
|
||||
module.use_qualified_module(code_repo, flags, &submodule, exports)?;
|
||||
unwind_protect!(module.use_qualified_module(code_repo, flags, &submodule, exports),
|
||||
wam_indices.insert_module(submodule));
|
||||
} else {
|
||||
submodule.inserted_expansions = true;
|
||||
wam_indices.remove_module(clause_name!("user"), &submodule);
|
||||
|
||||
@@ -244,6 +244,15 @@ macro_rules! get_level_and_unify {
|
||||
)
|
||||
}
|
||||
|
||||
macro_rules! unwind_protect {
|
||||
($e: expr, $protected: expr) => (
|
||||
match $e {
|
||||
Err(e) => { $protected; return Err(e); },
|
||||
_ => {}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
macro_rules! discard_result {
|
||||
($f: expr) => (
|
||||
match $f {
|
||||
|
||||
Reference in New Issue
Block a user