Skip to content

Commit

Permalink
internal: Use default Debug impl for TokenVec
Browse files Browse the repository at this point in the history
  • Loading branch information
max-sixty committed Apr 22, 2024
1 parent 94351d7 commit 3dd5434
Show file tree
Hide file tree
Showing 24 changed files with 1,715 additions and 1,650 deletions.
109 changes: 64 additions & 45 deletions prqlc/prqlc-parser/src/lexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -574,17 +574,18 @@ impl std::fmt::Debug for Token {
}
}

#[derive(Serialize, Deserialize, Debug)]
pub struct TokenVec(pub Vec<Token>);

impl std::fmt::Debug for TokenVec {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
writeln!(f, "TokenVec (")?;
for token in self.0.iter() {
writeln!(f, " {:?},", token)?;
}
write!(f, ")")
}
}
// impl std::fmt::Debug for TokenVec {
// fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
// writeln!(f, "TokenVec (")?;
// for token in self.0.iter() {
// writeln!(f, " {:?},", token)?;
// }
// write!(f, ")")
// }
// }

#[cfg(test)]
mod test {
Expand All @@ -597,11 +598,13 @@ mod test {
assert_debug_snapshot!(TokenVec(lexer().parse(r"5 +
\ 3 "
).unwrap()), @r###"
TokenVec (
0..1: Literal(Integer(5)),
2..3: Control('+'),
3..9: LineWrap([]),
10..11: Literal(Integer(3)),
TokenVec(
[
0..1: Literal(Integer(5)),
2..3: Control('+'),
3..9: LineWrap([]),
10..11: Literal(Integer(3)),
],
)
"###);

Expand All @@ -611,11 +614,13 @@ mod test {
# comment with whitespace
\ 3 "
).unwrap()), @r###"
TokenVec (
0..1: Literal(Integer(5)),
2..3: Control('+'),
3..46: LineWrap([Comment(" comment"), Comment(" comment with whitespace")]),
47..48: Literal(Integer(3)),
TokenVec(
[
0..1: Literal(Integer(5)),
2..3: Control('+'),
3..46: LineWrap([Comment(" comment"), Comment(" comment with whitespace")]),
47..48: Literal(Integer(3)),
],
)
"###);

Expand Down Expand Up @@ -658,21 +663,25 @@ mod test {
#[test]
fn debug_display() {
assert_debug_snapshot!(TokenVec(lexer().parse("5 + 3").unwrap()), @r###"
TokenVec (
0..1: Literal(Integer(5)),
2..3: Control('+'),
4..5: Literal(Integer(3)),
)
"###);
TokenVec(
[
0..1: Literal(Integer(5)),
2..3: Control('+'),
4..5: Literal(Integer(3)),
],
)
"###);
}

#[test]
fn comment() {
assert_debug_snapshot!(TokenVec(lexer().parse("# comment\n# second line").unwrap()), @r###"
TokenVec (
0..9: Comment(" comment"),
9..10: NewLine,
10..23: Comment(" second line"),
TokenVec(
[
0..9: Comment(" comment"),
9..10: NewLine,
10..23: Comment(" second line"),
],
)
"###);

Expand All @@ -684,8 +693,10 @@ mod test {
#[test]
fn doc_comment() {
assert_debug_snapshot!(TokenVec(lexer().parse("#! docs").unwrap()), @r###"
TokenVec (
0..7: DocComment(" docs"),
TokenVec(
[
0..7: DocComment(" docs"),
],
)
"###);
}
Expand Down Expand Up @@ -728,32 +739,40 @@ mod test {
#[test]
fn range() {
assert_debug_snapshot!(TokenVec(lexer().parse("1..2").unwrap()), @r###"
TokenVec (
0..1: Literal(Integer(1)),
1..3: Range { bind_left: true, bind_right: true },
3..4: Literal(Integer(2)),
TokenVec(
[
0..1: Literal(Integer(1)),
1..3: Range { bind_left: true, bind_right: true },
3..4: Literal(Integer(2)),
],
)
"###);

assert_debug_snapshot!(TokenVec(lexer().parse("..2").unwrap()), @r###"
TokenVec (
0..2: Range { bind_left: true, bind_right: true },
2..3: Literal(Integer(2)),
TokenVec(
[
0..2: Range { bind_left: true, bind_right: true },
2..3: Literal(Integer(2)),
],
)
"###);

assert_debug_snapshot!(TokenVec(lexer().parse("1..").unwrap()), @r###"
TokenVec (
0..1: Literal(Integer(1)),
1..3: Range { bind_left: true, bind_right: true },
TokenVec(
[
0..1: Literal(Integer(1)),
1..3: Range { bind_left: true, bind_right: true },
],
)
"###);

assert_debug_snapshot!(TokenVec(lexer().parse("in ..5").unwrap()), @r###"
TokenVec (
0..2: Ident("in"),
2..5: Range { bind_left: false, bind_right: true },
5..6: Literal(Integer(5)),
TokenVec(
[
0..2: Ident("in"),
2..5: Range { bind_left: false, bind_right: true },
5..6: Literal(Integer(5)),
],
)
"###);
}
Expand Down
10 changes: 6 additions & 4 deletions prqlc/prqlc-parser/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,12 @@ fn test_lex_source() {

assert_debug_snapshot!(lex_source("5 + 3"), @r###"
Ok(
TokenVec (
0..1: Literal(Integer(5)),
2..3: Control('+'),
4..5: Literal(Integer(3)),
TokenVec(
[
0..1: Literal(Integer(5)),
2..3: Control('+'),
4..5: Literal(Integer(3)),
],
),
)
"###);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,45 @@ source: prqlc/prqlc/tests/integration/queries.rs
expression: tokens
input_file: prqlc/prqlc/tests/integration/queries/aggregation.prql
---
TokenVec (
0..12: Comment(" mssql:skip"),
12..13: NewLine,
13..25: Comment(" mysql:skip"),
25..26: NewLine,
26..43: Comment(" clickhouse:skip"),
43..44: NewLine,
44..101: Comment(" glaredb:skip (the string_agg function is not supported)"),
101..102: NewLine,
102..106: Ident("from"),
107..113: Ident("tracks"),
113..114: NewLine,
114..120: Ident("filter"),
121..129: Ident("genre_id"),
130..132: Eq,
133..136: Literal(Integer(100)),
136..137: NewLine,
137..143: Ident("derive"),
144..154: Ident("empty_name"),
155..156: Control('='),
157..161: Ident("name"),
162..164: Eq,
165..167: Literal(String("")),
167..168: NewLine,
168..177: Ident("aggregate"),
178..179: Control('{'),
179..182: Ident("sum"),
183..191: Ident("track_id"),
191..192: Control(','),
193..205: Ident("concat_array"),
206..210: Ident("name"),
210..211: Control(','),
212..215: Ident("all"),
216..226: Ident("empty_name"),
226..227: Control(','),
228..231: Ident("any"),
232..242: Ident("empty_name"),
242..243: Control('}'),
243..244: NewLine,
TokenVec(
[
0..12: Comment(" mssql:skip"),
12..13: NewLine,
13..25: Comment(" mysql:skip"),
25..26: NewLine,
26..43: Comment(" clickhouse:skip"),
43..44: NewLine,
44..101: Comment(" glaredb:skip (the string_agg function is not supported)"),
101..102: NewLine,
102..106: Ident("from"),
107..113: Ident("tracks"),
113..114: NewLine,
114..120: Ident("filter"),
121..129: Ident("genre_id"),
130..132: Eq,
133..136: Literal(Integer(100)),
136..137: NewLine,
137..143: Ident("derive"),
144..154: Ident("empty_name"),
155..156: Control('='),
157..161: Ident("name"),
162..164: Eq,
165..167: Literal(String("")),
167..168: NewLine,
168..177: Ident("aggregate"),
178..179: Control('{'),
179..182: Ident("sum"),
183..191: Ident("track_id"),
191..192: Control(','),
193..205: Ident("concat_array"),
206..210: Ident("name"),
210..211: Control(','),
212..215: Ident("all"),
216..226: Ident("empty_name"),
226..227: Control(','),
228..231: Ident("any"),
232..242: Ident("empty_name"),
242..243: Control('}'),
243..244: NewLine,
],
)
Loading

0 comments on commit 3dd5434

Please sign in to comment.