From 2909483afb0be4caa41c84b032b118d721297093 Mon Sep 17 00:00:00 2001 From: imxyy_soope_ Date: Thu, 17 Jul 2025 10:00:42 +0800 Subject: [PATCH] refactor(ty): call --- src/ty/internal/mod.rs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/ty/internal/mod.rs b/src/ty/internal/mod.rs index 6e79c47..f4e283c 100644 --- a/src/ty/internal/mod.rs +++ b/src/ty/internal/mod.rs @@ -191,7 +191,7 @@ impl Value { env.enter_args(std::mem::take(old_args)); let mut args = args.into_iter().peekable(); env.enter_arg(args.next().unwrap()); - let (ret, cache) = env.with_cache(std::mem::take(cache), |env| { + let (mut ret, cache) = env.with_cache(std::mem::take(cache), |env| { engine.eval_func_deps(idx, env)?; let mut ret = engine.call_func(idx, env)?; while args.peek().is_some() { @@ -217,21 +217,20 @@ impl Value { } ret.ok() }); - let mut ret = ret?; let args = env.pop_args(len); - if let Value::Func(idx) = ret { - ret = PartialFunc(self::PartialFunc::new(idx, args, cache).into()); - } else if let Value::PartialFunc(func) = &mut ret { + if let Ok(Value::Func(idx)) = ret { + ret = PartialFunc(self::PartialFunc::new(idx, args, cache).into()).ok(); + } else if let Ok(Value::PartialFunc(func)) = &mut ret { Rc::make_mut(func).args.extend(args); } - ret.ok() + ret } &mut Func(idx) => { let len = args.len(); let mut args = args.into_iter().peekable(); env.reserve_args(len); env.enter_arg(args.next().unwrap()); - let (ret, cache) = env.with_new_cache(|env| { + let (mut ret, cache) = env.with_new_cache(|env| { engine.eval_func_deps(idx, env)?; let mut ret = engine.call_func(idx, env)?; ret.force(engine, env)?; @@ -258,14 +257,13 @@ impl Value { } ret.ok() }); - let mut ret = ret?; let args = env.pop_args(len); - if let Value::Func(idx) = ret { - ret = Value::PartialFunc(self::PartialFunc::new(idx, args, cache).into()) - } else if let Value::PartialFunc(func) = &mut ret { + if let Ok(Value::Func(idx)) = ret { + ret = Value::PartialFunc(self::PartialFunc::new(idx, args, cache).into()).ok() + } else if let Ok(Value::PartialFunc(func)) = &mut ret { Rc::make_mut(func).args.extend(args); } - ret.ok() + ret } Catchable(_) => return Ok(()), other => todo!("{}", other.typename()),