copy operator exports to impromptu modules (#307)

This commit is contained in:
Mark Thom
2020-04-14 01:03:49 -06:00
parent b74a4d5225
commit 082c6a9e64
2 changed files with 18 additions and 7 deletions

View File

@@ -1279,6 +1279,17 @@ fn compile_work_impl(
.filter(|(name, _)| name.owning_module().as_str() != "builtins")
.map(ModuleExport::PredicateKey)
.collect();
module.module_decl.exports.extend(
indices.op_dir.iter()
.map(|((name, _), OpDirValue (shared_op_desc, _))|
ModuleExport::OpDecl(OpDecl(
shared_op_desc.prec(),
shared_op_desc.assoc(),
name.clone(),
))
)
);
}
let mut clause_code_generator =

View File

@@ -166,7 +166,7 @@ pub trait SubModuleUser {
}
}
}
}
}
_ => {}
};
},
@@ -202,7 +202,7 @@ pub trait SubModuleUser {
_: &Module,
_: &Vec<ModuleExport>,
) -> Result<(), SessionError>;
fn use_module(
&mut self,
_: &mut CodeRepo,
@@ -232,7 +232,7 @@ where
if !user.import_decl(name.clone(), arity, submodule) {
let submodule_name = submodule.module_decl.name.clone();
return Err(SessionError::ModuleDoesNotContainExport(
submodule_name,
(name, arity)
@@ -250,12 +250,12 @@ where
let op_dir = user.op_dir();
let prec = op_decl.0;
op_decl.insert_into_op_dir(
submodule.module_decl.name.clone(),
op_dir,
prec,
);
);
}
}
}
@@ -282,12 +282,12 @@ pub fn use_module<User: SubModuleUser>(
ModuleExport::OpDecl(op_decl) => {
let op_dir = user.op_dir();
let prec = op_decl.0;
op_decl.insert_into_op_dir(
submodule.module_decl.name.clone(),
op_dir,
prec,
);
);
}
}
}