nushell/src
Stefan Holderbach e427c68731
Relax type-check of key-less table/record (#10629)
# Description
Relax typechecking of key-less `table`/`record`

Assume that they are acceptable for more narrowly specified
`table<...>`/`record<...>` where `...` specifies keys and potentially
types for those keys/columns.

This ensures that you can use commands that specify general return
values statically with more specific input-/args-type requirements.

Reduces the power of the type-check a bit but unlocks you to actually
use the specific annotations in more places.
Incompatibilities will only be raised if an output type declares
specific columns/keys.

Closes #9702

Supersedes #10594 as a simpler solution requiring no extra distinction.

h/t @1kinoti, @NotLebedev
# User-Facing Changes
Now legal at type-check time

```nu
def foo []: nothing -> table { [] }
def foo []: nothing -> table<> { ls }
def bar []: table<a:int,b:string> -> nothing {}

foo | bar 
```

# Tests + Formatting
- 1 explicit test with specified relaxed return type passed to concrete
expected input type
- 1 test leveraging the general output type of a built-in command
- 1 test wrapping a general built-in command and verifying the type
inference in the function body
2023-10-08 13:26:36 +02:00
..
tests Relax type-check of key-less table/record (#10629) 2023-10-08 13:26:36 +02:00
command.rs Move Value to helpers, separate span call (#10121) 2023-09-03 07:27:29 -07:00
config_files.rs Invert &Options to Option<&T> (#10315) 2023-09-13 07:00:58 +08:00
ide.rs evaluate $nu during --ide-check (#10470) 2023-09-22 10:53:25 -05:00
logger.rs Use variable names directly in the format strings (#7906) 2023-01-29 19:37:54 -06:00
main.rs Invert &Options to Option<&T> (#10315) 2023-09-13 07:00:58 +08:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00
run.rs allow --login to be used with nu's --commands parameter (#10253) 2023-09-06 13:27:16 -05:00
signals.rs Cleanup of src/main.rs (#7801) 2023-01-20 10:44:49 -08:00
terminal.rs Fix rm on macOS (#10282) 2023-09-08 19:03:30 -05:00
test_bins.rs Move eval_hook to nu-cmd-base (#10146) 2023-08-29 23:46:50 +02:00
tests.rs Improve assertions in src/tests.rs (#10449) 2023-09-21 20:12:36 +02:00

Nushell REPL

This directory contains the main Nushell REPL (read eval print loop) as part of the CLI portion of Nushell, which creates the nu binary itself.

Current versions of the nu binary will use the Nu argument parsing logic to parse the commandline arguments passed to nu, leaving the logic here to be a thin layer around what the core libraries.