diff --git a/src/ast.rs b/src/ast.rs index 8eb85e24d..93c8bba0e 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -3466,6 +3466,7 @@ impl<'s> Populator<'s> { } ParseTokenType::pipe | ParseTokenType::redirection + | ParseTokenType::right_brace | ParseTokenType::background | ParseTokenType::andand | ParseTokenType::oror => { diff --git a/src/tests/tokenizer.rs b/src/tests/tokenizer.rs index d7d7209bf..b36b4bf1a 100644 --- a/src/tests/tokenizer.rs +++ b/src/tests/tokenizer.rs @@ -68,6 +68,19 @@ fn test_tokenizer() { assert_eq!(token.type_, TokenType::left_brace); } + { + let s = L!("{ | { name } '"); + let mut t = Tokenizer::new(s, TokFlags(0)); + let mut next_type = || t.next().unwrap().type_; + assert_eq!(next_type(), TokenType::left_brace); + assert_eq!(next_type(), TokenType::pipe); + assert_eq!(next_type(), TokenType::left_brace); + assert_eq!(next_type(), TokenType::string); + assert_eq!(next_type(), TokenType::right_brace); + assert_eq!(next_type(), TokenType::error); + assert!(t.next().is_none()); + } + let s = L!(concat!( "string &1 'nested \"quoted\" '(string containing subshells ", "){and,brackets}$as[$well (as variable arrays)] not_a_redirect^ ^ ^^is_a_redirect ",