nushell/crates/nu-cmd-lang/src
Wind 5596190377
do command: Make closure support default parameters and type checking (#12056)
# Description
Fixes: #11287
Fixes: #11318

It's implemented by porting the similar logic in `eval_call`, I've tried
to reduce duplicate code, but it seems that it's hard without using
macros.

3ee2fc60f9/crates/nu-engine/src/eval.rs (L60-L130)

It only works for `do` command.

# User-Facing Changes
## Closure supports optional parameter
```nushell
let code = {|x?| print ($x | default "i'm the default")}
do $code
```
Previously it raises an error, after this change, it prints `i'm the
default`.

## Closure supports type checking
```nushell
let code = {|x: int| echo $x}
do $code "aa"
```
After this change, it will raise an error with a message: `can't convert
string to int`

# Tests + Formatting
Done

# After Submitting
NaN
2024-03-11 18:11:08 +08:00
..
core_commands do command: Make closure support default parameters and type checking (#12056) 2024-03-11 18:11:08 +08:00
default_context.rs Keep plugins persistently running in the background (#12064) 2024-03-09 17:10:22 -06:00
example_support.rs Debugger experiments (#11441) 2024-03-08 20:21:35 +02:00
example_test.rs remove def-env and export def-env (#10999) 2023-11-19 23:25:09 +08:00
lib.rs cratification: Example support (#8231) 2023-02-27 13:58:56 -08:00