nushell/tests/repl
Yash Thakur 1128fa137f
Fix spread operator lexing in records (#15023)
# Description

Zyphys found that when parsing `{...{}, ...{}, a: 1}`, the `a:` would be
considered one token, leading to a parse error ([Discord
message](https://discord.com/channels/601130461678272522/614593951969574961/1336762075535511573)).
This PR fixes that.

What would happen is that while getting tokens, the following would
happen in a loop:
1. Get the next two tokens while treating `:` as a special character (so
we get the next field key and a colon token)
2. Get the next token while not treating `:` as a special character (so
we get the next value)

I didn't update this when I added the spread operator. With `{...{},
...{}, a: 1}`, the first two tokens would be `...{}` and `...{}`, and
the next token would be `a:`. This PR changes this loop to first get a
single token, check if it's spreading a record, and move on if so.

Alternatives considered:
- Treat `:` as a special character when getting the value too. This
would simplify the loop greatly, but would mean you can't use colons in
values.
- Merge the loop for getting tokens and the loop for parsing those
tokens. I tried this, but it complicates things if you run into a syntax
error and want to create a garbage span going to the end of the record.

# User-Facing Changes

Nothing new
2025-02-11 09:51:34 -05:00
..
mod.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_bits.rs Rename/deprecate into bits to format bits (#14634) 2024-12-28 22:49:25 +01:00
test_cell_path.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_commandline.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_conditionals.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_config_path.rs Always populate config record during startup (#14435) 2024-11-27 13:52:47 +08:00
test_config.rs Improve and fix filesize formatting/display (#14397) 2025-01-22 22:24:51 -08:00
test_converters.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_custom_commands.rs run ensure_flag_arg_type for short flag values (#14074) 2024-10-20 23:12:57 +02:00
test_engine.rs Rename/deprecate range to slice (#14825) 2025-01-17 06:21:32 -06:00
test_env.rs Allow both NU_PLUGIN_DIRS const and env at the same time (#14553) 2024-12-11 11:41:06 -06:00
test_help.rs Remove superfluous separator when there's no flag description/comment (#14007) 2024-10-05 15:19:26 +02:00
test_hiding.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_ide.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_iteration.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_known_external.rs Make parsing for unknown args in known externals like normal external calls (#13414) 2024-07-21 01:32:36 -07:00
test_math.rs Fix bugs and UB in bit shifting ops (#13663) 2024-08-22 11:54:27 +02:00
test_modules.rs fix error propagation in export-env (#14847) 2025-01-16 13:59:39 -06:00
test_parser.rs Improve and fix filesize formatting/display (#14397) 2025-01-22 22:24:51 -08:00
test_ranges.rs Fix range contains (#14011) 2024-10-22 10:34:41 -05:00
test_regex.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_signatures.rs correctly parse table literals as lists (#14226) 2024-11-06 07:36:56 -06:00
test_spread.rs Fix spread operator lexing in records (#15023) 2025-02-11 09:51:34 -05:00
test_stdlib.rs Improves startup time when using std-lib (#13842) 2024-10-03 06:28:22 -05:00
test_strings.rs Restrict strings beginning with quote should also ending with quote (#13131) 2024-06-28 09:47:12 +08:00
test_table_operations.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00
test_type_check.rs return accurate type errors from blocks/expressions in type unions (#14420) 2024-11-23 13:42:00 -08:00
tests.rs Merged tests to produce a single binary (#12826) 2024-05-13 13:37:53 +00:00