From 438f6b04c6fe2daf7f6000294edd50c26f6da619 Mon Sep 17 00:00:00 2001 From: John Kåre Alsaker Date: Sat, 16 Mar 2019 08:50:19 +0100 Subject: Fix lifetime on LocalInternedString::get function --- src/libsyntax/parse/parser.rs | 8 +++++--- src/libsyntax/print/pp.rs | 11 +++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index ae8e57d54de..af069b527b0 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2165,9 +2165,11 @@ impl<'a> Parser<'a> { suffix, ) = self.token { let suffix = suffix.and_then(|s| { - let s = s.as_str().get(); - if ["f32", "f64"].contains(&s) { - Some(s) + let s = s.as_str(); + if s == "f32" { + Some("f32") + } else if s == "f64" { + Some("f64") } else { None } diff --git a/src/libsyntax/print/pp.rs b/src/libsyntax/print/pp.rs index d8a8cbb655b..740ca229030 100644 --- a/src/libsyntax/print/pp.rs +++ b/src/libsyntax/print/pp.rs @@ -369,7 +369,7 @@ impl<'a> Printer<'a> { Ok(()) } - fn pretty_print_string(&mut self, s: Cow<'static, str>, len: isize) -> io::Result<()> { + fn pretty_print_string<'s>(&mut self, s: Cow<'s, str>, len: isize) -> io::Result<()> { if self.scan_stack.is_empty() { debug!("pp String('{}')/print Vec<{},{}>", s, self.left, self.right); @@ -378,7 +378,10 @@ impl<'a> Printer<'a> { debug!("pp String('{}')/buffer Vec<{},{}>", s, self.left, self.right); self.advance_right(); - self.buf[self.right] = BufEntry { token: Token::String(s, len), size: len }; + self.buf[self.right] = BufEntry { + token: Token::String(s.into_owned().into(), len), + size: len + }; self.right_total += len; self.check_stream() } @@ -576,7 +579,7 @@ impl<'a> Printer<'a> { } } - pub fn print_string(&mut self, s: Cow<'static, str>, len: isize) -> io::Result<()> { + pub fn print_string(&mut self, s: Cow<'_, str>, len: isize) -> io::Result<()> { debug!("print String({})", s); // assert!(len <= space); self.space -= len; @@ -641,7 +644,7 @@ impl<'a> Printer<'a> { self.pretty_print_eof() } - pub fn word>>(&mut self, wrd: S) -> io::Result<()> { + pub fn word<'s, S: Into>>(&mut self, wrd: S) -> io::Result<()> { let s = wrd.into(); let len = s.len() as isize; self.pretty_print_string(s, len) -- cgit 1.4.1-3-g733a5