diff --git a/src/parse/mod.rs b/src/parse/mod.rs index 1fbab39..a9ac098 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -280,6 +280,20 @@ impl<'t> ParseStream<'t> { None } } + /// Catches a Sep token in cases where separators are optional + /// + /// e.g. both `if foo; then bar; fi` and + /// ```bash + /// if foo; then + /// bar + /// fi + /// ``` + /// are valid syntax + fn catch_separator(&mut self, node_tks: &mut Vec>) { + if *self.next_tk_class() == TkRule::Sep { + node_tks.push(self.next_tk().unwrap()); + } + } fn next_tk_is_some(&self) -> bool { self.tokens.first().is_some_and(|tk| tk.class != TkRule::EOI) } @@ -374,7 +388,6 @@ impl<'t> ParseStream<'t> { &node_tks.get_span().unwrap() )); }; - cond.tokens.debug_tokens(); node_tks.extend(cond.tokens.clone()); if !self.check_keyword("then") || !self.next_tk_is_some() { @@ -384,10 +397,10 @@ impl<'t> ParseStream<'t> { )); } node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); let mut body_blocks = vec![]; while let Some(body_block) = self.parse_block(true)? { - body_block.tokens.debug_tokens(); node_tks.extend(body_block.tokens.clone()); body_blocks.push(body_block); } @@ -399,18 +412,18 @@ impl<'t> ParseStream<'t> { }; let cond_node = CondNode { cond: Box::new(cond), body: body_blocks }; cond_nodes.push(cond_node); - flog!(DEBUG, cond_nodes.len()); - flog!(DEBUG, !self.check_keyword("elif") || !self.next_tk_is_some()); if !self.check_keyword("elif") || !self.next_tk_is_some() { break } else { node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); } } if self.check_keyword("else") { node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); while let Some(block) = self.parse_block(true)? { else_block.push(block) } @@ -429,6 +442,7 @@ impl<'t> ParseStream<'t> { )); } node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); let node = Node { class: NdRule::IfNode { cond_nodes, else_block }, @@ -436,7 +450,6 @@ impl<'t> ParseStream<'t> { redirs: vec![], tokens: node_tks }; - flog!(DEBUG, node); Ok(Some(node)) } fn parse_loop(&mut self) -> ShResult>> { @@ -454,6 +467,7 @@ impl<'t> ParseStream<'t> { .parse() // LoopKind implements FromStr .unwrap(); node_tks.push(loop_tk); + self.catch_separator(&mut node_tks); let Some(cond) = self.parse_block(true)? else { return Err(parse_err_full( @@ -470,6 +484,7 @@ impl<'t> ParseStream<'t> { )) } node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); let mut body = vec![]; while let Some(block) = self.parse_block(true)? { @@ -490,6 +505,7 @@ impl<'t> ParseStream<'t> { )) } node_tks.push(self.next_tk().unwrap()); + self.catch_separator(&mut node_tks); cond_node = CondNode { cond: Box::new(cond), body }; let loop_node = Node { @@ -498,7 +514,6 @@ impl<'t> ParseStream<'t> { redirs: vec![], tokens: node_tks }; - flog!(DEBUG, loop_node); Ok(Some(loop_node)) } fn parse_pipeline(&mut self) -> ShResult>> { @@ -756,12 +771,14 @@ impl<'t> Iterator for ParseStream<'t> { if self.flags.contains(ParseFlags::ERROR) { return None } - if let Some(tk) = self.tokens.first() { - if tk.class == TkRule::EOI { + while let Some(tk) = self.tokens.first() { + if let TkRule::EOI = tk.class { return None } - if tk.class == TkRule::SOI { + if let TkRule::SOI | TkRule::Sep = tk.class { self.next_tk(); + } else { + break } } match self.parse_cmd_list() { diff --git a/src/tests/expand.rs b/src/tests/expand.rs index b9711e7..6051694 100644 --- a/src/tests/expand.rs +++ b/src/tests/expand.rs @@ -9,6 +9,7 @@ fn simple_expansion() { write_vars(|v| v.new_var("foo", "this is the value of the variable".into())); let mut tokens: Vec = LexStream::new(varsub, LexFlags::empty()) + .map(|tk| tk.unwrap()) .filter(|tk| !matches!(tk.class, TkRule::EOI | TkRule::SOI)) .collect(); let var_tk = tokens.pop().unwrap(); diff --git a/src/tests/parser.rs b/src/tests/parser.rs index 64cadba..0918fcf 100644 --- a/src/tests/parser.rs +++ b/src/tests/parser.rs @@ -3,7 +3,9 @@ use super::super::*; #[test] fn parse_simple() { let input = "echo hello world"; - let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()).collect(); + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); insta::assert_debug_snapshot!(nodes) @@ -12,7 +14,9 @@ fn parse_simple() { #[test] fn parse_pipeline() { let input = "echo foo | sed s/foo/bar"; - let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()).collect(); + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); insta::assert_debug_snapshot!(nodes) @@ -21,7 +25,9 @@ fn parse_pipeline() { #[test] fn parse_conjunction() { let input = "echo foo && echo bar"; - let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()).collect(); + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); insta::assert_debug_snapshot!(nodes) @@ -30,7 +36,9 @@ fn parse_conjunction() { #[test] fn parse_conjunction_and_pipeline() { let input = "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/"; - let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()).collect(); + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); insta::assert_debug_snapshot!(nodes) @@ -42,7 +50,90 @@ fn parse_multiline() { echo hello world echo foo bar echo boo biz"; - let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()).collect(); + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} + +#[test] +fn parse_if_simple() { + let input = "if foo; then echo bar; fi"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_if_with_elif() { + let input = "if foo; then echo bar; elif bar; then echo foo; fi"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_if_multiple_elif() { + let input = "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_if_multiline() { + let input = " +if foo; then + echo bar +elif bar; then + echo foo; +elif biz; then + echo baz +fi"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_loop_simple() { + let input = "while foo; do bar; done"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_loop_until() { + let input = "until foo; do bar; done"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); + let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); + + insta::assert_debug_snapshot!(nodes) +} +#[test] +fn parse_loop_multiline() { + let input = " +until foo; do + bar +done"; + let tk_stream: Vec<_> = LexStream::new(input, LexFlags::empty()) + .map(|tk| tk.unwrap()) + .collect(); let nodes: Vec<_> = ParseStream::new(tk_stream).collect(); insta::assert_debug_snapshot!(nodes) diff --git a/src/tests/snapshots/fern__tests__lexer__lex_multiline.snap b/src/tests/snapshots/fern__tests__lexer__lex_multiline.snap index 2d1f90c..8aedcc7 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_multiline.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_multiline.snap @@ -3,160 +3,160 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "echo hello world\necho foo bar\necho boo biz", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..4, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..4, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 5..10, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 5..10, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 11..16, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 11..16, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Sep, - err_span: None, - err: Null, - span: Span { - range: 16..17, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Sep, + span: Span { + range: 16..17, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 17..21, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 17..21, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 22..25, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 22..25, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 26..29, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 26..29, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Sep, - err_span: None, - err: Null, - span: Span { - range: 29..30, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Sep, + span: Span { + range: 29..30, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 30..34, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 30..34, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 35..38, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 35..38, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 39..42, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 39..42, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 42..42, - source: "echo hello world\necho foo bar\necho boo biz", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 42..42, + source: "echo hello world\necho foo bar\necho boo biz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__lexer__lex_quote_str.snap b/src/tests/snapshots/fern__tests__lexer__lex_quote_str.snap index c867740..44f7a93 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_quote_str.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_quote_str.snap @@ -3,76 +3,76 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "echo \"foo bar\" biz baz", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..4, - source: "echo \"foo bar\" biz baz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..4, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 5..14, - source: "echo \"foo bar\" biz baz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 5..14, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 15..18, - source: "echo \"foo bar\" biz baz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 15..18, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 19..22, - source: "echo \"foo bar\" biz baz", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 19..22, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 22..22, - source: "echo \"foo bar\" biz baz", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 22..22, + source: "echo \"foo bar\" biz baz", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__lexer__lex_redir.snap b/src/tests/snapshots/fern__tests__lexer__lex_redir.snap index 34abd9f..1bbb910 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_redir.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_redir.snap @@ -3,76 +3,76 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "echo foo > bar.txt", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..4, - source: "echo foo > bar.txt", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..4, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 5..8, - source: "echo foo > bar.txt", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 5..8, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Redir, - err_span: None, - err: Null, - span: Span { - range: 9..10, - source: "echo foo > bar.txt", + ), + Ok( + Tk { + class: Redir, + span: Span { + range: 9..10, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 11..18, - source: "echo foo > bar.txt", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 11..18, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 18..18, - source: "echo foo > bar.txt", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 18..18, + source: "echo foo > bar.txt", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__lexer__lex_redir_fds.snap b/src/tests/snapshots/fern__tests__lexer__lex_redir_fds.snap index a929793..22cd61b 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_redir_fds.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_redir_fds.snap @@ -3,64 +3,64 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "echo foo 1>&2", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "echo foo 1>&2", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..4, - source: "echo foo 1>&2", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..4, + source: "echo foo 1>&2", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 5..8, - source: "echo foo 1>&2", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 5..8, + source: "echo foo 1>&2", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Redir, - err_span: None, - err: Null, - span: Span { - range: 9..13, - source: "echo foo 1>&2", + ), + Ok( + Tk { + class: Redir, + span: Span { + range: 9..13, + source: "echo foo 1>&2", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 13..13, - source: "echo foo 1>&2", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 13..13, + source: "echo foo 1>&2", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__lexer__lex_simple.snap b/src/tests/snapshots/fern__tests__lexer__lex_simple.snap index e624e65..789426a 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_simple.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_simple.snap @@ -3,64 +3,64 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "echo hello world", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "echo hello world", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..4, - source: "echo hello world", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..4, + source: "echo hello world", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 5..10, - source: "echo hello world", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 5..10, + source: "echo hello world", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 11..16, - source: "echo hello world", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 11..16, + source: "echo hello world", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 16..16, - source: "echo hello world", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 16..16, + source: "echo hello world", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__lexer__lex_with_keywords.snap b/src/tests/snapshots/fern__tests__lexer__lex_with_keywords.snap index cdc351c..529071b 100644 --- a/src/tests/snapshots/fern__tests__lexer__lex_with_keywords.snap +++ b/src/tests/snapshots/fern__tests__lexer__lex_with_keywords.snap @@ -3,124 +3,124 @@ source: src/tests/lexer.rs expression: tokens --- [ - Tk { - class: SOI, - err_span: None, - err: Null, - span: Span { - range: 0..0, - source: "if true; then echo foo; fi", + Ok( + Tk { + class: SOI, + span: Span { + range: 0..0, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 0..2, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), }, - flags: TkFlags( - KEYWORD, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 3..7, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 3..7, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), }, - flags: TkFlags( - IS_CMD, - ), - }, - Tk { - class: Sep, - err_span: None, - err: Null, - span: Span { - range: 7..9, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Sep, + span: Span { + range: 7..9, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 9..13, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 9..13, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), }, - flags: TkFlags( - KEYWORD, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 14..18, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 14..18, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), }, - flags: TkFlags( - IS_CMD | BUILTIN, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 19..22, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 19..22, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Sep, - err_span: None, - err: Null, - span: Span { - range: 22..24, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Sep, + span: Span { + range: 22..24, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, - Tk { - class: Str, - err_span: None, - err: Null, - span: Span { - range: 24..26, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: Str, + span: Span { + range: 24..26, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), }, - flags: TkFlags( - KEYWORD, - ), - }, - Tk { - class: EOI, - err_span: None, - err: Null, - span: Span { - range: 26..26, - source: "if true; then echo foo; fi", + ), + Ok( + Tk { + class: EOI, + span: Span { + range: 26..26, + source: "if true; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), }, - flags: TkFlags( - 0x0, - ), - }, + ), ] diff --git a/src/tests/snapshots/fern__tests__parser__parse_conjunction.snap b/src/tests/snapshots/fern__tests__parser__parse_conjunction.snap index d2fc236..51e261b 100644 --- a/src/tests/snapshots/fern__tests__parser__parse_conjunction.snap +++ b/src/tests/snapshots/fern__tests__parser__parse_conjunction.snap @@ -17,8 +17,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo && echo bar", @@ -29,8 +27,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo && echo bar", @@ -48,8 +44,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo && echo bar", @@ -60,8 +54,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo && echo bar", @@ -82,8 +74,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo && echo bar", @@ -94,8 +84,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo && echo bar", @@ -118,8 +106,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..16, source: "echo foo && echo bar", @@ -130,8 +116,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 17..20, source: "echo foo && echo bar", @@ -149,8 +133,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..16, source: "echo foo && echo bar", @@ -161,8 +143,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 17..20, source: "echo foo && echo bar", @@ -183,8 +163,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..16, source: "echo foo && echo bar", @@ -195,8 +173,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 17..20, source: "echo foo && echo bar", @@ -218,8 +194,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo && echo bar", @@ -230,8 +204,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo && echo bar", @@ -242,8 +214,6 @@ expression: nodes }, Tk { class: And, - err_span: None, - err: Null, span: Span { range: 9..11, source: "echo foo && echo bar", @@ -254,8 +224,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..16, source: "echo foo && echo bar", @@ -266,8 +234,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 17..20, source: "echo foo && echo bar", diff --git a/src/tests/snapshots/fern__tests__parser__parse_conjunction_and_pipeline.snap b/src/tests/snapshots/fern__tests__parser__parse_conjunction_and_pipeline.snap index 64b9485..b99bcc0 100644 --- a/src/tests/snapshots/fern__tests__parser__parse_conjunction_and_pipeline.snap +++ b/src/tests/snapshots/fern__tests__parser__parse_conjunction_and_pipeline.snap @@ -17,8 +17,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -29,8 +27,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -48,8 +44,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -60,8 +54,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -78,8 +70,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -90,8 +80,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..25, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -109,8 +97,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -121,8 +107,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..25, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -143,8 +127,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -155,8 +137,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -167,8 +147,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 9..10, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -179,8 +157,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -191,8 +167,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..25, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -215,8 +189,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 29..33, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -227,8 +199,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 34..37, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -246,8 +216,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 29..33, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -258,8 +226,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 34..37, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -276,8 +242,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -288,8 +252,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 44..54, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -307,8 +269,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -319,8 +279,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 44..54, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -341,8 +299,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 29..33, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -353,8 +309,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 34..37, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -365,8 +319,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 38..39, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -377,8 +329,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -389,8 +339,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 44..54, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -413,8 +361,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 58..62, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -425,8 +371,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 63..66, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -437,8 +381,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 67..70, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -456,8 +398,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 58..62, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -468,8 +408,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 63..66, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -480,8 +418,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 67..70, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -498,8 +434,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 73..76, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -510,8 +444,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 77..82, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -522,8 +454,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 83..90, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -534,8 +464,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 91..95, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -553,8 +481,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 73..76, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -565,8 +491,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 77..82, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -577,8 +501,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 83..90, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -589,8 +511,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 91..95, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -611,8 +531,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 58..62, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -623,8 +541,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 63..66, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -635,8 +551,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 67..70, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -647,8 +561,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 71..72, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -659,8 +571,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 73..76, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -671,8 +581,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 77..82, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -683,8 +591,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 83..90, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -695,8 +601,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 91..95, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -718,8 +622,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -730,8 +632,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -742,8 +642,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 9..10, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -754,8 +652,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -766,8 +662,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..25, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -778,8 +672,6 @@ expression: nodes }, Tk { class: And, - err_span: None, - err: Null, span: Span { range: 26..28, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -790,8 +682,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 29..33, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -802,8 +692,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 34..37, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -814,8 +702,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 38..39, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -826,8 +712,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -838,8 +722,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 44..54, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -850,8 +732,6 @@ expression: nodes }, Tk { class: Or, - err_span: None, - err: Null, span: Span { range: 55..57, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -862,8 +742,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 58..62, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -874,8 +752,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 63..66, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -886,8 +762,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 67..70, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -898,8 +772,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 71..72, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -910,8 +782,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 73..76, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -922,8 +792,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 77..82, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -934,8 +802,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 83..90, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", @@ -946,8 +812,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 91..95, source: "echo foo | sed s/foo/bar/ && echo bar | sed s/bar/foo/ || echo foo bar | sed s/foo bar/bar foo/", diff --git a/src/tests/snapshots/fern__tests__parser__parse_if_multiline.snap b/src/tests/snapshots/fern__tests__parser__parse_if_multiline.snap new file mode 100644 index 0000000..5f8100f --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_if_multiline.snap @@ -0,0 +1,1094 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: IfNode { + cond_nodes: [ + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 4..7, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 4..7, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 7..9, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 4..7, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 7..9, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 15..19, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..23, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 15..19, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..23, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 23..24, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 15..19, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..23, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 23..24, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 29..32, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 29..32, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 32..34, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 29..32, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 32..34, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 40..44, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 45..48, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 40..44, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 45..48, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 48..50, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 40..44, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 45..48, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 48..50, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 55..58, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 55..58, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 58..60, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 55..58, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 58..60, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 66..70, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 71..74, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 66..70, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 71..74, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 74..75, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 66..70, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 71..74, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 74..75, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + ], + else_block: [], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 1..3, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 4..7, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 7..9, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 9..13, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 13..15, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 15..19, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..23, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 23..24, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 24..28, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 29..32, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 32..34, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 34..38, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 38..40, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 40..44, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 45..48, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 48..50, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 50..54, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 55..58, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 58..60, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 60..64, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 64..66, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 66..70, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 71..74, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 74..75, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 75..77, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 1..3, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 4..7, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 7..9, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 9..13, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 13..15, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 15..19, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..23, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 23..24, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 24..28, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 29..32, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 32..34, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 34..38, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 38..40, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 40..44, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 45..48, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 48..50, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 50..54, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 55..58, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 58..60, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 60..64, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 64..66, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 66..70, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 71..74, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 74..75, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 75..77, + source: "\nif foo; then\n\techo bar\nelif bar; then\n\techo foo;\nelif biz; then\n\techo baz\nfi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_if_multiple_elif.snap b/src/tests/snapshots/fern__tests__parser__parse_if_multiple_elif.snap new file mode 100644 index 0000000..a2b0138 --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_if_multiple_elif.snap @@ -0,0 +1,1034 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: IfNode { + cond_nodes: [ + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 53..56, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 53..56, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 56..58, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 53..56, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 56..58, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 63..67, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 68..71, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 63..67, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 68..71, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 71..73, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 63..67, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 68..71, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 71..73, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + ], + else_block: [], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..27, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 33..37, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 48..52, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 53..56, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 56..58, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 58..62, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 63..67, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 68..71, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 71..73, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 73..75, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..27, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 33..37, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 48..52, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 53..56, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 56..58, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 58..62, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 63..67, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 68..71, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 71..73, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 73..75, + source: "if foo; then echo bar; elif bar; then echo foo; elif biz; then echo baz; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_if_simple.snap b/src/tests/snapshots/fern__tests__parser__parse_if_simple.snap new file mode 100644 index 0000000..8927e8c --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_if_simple.snap @@ -0,0 +1,382 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: IfNode { + cond_nodes: [ + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + ], + else_block: [], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..25, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..25, + source: "if foo; then echo bar; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_if_with_elif.snap b/src/tests/snapshots/fern__tests__parser__parse_if_with_elif.snap new file mode 100644 index 0000000..4c623db --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_if_with_elif.snap @@ -0,0 +1,708 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: IfNode { + cond_nodes: [ + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + ], + else_block: [], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..27, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 33..37, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 48..50, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..2, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 3..6, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 6..8, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 8..12, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 13..17, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 18..21, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 21..23, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 23..27, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 28..31, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 31..33, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 33..37, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 38..42, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + IS_CMD | BUILTIN, + ), + }, + Tk { + class: Str, + span: Span { + range: 43..46, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Sep, + span: Span { + range: 46..48, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 48..50, + source: "if foo; then echo bar; elif bar; then echo foo; fi", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_loop_multiline.snap b/src/tests/snapshots/fern__tests__parser__parse_loop_multiline.snap new file mode 100644 index 0000000..dcc1ffd --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_loop_multiline.snap @@ -0,0 +1,350 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: LoopNode { + kind: Until, + cond_node: CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 7..10, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 7..10, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 10..12, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 7..10, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 10..12, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 16..19, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 16..19, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 19..20, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 16..19, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 19..20, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 1..6, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 7..10, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 10..12, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 12..14, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 14..16, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 16..19, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 19..20, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..24, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 1..6, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 7..10, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 10..12, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 12..14, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 14..16, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 16..19, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 19..20, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 20..24, + source: "\nuntil foo; do\n\tbar\ndone", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_loop_simple.snap b/src/tests/snapshots/fern__tests__parser__parse_loop_simple.snap new file mode 100644 index 0000000..54f9fa9 --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_loop_simple.snap @@ -0,0 +1,330 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: LoopNode { + kind: While, + cond_node: CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..5, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 6..9, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 11..13, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 14..17, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 19..23, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..5, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 6..9, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 11..13, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 14..17, + source: "while foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "while foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 19..23, + source: "while foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_loop_until.snap b/src/tests/snapshots/fern__tests__parser__parse_loop_until.snap new file mode 100644 index 0000000..607c9eb --- /dev/null +++ b/src/tests/snapshots/fern__tests__parser__parse_loop_until.snap @@ -0,0 +1,330 @@ +--- +source: src/tests/parser.rs +expression: nodes +--- +[ + Ok( + Node { + class: CmdList { + elements: [ + ConjunctNode { + cmd: Node { + class: LoopNode { + kind: Until, + cond_node: CondNode { + cond: Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 6..9, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + body: [ + Node { + class: Pipeline { + cmds: [ + Node { + class: Command { + assignments: [], + argv: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + pipe_err: false, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 14..17, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + ], + }, + ], + }, + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..5, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 6..9, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 11..13, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 14..17, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 19..23, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + operator: Null, + }, + ], + }, + flags: NdFlags( + 0x0, + ), + redirs: [], + tokens: [ + Tk { + class: Str, + span: Span { + range: 0..5, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 6..9, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 9..11, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 11..13, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + Tk { + class: Str, + span: Span { + range: 14..17, + source: "until foo; do bar; done", + }, + flags: TkFlags( + IS_CMD, + ), + }, + Tk { + class: Sep, + span: Span { + range: 17..19, + source: "until foo; do bar; done", + }, + flags: TkFlags( + 0x0, + ), + }, + Tk { + class: Str, + span: Span { + range: 19..23, + source: "until foo; do bar; done", + }, + flags: TkFlags( + KEYWORD, + ), + }, + ], + }, + ), +] diff --git a/src/tests/snapshots/fern__tests__parser__parse_multiline.snap b/src/tests/snapshots/fern__tests__parser__parse_multiline.snap index 22ffecb..29f2e8e 100644 --- a/src/tests/snapshots/fern__tests__parser__parse_multiline.snap +++ b/src/tests/snapshots/fern__tests__parser__parse_multiline.snap @@ -17,8 +17,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 1..5, source: "\necho hello world\necho foo bar\necho boo biz", @@ -29,8 +27,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 6..11, source: "\necho hello world\necho foo bar\necho boo biz", @@ -41,8 +37,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..17, source: "\necho hello world\necho foo bar\necho boo biz", @@ -60,8 +54,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 1..5, source: "\necho hello world\necho foo bar\necho boo biz", @@ -72,8 +64,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 6..11, source: "\necho hello world\necho foo bar\necho boo biz", @@ -84,8 +74,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..17, source: "\necho hello world\necho foo bar\necho boo biz", @@ -96,8 +84,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 17..18, source: "\necho hello world\necho foo bar\necho boo biz", @@ -118,8 +104,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 1..5, source: "\necho hello world\necho foo bar\necho boo biz", @@ -130,8 +114,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 6..11, source: "\necho hello world\necho foo bar\necho boo biz", @@ -142,8 +124,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..17, source: "\necho hello world\necho foo bar\necho boo biz", @@ -154,8 +134,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 17..18, source: "\necho hello world\necho foo bar\necho boo biz", @@ -177,8 +155,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 1..5, source: "\necho hello world\necho foo bar\necho boo biz", @@ -189,8 +165,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 6..11, source: "\necho hello world\necho foo bar\necho boo biz", @@ -201,8 +175,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 12..17, source: "\necho hello world\necho foo bar\necho boo biz", @@ -213,8 +185,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 17..18, source: "\necho hello world\necho foo bar\necho boo biz", @@ -240,8 +210,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 18..22, source: "\necho hello world\necho foo bar\necho boo biz", @@ -252,8 +220,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 23..26, source: "\necho hello world\necho foo bar\necho boo biz", @@ -264,8 +230,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 27..30, source: "\necho hello world\necho foo bar\necho boo biz", @@ -283,8 +247,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 18..22, source: "\necho hello world\necho foo bar\necho boo biz", @@ -295,8 +257,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 23..26, source: "\necho hello world\necho foo bar\necho boo biz", @@ -307,8 +267,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 27..30, source: "\necho hello world\necho foo bar\necho boo biz", @@ -319,8 +277,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 30..31, source: "\necho hello world\necho foo bar\necho boo biz", @@ -341,8 +297,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 18..22, source: "\necho hello world\necho foo bar\necho boo biz", @@ -353,8 +307,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 23..26, source: "\necho hello world\necho foo bar\necho boo biz", @@ -365,8 +317,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 27..30, source: "\necho hello world\necho foo bar\necho boo biz", @@ -377,8 +327,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 30..31, source: "\necho hello world\necho foo bar\necho boo biz", @@ -400,8 +348,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 18..22, source: "\necho hello world\necho foo bar\necho boo biz", @@ -412,8 +358,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 23..26, source: "\necho hello world\necho foo bar\necho boo biz", @@ -424,8 +368,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 27..30, source: "\necho hello world\necho foo bar\necho boo biz", @@ -436,8 +378,6 @@ expression: nodes }, Tk { class: Sep, - err_span: None, - err: Null, span: Span { range: 30..31, source: "\necho hello world\necho foo bar\necho boo biz", @@ -463,8 +403,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 31..35, source: "\necho hello world\necho foo bar\necho boo biz", @@ -475,8 +413,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 36..39, source: "\necho hello world\necho foo bar\necho boo biz", @@ -487,8 +423,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "\necho hello world\necho foo bar\necho boo biz", @@ -506,8 +440,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 31..35, source: "\necho hello world\necho foo bar\necho boo biz", @@ -518,8 +450,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 36..39, source: "\necho hello world\necho foo bar\necho boo biz", @@ -530,8 +460,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "\necho hello world\necho foo bar\necho boo biz", @@ -552,8 +480,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 31..35, source: "\necho hello world\necho foo bar\necho boo biz", @@ -564,8 +490,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 36..39, source: "\necho hello world\necho foo bar\necho boo biz", @@ -576,8 +500,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "\necho hello world\necho foo bar\necho boo biz", @@ -599,8 +521,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 31..35, source: "\necho hello world\necho foo bar\necho boo biz", @@ -611,8 +531,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 36..39, source: "\necho hello world\necho foo bar\necho boo biz", @@ -623,8 +541,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 40..43, source: "\necho hello world\necho foo bar\necho boo biz", diff --git a/src/tests/snapshots/fern__tests__parser__parse_pipeline.snap b/src/tests/snapshots/fern__tests__parser__parse_pipeline.snap index 0974b8f..a0916ae 100644 --- a/src/tests/snapshots/fern__tests__parser__parse_pipeline.snap +++ b/src/tests/snapshots/fern__tests__parser__parse_pipeline.snap @@ -17,8 +17,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar", @@ -29,8 +27,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar", @@ -48,8 +44,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar", @@ -60,8 +54,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar", @@ -78,8 +70,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar", @@ -90,8 +80,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..24, source: "echo foo | sed s/foo/bar", @@ -109,8 +97,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar", @@ -121,8 +107,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..24, source: "echo foo | sed s/foo/bar", @@ -143,8 +127,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar", @@ -155,8 +137,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar", @@ -167,8 +147,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 9..10, source: "echo foo | sed s/foo/bar", @@ -179,8 +157,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar", @@ -191,8 +167,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..24, source: "echo foo | sed s/foo/bar", @@ -214,8 +188,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo foo | sed s/foo/bar", @@ -226,8 +198,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..8, source: "echo foo | sed s/foo/bar", @@ -238,8 +208,6 @@ expression: nodes }, Tk { class: Pipe, - err_span: None, - err: Null, span: Span { range: 9..10, source: "echo foo | sed s/foo/bar", @@ -250,8 +218,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..14, source: "echo foo | sed s/foo/bar", @@ -262,8 +228,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 15..24, source: "echo foo | sed s/foo/bar", diff --git a/src/tests/snapshots/fern__tests__parser__parse_simple.snap b/src/tests/snapshots/fern__tests__parser__parse_simple.snap index 8f49b08..30b1c39 100644 --- a/src/tests/snapshots/fern__tests__parser__parse_simple.snap +++ b/src/tests/snapshots/fern__tests__parser__parse_simple.snap @@ -17,8 +17,6 @@ expression: nodes argv: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo hello world", @@ -29,8 +27,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..10, source: "echo hello world", @@ -41,8 +37,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..16, source: "echo hello world", @@ -60,8 +54,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo hello world", @@ -72,8 +64,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..10, source: "echo hello world", @@ -84,8 +74,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..16, source: "echo hello world", @@ -106,8 +94,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo hello world", @@ -118,8 +104,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..10, source: "echo hello world", @@ -130,8 +114,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..16, source: "echo hello world", @@ -153,8 +135,6 @@ expression: nodes tokens: [ Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 0..4, source: "echo hello world", @@ -165,8 +145,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 5..10, source: "echo hello world", @@ -177,8 +155,6 @@ expression: nodes }, Tk { class: Str, - err_span: None, - err: Null, span: Span { range: 11..16, source: "echo hello world",