Skip to content

Commit 50f1437

Browse files
authored
parser: fix dead_code warning in test parse_text fn (#490)
``` warning: function `parse_text` is never used --> crates/squawk_parser/tests/utils.rs:5:15 | 5 | pub(crate) fn parse_text(text: &str) -> (String, bool) { | ^^^^^^^^^^ | = note: `#[warn(dead_code)]` on by default warning: `squawk_parser` (test "utils") generated 1 warning Finished `test` profile [unoptimized] target(s) in 1.55s Running unittests src/main.rs (target/debug/deps/squawk-42ae9071a6dd104a) ```
1 parent 2b5711e commit 50f1437

File tree

2 files changed

+61
-3
lines changed

2 files changed

+61
-3
lines changed

crates/squawk_parser/tests/tests.rs

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,66 @@
22
use camino::Utf8Path;
33
use dir_test::{dir_test, Fixture};
44
use insta::{assert_snapshot, with_settings};
5+
use squawk_parser::{parse, LexedStr};
6+
use std::fmt::Write;
57

6-
mod utils;
8+
fn parse_text(text: &str) -> (String, bool) {
9+
let lexed = LexedStr::new(text);
10+
let input = lexed.to_input();
11+
let output = parse(&input);
12+
13+
let mut buf = String::new();
14+
let mut errors = Vec::new();
15+
let mut indent = String::new();
16+
let mut depth = 0;
17+
let mut len = 0;
18+
lexed.intersperse_trivia(&output, &mut |step| match step {
19+
squawk_parser::StrStep::Token { kind, text } => {
20+
assert!(depth > 0);
21+
len += text.len();
22+
writeln!(buf, "{indent}{kind:?} {text:?}").unwrap();
23+
}
24+
squawk_parser::StrStep::Enter { kind } => {
25+
assert!(depth > 0 || len == 0);
26+
depth += 1;
27+
writeln!(buf, "{indent}{kind:?}").unwrap();
28+
indent.push_str(" ");
29+
}
30+
squawk_parser::StrStep::Exit => {
31+
assert!(depth > 0);
32+
depth -= 1;
33+
indent.pop();
34+
indent.pop();
35+
}
36+
squawk_parser::StrStep::Error { msg, pos } => {
37+
assert!(depth > 0);
38+
let err = "ERROR";
39+
errors.push(format!("{err}@{pos}: {msg}\n"));
40+
}
41+
});
42+
assert_eq!(
43+
len,
44+
text.len(),
45+
"didn't parse all text.\nParsed:\n{}\n\nAll:\n{}\n",
46+
&text[..len],
47+
text
48+
);
49+
50+
for (token, msg) in lexed.errors() {
51+
let pos = lexed.text_start(token);
52+
let err = "ERROR";
53+
errors.push(format!("{err}@{pos}: {msg}\n"));
54+
}
55+
56+
let has_errors = !errors.is_empty();
57+
if has_errors {
58+
buf.push_str("---\n");
59+
for e in errors {
60+
buf.push_str(&e);
61+
}
62+
}
63+
(buf, has_errors)
64+
}
765

866
#[dir_test(
967
dir: "$CARGO_MANIFEST_DIR/tests/data",
@@ -20,7 +78,7 @@ fn parser(fixture: Fixture<&str>) {
2078

2179
let parent_dir = input_file.parent().and_then(|x| x.file_name()).unwrap();
2280

23-
let (parsed, has_errors) = utils::parse_text(content);
81+
let (parsed, has_errors) = parse_text(content);
2482

2583
with_settings!({
2684
omit_expression => true,

crates/squawk_parser/tests/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::fmt::Write;
22

33
use squawk_parser::{parse, LexedStr};
44

5-
pub(crate) fn parse_text(text: &str) -> (String, bool) {
5+
pub fn parse_text(text: &str) -> (String, bool) {
66
let lexed = LexedStr::new(text);
77
let input = lexed.to_input();
88
let output = parse(&input);

0 commit comments

Comments
 (0)