}
None => {
retraction_info.push_record(RetractionRecord::AddedUserOp(op_decl.clone()));
-
module_op_exports.push((op_decl.clone(), None));
}
}
code_dir: &mut CodeDir,
op_dir: &mut OpDir,
meta_predicates: &mut MetaPredicateDir,
-) {
+) -> Result<(), SessionError> {
for export in imported_module.module_decl.exports.iter() {
match export {
ModuleExport::PredicateKey((ref name, arity)) => {
src_code_index.get(),
);
} else {
- unreachable!()
+ return Err(SessionError::ModuleDoesNotContainExport(
+ imported_module.module_decl.name.clone(),
+ (name.clone(), *arity),
+ ));
}
}
ModuleExport::OpDecl(ref op_decl) => {
}
}
}
+
+ Ok(())
}
fn import_module_exports_into_module(
meta_predicates: &mut MetaPredicateDir,
wam_op_dir: &mut OpDir,
module_op_exports: &mut ModuleOpExports,
-) {
+) -> Result<(), SessionError> {
for export in imported_module.module_decl.exports.iter() {
match export {
ModuleExport::PredicateKey((ref name, arity)) => {
src_code_index.get(),
);
} else {
- unreachable!()
+ return Err(SessionError::ModuleDoesNotContainExport(
+ imported_module.module_decl.name.clone(),
+ (name.clone(), *arity),
+ ));
}
}
ModuleExport::OpDecl(ref op_decl) => {
}
}
}
+
+ Ok(())
}
fn import_qualified_module_exports(
exports: &IndexSet<ModuleExport>,
code_dir: &mut CodeDir,
op_dir: &mut OpDir,
-) {
+) -> Result<(), SessionError> {
for export in imported_module.module_decl.exports.iter() {
if !exports.contains(export) {
continue;
src_code_index.get(),
);
} else {
- unreachable!()
+ return Err(SessionError::ModuleDoesNotContainExport(
+ imported_module.module_decl.name.clone(),
+ (name.clone(), *arity),
+ ));
}
}
ModuleExport::OpDecl(ref op_decl) => {
}
}
}
+
+ Ok(())
}
fn import_qualified_module_exports_into_module(
op_dir: &mut OpDir,
wam_op_dir: &mut OpDir,
module_op_exports: &mut ModuleOpExports,
-) {
+) -> Result<(), SessionError> {
for export in imported_module.module_decl.exports.iter() {
if !exports.contains(export) {
continue;
src_code_index.get(),
);
} else {
- unreachable!()
+ return Err(SessionError::ModuleDoesNotContainExport(
+ imported_module.module_decl.name.clone(),
+ (name.clone(), *arity),
+ ));
}
}
ModuleExport::OpDecl(ref op_decl) => {
}
}
}
+
+ Ok(())
}
impl<'a> LoadState<'a> {
code_dir,
op_dir,
meta_predicates,
- );
+ ).unwrap();
}
}
&mut self.wam.indices.code_dir,
&mut self.wam.indices.op_dir,
&mut self.wam.indices.meta_predicates,
- );
+ )?;
}
CompilationTarget::Module(ref defining_module_name) => {
match self.wam.indices.modules.get_mut(defining_module_name) {
&mut target_module.meta_predicates,
&mut self.wam.indices.op_dir,
&mut self.module_op_exports,
- );
+ )?;
}
None => {
// we find ourselves here because we're trying to import
&exports,
&mut self.wam.indices.code_dir,
&mut self.wam.indices.op_dir,
- );
+ )?;
}
CompilationTarget::Module(ref defining_module_name) => {
match self.wam.indices.modules.get_mut(defining_module_name) {
&mut target_module.op_dir,
&mut self.wam.indices.op_dir,
&mut self.module_op_exports,
- );
+ )?;
}
None => {
// we find ourselves here because we're trying to import
use prolog_parser::{clause_name, temp_v};
use crate::forms::{ModuleSource, Number}; //, PredicateKey};
+use crate::machine::PredicateKey;
use crate::machine::heap::*;
use crate::machine::machine_indices::*;
use crate::machine::machine_state::*;
// SessionError::InvalidFileName(filename) => {
// Self::existence_error(h, ExistenceError::Module(filename))
// }
- /*
SessionError::ModuleDoesNotContainExport(..) => {
Self::permission_error(
h,
functor!("module_does_not_contain_claimed_export"),
)
}
- */
SessionError::ModuleCannotImportSelf(module_name) => Self::permission_error(
h,
Permission::Modify,
#[derive(Debug, Clone, Copy)]
pub enum Permission {
- // Access,
+ Access,
Create,
InputStream,
Modify,
#[inline]
pub fn as_str(self) -> &'static str {
match self {
- // Permission::Access => "access",
+ Permission::Access => "access",
Permission::Create => "create",
Permission::InputStream => "input",
Permission::Modify => "modify",
// CannotOverwriteImport(ClauseName),
ExistenceError(ExistenceError),
// InvalidFileName(ClauseName),
- // ModuleDoesNotContainExport(ClauseName, PredicateKey),
+ ModuleDoesNotContainExport(ClauseName, PredicateKey),
ModuleCannotImportSelf(ClauseName),
NamelessEntry,
OpIsInfixAndPostFix(ClauseName),