Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

else if causes unhelpful parsing error in 0.73.0 when condition has an issue #7575

Closed
deoradh opened this issue Dec 22, 2022 · 4 comments · Fixed by #8274
Closed

else if causes unhelpful parsing error in 0.73.0 when condition has an issue #7575

deoradh opened this issue Dec 22, 2022 · 4 comments · Fixed by #8274
Labels
parser Issues related to parsing unhelpful-error The error message you observe is not helpful to identify the problem
Milestone

Comments

@deoradh
Copy link

deoradh commented Dec 22, 2022

Describe the bug

Nu 0.73.0 needs an improved error message when parsing if-else-if. See also Discord help chat on 22 Dec 2022.

How to reproduce

〉 if true { 'one' } else if $a { 'two' } else if $a { 'three' }
Error: nu::parser::parser_incomplete (link)

  × Parser incomplete.
   ╭─[entry #3:1:1]
 1 │ if true { 'one' } else if $a { 'two' } else if $a { 'three' }
   ·                        ─┬
   ·                         ╰── parser support missing for this expression
   ╰────

Expected behavior

If a syntax error prevents parsing of the if-else, surfacing that error is necessary to resolve any issues. This is particularly true when we encounter breaking changes on upgrade.

Screenshots

No response

Configuration

key value
version 0.73.0
branch
commit_hash
build_os macos-aarch64
build_target aarch64-apple-darwin
rust_version rustc 1.66.0 (69f9c33d7 2022-12-12)
rust_channel stable-aarch64-apple-darwin
cargo_version cargo 1.66.0 (d65d197ad 2022-11-15)
pkg_version 0.73.0
build_time 2022-12-21 16:19:51 -08:00
build_rust_channel release
features database, default, trash, which, zip
installed_plugins query, query json, query web, query xml

Additional context

No response

@sholderbach sholderbach added unhelpful-error The error message you observe is not helpful to identify the problem parser Issues related to parsing labels Dec 23, 2022
@melMass
Copy link
Contributor

melMass commented Dec 30, 2022

Same here but I can't seem to be able to debug it on my side.

@fdncred
Copy link
Collaborator

fdncred commented Dec 30, 2022

For the record, when I was trouble shooting this, the problem ended up being that parts of the script were using out of date syntax which manifested in an odd and unhelpful error. So, if you have this problem, I'd first check your script for syntax issues.

Having said that, we should have more helpful errors. It seems like someone may have tracked a bug down too relating to this, such as a match block in the source code not having all the proper arms that it needed. I'm not sure where that is. You may be able to find that by following the original thread on discord here https://discord.com/channels/601130461678272522/614593951969574961/1055605163328536687.

@melMass
Copy link
Contributor

melMass commented Dec 30, 2022

not having all the proper arms that it needed

This was it!

if ($x>2){} vs if ($x>2) {}
________________________^_ note the space here

@glcraft
Copy link

glcraft commented Feb 22, 2023

I also reproduced this issue in my code
image

fdncred pushed a commit that referenced this issue Mar 17, 2023
…8274)

# Description

Fixes: #7575

# User-Facing Changes

Previously:
```
if❯ if false { "aaa" } else if $a { 'a' }
Error: nu::parser::parse_mismatch

  × Parse mismatch during operation.
   ╭─[entry #10:1:1]
 1 │ if false { "aaa" } else if $a { 'a' }
   ·                         ─┬
   ·                          ╰── expected block, closure or record
   ╰────

```

After:
```
❯ if false { "aaa" } else if $a { 'a' }
Error: nu::parser::variable_not_found

  × Variable not found.
   ╭─[entry #1:1:1]
 1 │ if false { "aaa" } else if $a { 'a' }
   ·                            ─┬
   ·                             ╰── variable not found
   ╰────

```


# 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.
@hustcer hustcer added this to the v0.78.0 milestone Mar 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
parser Issues related to parsing unhelpful-error The error message you observe is not helpful to identify the problem
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants