nushell/crates/nu-protocol/src
Stefan Holderbach 1be4eaeae3
Revert #8395 "Treat empty pipelines as pass-through" (#9472)
In my view we should revert nushell/nushell#8395 for now

## Potentially inconsistent application of semantic change
#8395 (1d5e7b441b) was loosening the type
coercion rules significantly, to let missing data / void returns that
were either expressed by `PipelineData::Empty` or the `Value::nothing`
be accept by specifically those commands/operations that made use of
`PipelineData::into_iter_strict()`. This could apply the new rules
inconsistently.

## Turning explicit failures into silent continuations
Furthermore the effect of this breaking change to the missing data
semantics could make previous errors into silent failures.
This could either just reduce the effectiveness of teaching error
messages in interactive use:

### Contrived example before
```bash
> cd . | where blah
Error: nu:🐚:only_supports_this_input_type

  × Input type not supported.
   ╭─[entry #13:1:1]
 1 │ cd . | where blah
   ·        ──┬──┬
   ·          │  ╰── input type: null
   ·          ╰── only list, binary, raw data or range input data is supported
   ╰────
```
### ...after, with #8395
```bash
> cd . | where blah
╭────────────╮
│ empty list │
╰────────────╯
```

In rare cases people could already try to rely on catching an error of a
downstream command to actually deal with the missing data, so it would
be a breaking change for their existing code.

## Problem with `PipelineData::into_iter_strict()`

Maybe this makes `_strict` a bit of a misnomer for this particular
iterator construction.
Further we did not actively test the `PipelineData::empty` branch before

![grafik](https://github.com/nushell/nushell/assets/15833959/c377bf1d-d47c-4c25-a342-9a348539f242)

## Parsimonious solution exists

For the motivating issue https://github.com/nushell/nushell/issues/8393
there already exists a fix that makes `ls` more consistent with the type
system by returning an empty `Value::List`
https://github.com/nushell/nushell/pull/8439
2023-06-20 20:27:18 +12:00
..
ast revert: move to ahash (#9464) 2023-06-18 15:27:57 +12:00
engine revert: move to ahash (#9464) 2023-06-18 15:27:57 +12:00
value revert: move to ahash (#9464) 2023-06-18 15:27:57 +12:00
alias.rs Document and critically review ShellError variants - Ep. 3 (#8340) 2023-03-06 18:33:09 +01:00
cli_error.rs remove nu_cli crate dependency from nu_std (#8807) 2023-04-08 13:53:43 +02:00
config.rs revert: move to ahash (#9464) 2023-06-18 15:27:57 +12:00
did_you_mean.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
example.rs remove unused imports: Deserialize, Serialize compiler warning for nu-protocol/src/example.rs (#8514) 2023-03-18 11:45:12 -07:00
exportable.rs Allow creating modules from directories (#9066) 2023-05-06 21:39:54 +03:00
id.rs Add virtual path abstraction layer (#9245) 2023-05-23 23:48:50 +03:00
lev_distance.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
lib.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
module.rs Allow creating modules from directories (#9066) 2023-05-06 21:39:54 +03:00
parse_error.rs Cut down on unnecessary parsing for SyntaxShape::Any (#9280) 2023-05-25 07:53:57 +12:00
pipeline_data.rs Revert #8395 "Treat empty pipelines as pass-through" (#9472) 2023-06-20 20:27:18 +12:00
plugin_signature.rs Plugin api docs (#9452) 2023-06-16 16:25:40 +02:00
shell_error.rs Fix missing file names from rm errors (#9120) 2023-06-18 10:00:12 +02:00
signature.rs Change type of flag defaults to Option<Value> (#9085) 2023-05-03 23:09:36 +02:00
span.rs Use variable names directly in the format strings (#7906) 2023-01-29 19:37:54 -06:00
syntax_shape.rs allow records to have type annotations (#8914) 2023-04-26 08:16:55 -05:00
ty.rs allow records to have type annotations (#8914) 2023-04-26 08:16:55 -05:00
util.rs move BufferedReader out of nu-command (#7697) 2023-01-06 15:22:17 -08:00
variable.rs Limited mutable variables (#7089) 2022-11-11 19:51:08 +13:00