# Description This PR disallows blocks as first-class values by removing the ability to create them using the `block` syntax shape or type. Now, the parser will only ever be able to create closures as first-class values. This means that `{ 3 }` will always be treated as a closure, unless used in the specifically supported use case of the literal being given as an arg to `for`, `if` and other built-in block users. Note: first-class value here means "value that can be passed into commands and held in variables" # User-Facing Changes This may break some user scripts as `: block` is no longer allows as a type annotation. Note: these cases were not actually supported before, as, for example, passing a block that accessed a variable would have errored when the block was later evaluated. Closures do not have the restriction mentioned above and are the much safer value to pass as first-class, so now they are the only block-like value to be allowed to be passed. # 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 -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # 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. --> |
||
---|---|---|
.. | ||
tests | ||
command.rs | ||
config_files.rs | ||
ide.rs | ||
logger.rs | ||
main.rs | ||
README.md | ||
run.rs | ||
signals.rs | ||
terminal.rs | ||
test_bins.rs | ||
tests.rs |
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.