From c2a8bfe0ab54fa2a2682e05e59bc96d9363760f0 Mon Sep 17 00:00:00 2001 From: Rich Kadel Date: Mon, 29 Mar 2021 08:28:52 -0700 Subject: [PATCH] Changed function signature to keep buffer handling out of lib --- src/tools/rust-demangler/src/lib.rs | 5 ++--- src/tools/rust-demangler/src/main.rs | 3 ++- src/tools/rust-demangler/tests/lib.rs | 8 +++----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/tools/rust-demangler/src/lib.rs b/src/tools/rust-demangler/src/lib.rs index 4d2911ee7f8..1d972229d95 100644 --- a/src/tools/rust-demangler/src/lib.rs +++ b/src/tools/rust-demangler/src/lib.rs @@ -1,5 +1,6 @@ use regex::Regex; use rustc_demangle::demangle; +use std::str::Lines; const REPLACE_COLONS: &str = "::"; @@ -7,8 +8,7 @@ pub fn create_disambiguator_re() -> Regex { Regex::new(r"\[[a-f0-9]{5,16}\]::").unwrap() } -pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option) -> Vec { - let lines = buffer.lines(); +pub fn demangle_lines(lines: Lines<'_>, strip_crate_disambiguators: Option) -> Vec { let mut demangled_lines = Vec::new(); for mangled in lines { let mut demangled = demangle(mangled).to_string(); @@ -17,6 +17,5 @@ pub fn demangle_lines(buffer: &str, strip_crate_disambiguators: Option) - } demangled_lines.push(demangled); } - demangled_lines.push("".to_string()); demangled_lines } diff --git a/src/tools/rust-demangler/src/main.rs b/src/tools/rust-demangler/src/main.rs index a87369d7baa..1b5ef5d2442 100644 --- a/src/tools/rust-demangler/src/main.rs +++ b/src/tools/rust-demangler/src/main.rs @@ -90,7 +90,8 @@ fn main() -> io::Result<()> { let mut buffer = String::new(); io::stdin().read_to_string(&mut buffer)?; - let demangled_lines = demangle_lines(&buffer, strip_crate_disambiguators); + let mut demangled_lines = demangle_lines(buffer.lines(), strip_crate_disambiguators); + demangled_lines.push("".to_string()); // ensure a trailing newline io::stdout().write_all(demangled_lines.join("\n").as_bytes())?; Ok(()) } diff --git a/src/tools/rust-demangler/tests/lib.rs b/src/tools/rust-demangler/tests/lib.rs index 8a1647601e4..09752fd7212 100644 --- a/src/tools/rust-demangler/tests/lib.rs +++ b/src/tools/rust-demangler/tests/lib.rs @@ -1,6 +1,6 @@ use rust_demangler::*; -const MANGLED_LINES: &str = r" +const MANGLED_INPUT: &str = r" _RNvC6_123foo3bar _RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y _RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_ @@ -24,7 +24,7 @@ _RNvNtNtNtNtCs92dm3009vxr_4rand4rngs7adapter9reseeding4fork23FORK_HANDLER_REGIST #[test] fn test_demangle_lines() { - let demangled_lines = demangle_lines(MANGLED_LINES, None); + let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), None); let mut iter = demangled_lines.iter(); assert_eq!("", iter.next().unwrap()); assert_eq!("123foo[0]::bar", iter.next().unwrap()); @@ -55,13 +55,12 @@ fn test_demangle_lines() { "rand[693ea8e72247470f]::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0", iter.next().unwrap() ); - assert_eq!("", iter.next().unwrap()); assert!(iter.next().is_none()); } #[test] fn test_demangle_lines_no_crate_disambiguators() { - let demangled_lines = demangle_lines(MANGLED_LINES, Some(create_disambiguator_re())); + let demangled_lines = demangle_lines(MANGLED_INPUT.lines(), Some(create_disambiguator_re())); let mut iter = demangled_lines.iter(); assert_eq!("", iter.next().unwrap()); assert_eq!("123foo[0]::bar", iter.next().unwrap()); @@ -92,6 +91,5 @@ fn test_demangle_lines_no_crate_disambiguators() { "rand::rngs::adapter::reseeding::fork::FORK_HANDLER_REGISTERED.0.0", iter.next().unwrap() ); - assert_eq!("", iter.next().unwrap()); assert!(iter.next().is_none()); }