Skip to content

Commit c2a8bfe

Browse files
committed
Changed function signature to keep buffer handling out of lib
1 parent 23325ca commit c2a8bfe

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

src/tools/rust-demangler/src/lib.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
use regex::Regex;
22
use rustc_demangle::demangle;
3+
use std::str::Lines;
34

45
const REPLACE_COLONS: &str = "::";
56

67
pub fn create_disambiguator_re() -> Regex {
78
Regex::new(r"\[[a-f0-9]{5,16}\]::").unwrap()
89
}
910

10-
pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
11-
let lines = buffer.lines();
11+
pub fn demangle_lines(lines: Lines<'_>, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
1212
let mut demangled_lines = Vec::new();
1313
for mangled in lines {
1414
let mut demangled = demangle(mangled).to_string();
@@ -17,6 +17,5 @@ pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option<Regex>) -
1717
}
1818
demangled_lines.push(demangled);
1919
}
20-
demangled_lines.push("".to_string());
2120
demangled_lines
2221
}

src/tools/rust-demangler/src/main.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ fn main() -> io::Result<()> {
9090

9191
let mut buffer = String::new();
9292
io::stdin().read_to_string(&mut buffer)?;
93-
let demangled_lines = demangle_lines(&buffer, strip_crate_disambiguators);
93+
let mut demangled_lines = demangle_lines(buffer.lines(), strip_crate_disambiguators);
94+
demangled_lines.push("".to_string()); // ensure a trailing newline
9495
io::stdout().write_all(demangled_lines.join("\n").as_bytes())?;
9596
Ok(())
9697
}

src/tools/rust-demangler/tests/lib.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use rust_demangler::*;
22

3-
const MANGLED_LINES: &str = r"
3+
const MANGLED_INPUT: &str = r"
44
_RNvC6_123foo3bar
55
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
66
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
@@ -24,7 +24,7 @@ _RNvNtNtNtNtCs92dm3009vxr_4rand4rngs7adapter9reseeding4fork23FORK_HANDLER_REGIST
2424

2525
#[test]
2626
fn test_demangle_lines() {
27-
let demangled_lines = demangle_lines(MANGLED_LINES, None);
27+
let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), None);
2828
let mut iter = demangled_lines.iter();
2929
assert_eq!("", iter.next().unwrap());
3030
assert_eq!("123foo[0]::bar", iter.next().unwrap());
@@ -55,13 +55,12 @@ fn test_demangle_lines() {
5555
"rand[693ea8e72247470f]::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0",
5656
iter.next().unwrap()
5757
);
58-
assert_eq!("", iter.next().unwrap());
5958
assert!(iter.next().is_none());
6059
}
6160

6261
#[test]
6362
fn test_demangle_lines_no_crate_disambiguators() {
64-
let demangled_lines = demangle_lines(MANGLED_LINES, Some(create_disambiguator_re()));
63+
let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), Some(create_disambiguator_re()));
6564
let mut iter = demangled_lines.iter();
6665
assert_eq!("", iter.next().unwrap());
6766
assert_eq!("123foo[0]::bar", iter.next().unwrap());
@@ -92,6 +91,5 @@ fn test_demangle_lines_no_crate_disambiguators() {
9291
"rand::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0",
9392
iter.next().unwrap()
9493
);
95-
assert_eq!("", iter.next().unwrap());
9694
assert!(iter.next().is_none());
9795
}

0 commit comments

Comments
 (0)