forked from Orchid/orchid
Correctly halts
This commit is contained in:
@@ -35,12 +35,11 @@ impl Parser {
|
||||
comments: Vec<Comment>,
|
||||
callback: &mut impl AsyncFnMut(ModPath<'_>, Vec<ParsTokTree>) -> OrcRes<Vec<Item>>,
|
||||
) -> OrcRes<Vec<Item>> {
|
||||
let mut temp_store = self.system.ext().exprs().derive(true);
|
||||
let src_path = line.first().expect("cannot be empty").sr.path();
|
||||
let line = join_all(
|
||||
(line.into_iter())
|
||||
.map(|t| async { tt_to_api(&mut self.system.ext().exprs().clone(), t).await }),
|
||||
)
|
||||
.await;
|
||||
let line =
|
||||
join_all((line.into_iter()).map(|t| async { tt_to_api(&mut temp_store.clone(), t).await }))
|
||||
.await;
|
||||
let mod_path = ctx.src_path().suffix(path.unreverse(), self.system.i()).await;
|
||||
let comments = comments.iter().map(Comment::to_api).collect_vec();
|
||||
let req = api::ParseLine {
|
||||
@@ -53,18 +52,16 @@ impl Parser {
|
||||
line,
|
||||
};
|
||||
match self.system.reqnot().request(req).await {
|
||||
Ok(parsed_v) => {
|
||||
let mut ext_exprs = self.system.ext().exprs().clone();
|
||||
Ok(parsed_v) =>
|
||||
conv(parsed_v, path, callback, &mut ConvCtx {
|
||||
i: self.system.i(),
|
||||
mod_path: &mod_path,
|
||||
ext_exprs: &mut ext_exprs,
|
||||
ext_exprs: &mut temp_store,
|
||||
pctx: &mut ExprParseCtx { ctx: self.system.ctx(), exprs: self.system.ext().exprs() },
|
||||
src_path: &src_path,
|
||||
sys: &self.system,
|
||||
})
|
||||
.await
|
||||
},
|
||||
.await,
|
||||
Err(e) => Err(OrcErrv::from_api(&e, &self.system.ctx().i).await),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user