]> Repositorios git - scryer-prolog.git/commitdiff
remove module from toplevel in unqualified use_module
authorMark Thom <[email protected]>
Sat, 26 Oct 2019 18:39:42 +0000 (12:39 -0600)
committerMark Thom <[email protected]>
Sat, 26 Oct 2019 18:39:42 +0000 (12:39 -0600)
src/prolog/machine/mod.rs

index 6bf23eb4becc5729386c6655570f5e41813c5e1e..c24e82e8e374494467da27294165d3c0ad76244b 100644 (file)
@@ -443,10 +443,13 @@ impl Machine {
 
        let load_result = match to_src(name) {
            ModuleSource::Library(name) =>
-               if !self.indices.modules.contains_key(&name) {
-                   load_library(self, name, false)
-               } else {
+                if let Some(module) = self.indices.take_module(name.clone()) {
+                    self.indices.remove_module(clause_name!("user"), &module);
+                    self.indices.modules.insert(name.clone(), module);
+
                    Ok(name)
+               } else {
+                   load_library(self, name, false)
                },
            ModuleSource::File(name) =>
                 load_module_from_file(self, name.as_str(), false)
@@ -489,7 +492,7 @@ impl Machine {
                     self.indices.modules.insert(name.clone(), module);
 
                    Ok(name)
-               } else {                
+               } else {
                    load_library(self, name, false)
                },
            ModuleSource::File(name) =>