mirror of
https://github.com/nushell/nushell.git
synced 2024-11-24 17:34:00 +01:00
error when closure param lists aren't terminated by |
(#14095)
Fixes #13757, fixes #9562 # User-Facing Changes - `unclosed |` is returned for malformed closure parameters: ``` { |a } ``` - Parameter list closing pipes are highlighted as part of the closure
This commit is contained in:
parent
04fed82e5e
commit
3f75b6b371
@ -4594,7 +4594,7 @@ pub fn parse_closure_expression(
|
||||
} = token.1
|
||||
{
|
||||
end_span = Some(span);
|
||||
amt_to_skip = token.0;
|
||||
amt_to_skip += token.0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -4602,6 +4602,7 @@ pub fn parse_closure_expression(
|
||||
let end_point = if let Some(span) = end_span {
|
||||
span.end
|
||||
} else {
|
||||
working_set.error(ParseError::Unclosed("|".into(), Span::new(end, end)));
|
||||
end
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
use crate::repl::tests::{fail_test, run_test, TestResult};
|
||||
use rstest::rstest;
|
||||
|
||||
#[test]
|
||||
fn list_annotations() -> TestResult {
|
||||
@ -375,3 +376,12 @@ fn table_annotations_with_extra_characters() -> TestResult {
|
||||
let expected = "Extra characters in the parameter name";
|
||||
fail_test(input, expected)
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
#[case("{ |a $a }")]
|
||||
#[case("{ |a, b $a + $b }")]
|
||||
#[case("do { |a $a } 1")]
|
||||
#[case("do { |a $a } 1 2")]
|
||||
fn closure_param_list_not_terminated(#[case] input: &str) -> TestResult {
|
||||
fail_test(input, "unclosed |")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user