diff --git a/crates/nu-parser/src/eval.rs b/crates/nu-parser/src/eval.rs index 1cf02f0b2e..7f5b2e845a 100644 --- a/crates/nu-parser/src/eval.rs +++ b/crates/nu-parser/src/eval.rs @@ -114,6 +114,13 @@ pub fn eval_constant( span: expr.span, }), Expr::Nothing => Ok(Value::Nothing { span: expr.span }), + Expr::ValueWithUnit(expr, unit) => { + if let Ok(Value::Int { val, .. }) = eval_constant(working_set, expr) { + Ok(unit.item.to_value(val, unit.span)) + } else { + Err(ParseError::NotAConstant(expr.span)) + } + } _ => Err(ParseError::NotAConstant(expr.span)), } } diff --git a/src/tests/test_engine.rs b/src/tests/test_engine.rs index 636c860837..584eefee45 100644 --- a/src/tests/test_engine.rs +++ b/src/tests/test_engine.rs @@ -340,10 +340,15 @@ fn default_value12() -> TestResult { } #[test] -fn default_value_constant() -> TestResult { +fn default_value_constant1() -> TestResult { run_test(r#"def foo [x = "foo"] { $x }; foo"#, "foo") } +#[test] +fn default_value_constant2() -> TestResult { + run_test(r#"def foo [secs = 1sec] { $secs }; foo"#, "1sec") +} + #[test] fn default_value_not_constant1() -> TestResult { fail_test(