nushell/crates/nu-protocol/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
..
ast Remove shape-directed import pattern parsing (#7570) 2022-12-22 16:36:13 +02:00
engine Expand Nushell's help system (#7611) 2022-12-30 17:44:37 +02:00
value Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
cli_error.rs Clippy fix for Rust 1.63 (#6299) 2022-08-11 11:54:54 -05:00
config.rs Fix typos by codespell (#7600) 2022-12-26 02:31:26 -05:00
example.rs Start support for commandline args to nu itself (#851) 2022-01-27 01:42:39 +11:00
exportable.rs Removes export env command (#6468) 2022-09-25 19:52:43 +03:00
id.rs Overlays (#5375) 2022-05-08 07:39:22 +12:00
lev_distance.rs Improve "Did you mean?" suggestions (#6579) 2022-09-20 19:46:01 -05:00
lib.rs Improve "Did you mean?" suggestions (#6579) 2022-09-20 19:46:01 -05:00
module.rs Removes export env command (#6468) 2022-09-25 19:52:43 +03:00
pipeline_data.rs Make get hole errors and cell path hole errors identical (improvement on #7002) (#7647) 2023-01-02 14:45:43 -08:00
shell_error.rs Tweak new input type error message (#7646) 2022-12-31 21:56:59 -08:00
signature.rs Expand Nushell's help system (#7611) 2022-12-30 17:44:37 +02:00
span.rs Protocol: debug_assert!() Span to reflect a valid slice (#6806) 2022-12-03 11:44:12 +02:00
syntax_shape.rs sort enums add missing items to parse_shape_name (#7450) 2022-12-13 10:46:22 -06:00
ty.rs sort enums add missing items to parse_shape_name (#7450) 2022-12-13 10:46:22 -06:00
variable.rs Limited mutable variables (#7089) 2022-11-11 19:51:08 +13:00