From 65dd67096e6771a3bdf5b9b4a4cd638777a0ae89 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 19 Jan 2022 18:46:49 -0800 Subject: [PATCH] Touch up print_string --- compiler/rustc_ast_pretty/src/pp.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/compiler/rustc_ast_pretty/src/pp.rs b/compiler/rustc_ast_pretty/src/pp.rs index dadfac06847..11114b53220 100644 --- a/compiler/rustc_ast_pretty/src/pp.rs +++ b/compiler/rustc_ast_pretty/src/pp.rs @@ -137,6 +137,7 @@ use ring::RingBuffer; use std::borrow::Cow; use std::collections::VecDeque; +use std::iter; /// How to break. Described in more detail in the module docs. #[derive(Clone, Copy, PartialEq)] @@ -425,10 +426,6 @@ fn print_break(&mut self, token: BreakToken, size: isize) { } fn print_string(&mut self, string: &str) { - let len = string.len() as isize; - // assert!(len <= space); - self.space -= len; - // Write the pending indent. A more concise way of doing this would be: // // write!(self.out, "{: >n$}", "", n = self.pending_indentation as usize)?; @@ -436,9 +433,11 @@ fn print_string(&mut self, string: &str) { // But that is significantly slower. This code is sufficiently hot, and indents can get // sufficiently large, that the difference is significant on some workloads. self.out.reserve(self.pending_indentation as usize); - self.out.extend(std::iter::repeat(' ').take(self.pending_indentation as usize)); + self.out.extend(iter::repeat(' ').take(self.pending_indentation as usize)); self.pending_indentation = 0; + self.out.push_str(string); + self.space -= string.len() as isize; } // Convenience functions to talk to the printer.