Support Dynamic as function default return value.

This commit is contained in:
Stephen Chung
2020-09-26 16:27:38 +08:00
parent e62d1cd3ff
commit 03dce86328
7 changed files with 44 additions and 37 deletions

View File

@@ -211,7 +211,7 @@ impl Engine {
args: &mut FnCallArgs,
is_ref: bool,
pub_only: bool,
def_val: Option<bool>,
def_val: &Option<Dynamic>,
) -> Result<(Dynamic, bool), Box<EvalAltResult>> {
self.inc_operations(state)?;
@@ -281,7 +281,7 @@ impl Engine {
// Return default value (if any)
if let Some(val) = def_val {
return Ok((val.into(), false));
return Ok((val.clone(), false));
}
// Getter function not found?
@@ -469,7 +469,7 @@ impl Engine {
_is_method: bool,
pub_only: bool,
_capture: Option<Scope>,
def_val: Option<bool>,
def_val: &Option<Dynamic>,
_level: usize,
) -> Result<(Dynamic, bool), Box<EvalAltResult>> {
// Check for data race.
@@ -669,7 +669,7 @@ impl Engine {
hash_script: u64,
target: &mut Target,
idx_val: Dynamic,
def_val: Option<bool>,
def_val: &Option<Dynamic>,
native: bool,
pub_only: bool,
level: usize,
@@ -815,7 +815,7 @@ impl Engine {
this_ptr: &mut Option<&mut Dynamic>,
name: &str,
args_expr: &[Expr],
def_val: Option<bool>,
def_val: &Option<Dynamic>,
mut hash_script: u64,
native: bool,
pub_only: bool,