nushell icon indicating copy to clipboard operation
nushell copied to clipboard

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

Open deoradh opened this issue 3 years ago • 4 comments

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

deoradh avatar Dec 22 '22 21:12 deoradh

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

melMass avatar Dec 30 '22 18:12 melMass

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.

fdncred avatar Dec 30 '22 20:12 fdncred

not having all the proper arms that it needed

This was it!

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

melMass avatar Dec 30 '22 20:12 melMass

I also reproduced this issue in my code image

glcraft avatar Feb 22 '23 13:02 glcraft