mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 07:55:59 +02:00
Change type of flag defaults to Option<Value> (#9085)
# Description
Follow-up of #8940. As @bobhy pointed out, it makes sense for the
behaviour of flags to match the one for positional arguments, where
default values are of type `Option<Value>` instead of
`Option<Expression>`.
# User-Facing Changes
The same ones from the original PR:
- Flag default values will now be parsed as constants.
- If the default value is not a constant, a parser error is displayed.
# Tests + Formatting
A [new
test](e34e2d35f4/src/tests/test_engine.rs (L338-L344)
)
has been added to verify the new restriction.
This commit is contained in:
committed by
GitHub
parent
e4625acf24
commit
d9a00a876b
@ -117,10 +117,8 @@ pub fn eval_call(
|
||||
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 if let Some(value) = &named.default_value {
|
||||
callee_stack.add_var(var_id, value.to_owned());
|
||||
} else {
|
||||
callee_stack.add_var(var_id, Value::boolean(true, call.head))
|
||||
}
|
||||
@ -131,10 +129,8 @@ pub fn eval_call(
|
||||
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 if let Some(value) = &named.default_value {
|
||||
callee_stack.add_var(var_id, value.to_owned());
|
||||
} else {
|
||||
callee_stack.add_var(var_id, Value::boolean(true, call.head))
|
||||
}
|
||||
@ -145,10 +141,8 @@ pub fn eval_call(
|
||||
if !found {
|
||||
if named.arg.is_none() {
|
||||
callee_stack.add_var(var_id, Value::boolean(false, call.head))
|
||||
} 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 if let Some(value) = named.default_value {
|
||||
callee_stack.add_var(var_id, value);
|
||||
} else {
|
||||
callee_stack.add_var(var_id, Value::Nothing { span: call.head })
|
||||
}
|
||||
|
Reference in New Issue
Block a user