about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/rust-demangler/src/lib.rs5
-rw-r--r--src/tools/rust-demangler/src/main.rs3
-rw-r--r--src/tools/rust-demangler/tests/lib.rs8
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<Regex>) -> Vec<String> {
-    let lines = buffer.lines();
+pub fn demangle_lines(lines: Lines<'_>, strip_crate_disambiguators: Option<Regex>) -> Vec<String> {
     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<Regex>) -
         }
         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());
 }