Errors when let in, let env and similar commands are passed. (#5866)

* throw `let nu/env/nothing/in` error in parsing

* add tests and fmt

* fix clippy

* suggestions

* fmt

* `lvalue.span` instead of `spans[1]`

* clippy

* fmt
This commit is contained in:
pwygab
2022-06-25 05:55:25 +08:00
committed by GitHub
parent f02076daa8
commit 1345f97202
4 changed files with 34 additions and 0 deletions

View File

@@ -2286,6 +2286,15 @@ pub fn parse_let(
parse_var_with_opt_type(working_set, &spans[1..(span.0)], &mut idx);
error = error.or(err);
let var_name =
String::from_utf8_lossy(working_set.get_span_contents(lvalue.span))
.to_string();
if ["in", "nu", "env", "nothing"].contains(&var_name.as_str()) {
error =
error.or(Some(ParseError::LetBuiltinVar(var_name, lvalue.span)));
}
let var_id = lvalue.as_var();
let rhs_type = rvalue.ty.clone();