Flags and args on def (#8953)

# Description

Fixes #8916 
Fix flags and args on def which were call wrong .
Added some tests too .
This commit is contained in:
Amirhossein Akhlaghpour
2023-04-26 16:46:32 +03:30
committed by GitHub
parent 4b8a259916
commit 48c75831fc
2 changed files with 40 additions and 1 deletions

View File

@ -112,7 +112,22 @@ pub fn eval_call(
if let Some(var_id) = named.var_id {
let mut found = false;
for call_named in call.named_iter() {
if call_named.0.item == named.long {
if let (Some(spanned), Some(short)) = (&call_named.1, named.short) {
if spanned.item == short.to_string() {
if let Some(arg) = &call_named.2 {
let result = eval_expression(engine_state, caller_stack, arg)?;
callee_stack.add_var(var_id, result);
} else if let Some(arg) = &named.default_value {
let result = eval_expression(engine_state, caller_stack, arg)?;
callee_stack.add_var(var_id, result);
} else {
callee_stack.add_var(var_id, Value::boolean(true, call.head))
}
found = true;
}
} else if call_named.0.item == named.long {
if let Some(arg) = &call_named.2 {
let result = eval_expression(engine_state, caller_stack, arg)?;