about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRich Kadel <richkadel@google.com>2021-03-29 08:28:52 -0700
committerRich Kadel <richkadel@google.com>2021-04-03 11:42:54 -0700
commitc2a8bfe0ab54fa2a2682e05e59bc96d9363760f0 (patch)
tree333baf9942aa29a8774bdb99ca58749a2d5928f5
parent23325caf43d16e8caf77f8d4855ff568b6d143be (diff)
downloadrust-c2a8bfe0ab54fa2a2682e05e59bc96d9363760f0.tar.gz
rust-c2a8bfe0ab54fa2a2682e05e59bc96d9363760f0.zip
Changed function signature to keep buffer handling out of lib
-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());
 }