add dedicated const in pipeline, const builtin var errors (#7784)

# Description

Currently `let` and `const` share error handling, and this might lead to
confusing error messages


![sJan17-51](https://user-images.githubusercontent.com/98623181/212981108-c80b3e55-cece-4ee5-ba8f-cb5dcfdf63e0.png)

This PR adds dedicated errors to `const`
This commit is contained in:
mike
2023-01-20 02:11:48 +03:00
committed by GitHub
parent 2982a2c963
commit 0fe2884397
3 changed files with 50 additions and 4 deletions

View File

@ -5001,7 +5001,7 @@ pub fn parse_expression(
.0,
Some(ParseError::BuiltinCommandInPipeline("for".into(), spans[0])),
),
b"let" | b"const" => (
b"let" => (
parse_call(
working_set,
&spans[pos..],
@ -5024,6 +5024,29 @@ pub fn parse_expression(
spans[0],
)),
),
b"const" => (
parse_call(
working_set,
&spans[pos..],
spans[0],
expand_aliases_denylist,
is_subexpression,
)
.0,
Some(ParseError::ConstInPipeline(
String::from_utf8_lossy(match spans.len() {
1 | 2 | 3 => b"value",
_ => working_set.get_span_contents(spans[3]),
})
.to_string(),
String::from_utf8_lossy(match spans.len() {
1 => b"variable",
_ => working_set.get_span_contents(spans[1]),
})
.to_string(),
spans[0],
)),
),
b"mut" => (
parse_call(
working_set,