nushell/crates/nu-command/src
Leon 65d0b5b9d9
Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647)
# Description

This closes #7498, as well as fixes an issue reported in
https://github.com/nushell/nushell/pull/7002#issuecomment-1368340773

BEFORE:
```
〉[{foo: 'bar'} {}] | get foo
Error: nu:🐚:column_not_found (link)

  × Cannot find column
   ╭─[entry #5:1:1]
 1 │ [{foo: 'bar'} {}] | get foo
   · ────────┬────────   ─┬─
   ·         │            ╰── value originates here
   ·         ╰── cannot find column 'Empty cell'
   ╰────

〉[{foo: 'bar'} {}].foo
╭───┬─────╮
│ 0 │ bar │
│ 1 │     │
╰───┴─────╯
```
AFTER:
```
〉[{foo: 'bar'} {}] | get foo
Error: nu:🐚:column_not_found (link)

  × Cannot find column
   ╭─[entry #1:1:1]
 1 │ [{foo: 'bar'} {}] | get foo
   ·               ─┬        ─┬─
   ·                │         ╰── cannot find column 'foo'
   ·                ╰── value originates here
   ╰────

〉[{foo: 'bar'} {}].foo
Error: nu:🐚:column_not_found (link)

  × Cannot find column
   ╭─[entry #3:1:1]
 1 │ [{foo: 'bar'} {}].foo
   ·               ─┬  ─┬─
   ·                │   ╰── cannot find column 'foo'
   ·                ╰── value originates here       
   ╰────
```

EDIT: This also changes the semantics of `get`/`select` `-i` somewhat.
I've decided to leave it like this because it works more intuitively
with `default` and `compact`.
BEFORE:
```
〉[{a:1} {b:2} {a:3}] | select -i foo | to nuon
null
```
AFTER:
```
〉[{a:1} {b:2} {a:3}] | select -i foo | to nuon
[[foo]; [null], [null], [null]]
```

# User-Facing Changes

See above. EDIT: the issue with holes in cases like ` [{foo: 'bar'}
{}].foo.0` versus ` [{foo: 'bar'} {}].0.foo` has been resolved.

# Tests + Formatting

Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass

# After Submitting

If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
2023-01-02 14:45:43 -08:00
..
bits Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
bytes Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
charting Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
conversions Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
core_commands Expand Nushell's help system (#7611) 2022-12-30 17:44:37 +02:00
database Standardise the use of ShellError::UnsupportedInput and ShellError::TypeMismatch and add spans to every instance of the former (#7217) 2022-12-23 01:48:53 -05:00
dataframe Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
date Add extra_usage messages for subcommand-only commands (#7594) 2022-12-24 07:16:29 -06:00
deprecated Remove shape-directed import pattern parsing (#7570) 2022-12-22 16:36:13 +02:00
env Fix an example of env command (#7603) 2022-12-26 16:40:34 +08:00
experimental Change instances of Value::string("foo", Span::test_data()) to Value::test_string("foo") (#7592) 2022-12-24 10:25:38 +01:00
filesystem Fix usage of deprecated C-style logical and (#7627) 2022-12-29 16:47:33 +01:00
filters Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
formats Fix quoting of empty string in to nuon (#7632) 2022-12-30 09:49:35 +01:00
generators Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
hash Add extra_usage messages for subcommand-only commands (#7594) 2022-12-24 07:16:29 -06:00
math Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
misc Add more input/output type annotations (#7532) 2022-12-21 20:20:46 +01:00
network Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
path Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
platform Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
random Add extra_usage messages for subcommand-only commands (#7594) 2022-12-24 07:16:29 -06:00
shells Add more input/output type annotations (#7532) 2022-12-21 20:20:46 +01:00
strings Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
system Expand Nushell's help system (#7611) 2022-12-30 17:44:37 +02:00
viewers Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
default_context.rs Expand Nushell's help system (#7611) 2022-12-30 17:44:37 +02:00
example_test.rs Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00
input_handler.rs Standardise the use of ShellError::UnsupportedInput and ShellError::TypeMismatch and add spans to every instance of the former (#7217) 2022-12-23 01:48:53 -05:00
lib.rs Feature cleanup (#7182) 2022-11-22 16:58:11 -08:00
sort_utils.rs Further cleanup of Span::test_data usage + span fixes (#7595) 2022-12-24 07:41:57 -06:00