About to rework lexer and parser return types
This commit is contained in:
@@ -157,22 +157,23 @@ bitflags! {
|
||||
#[derive(Debug)]
|
||||
pub struct LexFlags: u32 {
|
||||
/// Return comment tokens
|
||||
const LEX_COMMENTS = 0b00000001;
|
||||
const LEX_COMMENTS = 0b000000001;
|
||||
/// Allow unfinished input
|
||||
const LEX_UNFINISHED = 0b00000010;
|
||||
const LEX_UNFINISHED = 0b000000010;
|
||||
/// The next string-type token is a command name
|
||||
const NEXT_IS_CMD = 0b00000100;
|
||||
const NEXT_IS_CMD = 0b000000100;
|
||||
/// We are in a quotation, so quoting rules apply
|
||||
const IN_QUOTE = 0b00001000;
|
||||
const IN_QUOTE = 0b000001000;
|
||||
/// Only lex strings; used in expansions
|
||||
const RAW = 0b00010000;
|
||||
const RAW = 0b000010000;
|
||||
/// The lexer has not produced any tokens yet
|
||||
const FRESH = 0b00010000;
|
||||
const FRESH = 0b000010000;
|
||||
/// The lexer has no more tokens to produce
|
||||
const STALE = 0b00100000;
|
||||
const STALE = 0b000100000;
|
||||
/// The lexer's cursor is in a brace group
|
||||
const IN_BRC_GRP = 0b01000000;
|
||||
const EXPECTING_IN = 0b10000000;
|
||||
const IN_BRC_GRP = 0b001000000;
|
||||
const EXPECTING_IN = 0b010000000;
|
||||
const IN_CASE = 0b100000000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,7 +194,6 @@ impl LexStream {
|
||||
/// `LexStream.slice(1..)`
|
||||
///
|
||||
pub fn slice<R: RangeBounds<usize>>(&self, range: R) -> Option<&str> {
|
||||
// Sketchy downcast
|
||||
let start = match range.start_bound() {
|
||||
Bound::Included(&start) => start,
|
||||
Bound::Excluded(&start) => start + 1,
|
||||
@@ -314,12 +314,14 @@ impl LexStream {
|
||||
let mut pos = self.cursor;
|
||||
let mut chars = slice.chars().peekable();
|
||||
|
||||
if let Some(count) = case_pat_lookahead(chars.clone()) {
|
||||
pos += count;
|
||||
let casepat_tk = self.get_token(self.cursor..pos, TkRule::CasePattern);
|
||||
self.cursor = pos;
|
||||
self.set_next_is_cmd(true);
|
||||
return Ok(casepat_tk)
|
||||
if self.flags.contains(LexFlags::IN_CASE) {
|
||||
if let Some(count) = case_pat_lookahead(chars.clone()) {
|
||||
pos += count;
|
||||
let casepat_tk = self.get_token(self.cursor..pos, TkRule::CasePattern);
|
||||
self.cursor = pos;
|
||||
self.set_next_is_cmd(true);
|
||||
return Ok(casepat_tk)
|
||||
}
|
||||
}
|
||||
|
||||
while let Some(ch) = chars.next() {
|
||||
@@ -532,6 +534,7 @@ impl LexStream {
|
||||
"case" | "select" | "for" => {
|
||||
new_tk.mark(TkFlags::KEYWORD);
|
||||
self.flags |= LexFlags::EXPECTING_IN;
|
||||
self.flags |= LexFlags::IN_CASE;
|
||||
self.set_next_is_cmd(false);
|
||||
}
|
||||
"in" if self.flags.contains(LexFlags::EXPECTING_IN) => {
|
||||
@@ -539,6 +542,9 @@ impl LexStream {
|
||||
self.flags &= !LexFlags::EXPECTING_IN;
|
||||
}
|
||||
_ if is_keyword(text) => {
|
||||
if text == "esac" && self.flags.contains(LexFlags::IN_CASE) {
|
||||
self.flags &= !LexFlags::IN_CASE;
|
||||
}
|
||||
new_tk.mark(TkFlags::KEYWORD);
|
||||
}
|
||||
_ if is_assignment(text) => {
|
||||
|
||||
@@ -592,14 +592,14 @@ impl ParseStream {
|
||||
node_tks.push(self.next_tk().unwrap());
|
||||
|
||||
let pat_err = parse_err_full(
|
||||
"Expected a pattern after 'case' keyword", &node_tks.get_span().unwrap()
|
||||
)
|
||||
.with_note(
|
||||
Note::new("Patterns can be raw text, or anything that gets substituted with raw text")
|
||||
.with_sub_notes(vec![
|
||||
"This includes variables like '$foo' or command substitutions like '$(echo foo)'"
|
||||
])
|
||||
);
|
||||
"Expected a pattern after 'case' keyword", &node_tks.get_span().unwrap()
|
||||
)
|
||||
.with_note(
|
||||
Note::new("Patterns can be raw text, or anything that gets substituted with raw text")
|
||||
.with_sub_notes(vec![
|
||||
"This includes variables like '$foo' or command substitutions like '$(echo foo)'"
|
||||
])
|
||||
);
|
||||
|
||||
let Some(pat_tk) = self.next_tk() else {
|
||||
self.panic_mode(&mut node_tks);
|
||||
@@ -1006,6 +1006,9 @@ impl ParseStream {
|
||||
let mut assignments = vec![];
|
||||
|
||||
while let Some(prefix_tk) = tk_iter.next() {
|
||||
if let TkRule::CasePattern = prefix_tk.class {
|
||||
return Err(parse_err_full("Found case pattern in command", &prefix_tk.span))
|
||||
}
|
||||
let is_cmd = prefix_tk.flags.contains(TkFlags::IS_CMD);
|
||||
let is_assignment = prefix_tk.flags.contains(TkFlags::ASSIGN);
|
||||
let is_keyword = prefix_tk.flags.contains(TkFlags::KEYWORD);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use std::{env, os::unix::fs::PermissionsExt, path::{Path, PathBuf}, sync::Arc};
|
||||
use crate::prelude::*;
|
||||
use crate::{builtin::BUILTINS, prelude::*};
|
||||
|
||||
use rustyline::highlight::Highlighter;
|
||||
use crate::{libsh::term::{Style, StyleSet, Styled}, parse::lex::{LexFlags, LexStream, Tk, TkFlags, TkRule}, state::read_logic};
|
||||
@@ -70,7 +70,9 @@ impl FernHighlighter {
|
||||
l.get_func(raw).is_some() || l.get_alias(raw).is_some()
|
||||
});
|
||||
|
||||
if is_alias_or_function || is_in_path {
|
||||
let is_builtin = BUILTINS.contains(&raw);
|
||||
|
||||
if is_alias_or_function || is_in_path || is_builtin {
|
||||
raw.styled(Style::Green)
|
||||
} else {
|
||||
raw.styled(Style::Bold | Style::Red)
|
||||
|
||||
@@ -1,187 +0,0 @@
|
||||
---
|
||||
source: src/tests/lexer.rs
|
||||
assertion_line: 51
|
||||
expression: tokens
|
||||
---
|
||||
[
|
||||
Ok(
|
||||
Tk {
|
||||
class: SOI,
|
||||
span: Span {
|
||||
range: 0..0,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..4,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..9,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 10..12,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..24,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 24..28,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 29..32,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 35..39,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 40..43,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 43..46,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..50,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
),
|
||||
Ok(
|
||||
Tk {
|
||||
class: EOI,
|
||||
span: Span {
|
||||
range: 50..50,
|
||||
source: "case $foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -1,596 +0,0 @@
|
||||
---
|
||||
source: src/tests/parser.rs
|
||||
assertion_line: 166
|
||||
expression: nodes
|
||||
---
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
class: CaseNode {
|
||||
pattern: Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
case_blocks: [
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..27,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..27,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 27..31,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 35..41,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 35..41,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 41..45,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..49,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..49,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 49..54,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..49,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 49..54,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..4,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 9..11,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 11..13,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..27,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 27..31,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 35..41,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 41..45,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..49,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 49..54,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 54..58,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
operator: Null,
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..4,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 9..11,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 11..13,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 13..17,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 18..21,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 21..27,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 27..31,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 32..35,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 35..41,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 41..45,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 46..49,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 49..54,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 54..58,
|
||||
source: "case foo in\n\tfoo) bar\n\t;;\n\tbar) foo\n\t;;\n\tbiz) baz\n\t;;\nesac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,576 +0,0 @@
|
||||
---
|
||||
source: src/tests/parser.rs
|
||||
assertion_line: 149
|
||||
expression: nodes
|
||||
---
|
||||
[
|
||||
Ok(
|
||||
Node {
|
||||
class: Conjunction {
|
||||
elements: [
|
||||
ConjunctNode {
|
||||
cmd: Node {
|
||||
class: CaseNode {
|
||||
pattern: Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
case_blocks: [
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 12..16,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 17..20,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 17..20,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 20..23,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 17..20,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 20..23,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 23..27,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..31,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..31,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 31..34,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..31,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 31..34,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
CaseNode {
|
||||
pattern: Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 34..38,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
body: [
|
||||
Node {
|
||||
class: Pipeline {
|
||||
cmds: [
|
||||
Node {
|
||||
class: Command {
|
||||
assignments: [],
|
||||
argv: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 39..42,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 39..42,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 42..45,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
pipe_err: false,
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 39..42,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 42..45,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..4,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 9..11,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 12..16,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 17..20,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 20..23,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 23..27,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..31,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 31..34,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 34..38,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 39..42,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 42..45,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 45..49,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
operator: Null,
|
||||
},
|
||||
],
|
||||
},
|
||||
flags: NdFlags(
|
||||
0x0,
|
||||
),
|
||||
redirs: [],
|
||||
tokens: [
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 0..4,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 5..8,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 9..11,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 12..16,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 17..20,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 20..23,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 23..27,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 28..31,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 31..34,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: CasePattern,
|
||||
span: Span {
|
||||
range: 34..38,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 39..42,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
IS_CMD,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Sep,
|
||||
span: Span {
|
||||
range: 42..45,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
0x0,
|
||||
),
|
||||
},
|
||||
Tk {
|
||||
class: Str,
|
||||
span: Span {
|
||||
range: 45..49,
|
||||
source: "case foo in foo) bar;; bar) foo;; biz) baz;; esac",
|
||||
},
|
||||
flags: TkFlags(
|
||||
KEYWORD,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user