diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2021-05-07 00:38:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-07 00:38:44 +0200 |
| commit | 3c5da6e6b9b0b3a7969036732ba45cd307d2cf93 (patch) | |
| tree | 01311552495c58142f5f18cdd9ae5f21a7f556e1 | |
| parent | eec3ae3feb8fc812df5f982940511a43c2de0df0 (diff) | |
| parent | 3c489a3482258a5788516d2d8c31e68ee26e0e15 (diff) | |
| download | rust-3c5da6e6b9b0b3a7969036732ba45cd307d2cf93.tar.gz rust-3c5da6e6b9b0b3a7969036732ba45cd307d2cf93.zip | |
Rollup merge of #84953 - GuillaumeGomez:remove-unneeded-with_default_session_globals, r=jyn514
Remove unneeded call to with_default_session_globals in rustdoc highlight This was the origin of the `Span` bug in https://github.com/rust-lang/rust/pull/84176. cc `````@Aaron1011````` r? `````@jyn514`````
| -rw-r--r-- | src/librustdoc/html/highlight.rs | 37 | ||||
| -rw-r--r-- | src/librustdoc/html/highlight/tests.rs | 27 |
2 files changed, 33 insertions, 31 deletions
diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 7130a6bc1e8..f631f627fc2 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -13,7 +13,6 @@ use std::iter::Peekable; use rustc_lexer::{LiteralKind, TokenKind}; use rustc_span::edition::Edition; use rustc_span::symbol::Symbol; -use rustc_span::with_default_session_globals; use super::format::Buffer; @@ -238,28 +237,26 @@ impl<'a> Classifier<'a> { /// possibly giving it an HTML span with a class specifying what flavor of /// token is used. fn highlight(mut self, sink: &mut dyn FnMut(Highlight<'a>)) { - with_default_session_globals(|| { - loop { - if self - .tokens - .peek() - .map(|t| matches!(t.0, TokenKind::Colon | TokenKind::Ident)) - .unwrap_or(false) - { - let tokens = self.get_full_ident_path(); - for (token, start, end) in tokens { - let text = &self.src[start..end]; - self.advance(token, text, sink); - self.byte_pos += text.len() as u32; - } - } - if let Some((token, text)) = self.next() { + loop { + if self + .tokens + .peek() + .map(|t| matches!(t.0, TokenKind::Colon | TokenKind::Ident)) + .unwrap_or(false) + { + let tokens = self.get_full_ident_path(); + for (token, start, end) in tokens { + let text = &self.src[start..end]; self.advance(token, text, sink); - } else { - break; + self.byte_pos += text.len() as u32; } } - }) + if let Some((token, text)) = self.next() { + self.advance(token, text, sink); + } else { + break; + } + } } /// Single step of highlighting. This will classify `token`, but maybe also diff --git a/src/librustdoc/html/highlight/tests.rs b/src/librustdoc/html/highlight/tests.rs index 305cf61091d..a0da2c963d1 100644 --- a/src/librustdoc/html/highlight/tests.rs +++ b/src/librustdoc/html/highlight/tests.rs @@ -2,6 +2,7 @@ use super::write_code; use crate::html::format::Buffer; use expect_test::expect_file; use rustc_span::edition::Edition; +use rustc_span::with_default_session_globals; const STYLE: &str = r#" <style> @@ -17,21 +18,25 @@ const STYLE: &str = r#" #[test] fn test_html_highlighting() { - let src = include_str!("fixtures/sample.rs"); - let html = { - let mut out = Buffer::new(); - write_code(&mut out, src, Edition::Edition2018); - format!("{}<pre><code>{}</code></pre>\n", STYLE, out.into_inner()) - }; - expect_file!["fixtures/sample.html"].assert_eq(&html); + with_default_session_globals(|| { + let src = include_str!("fixtures/sample.rs"); + let html = { + let mut out = Buffer::new(); + write_code(&mut out, src, Edition::Edition2018); + format!("{}<pre><code>{}</code></pre>\n", STYLE, out.into_inner()) + }; + expect_file!["fixtures/sample.html"].assert_eq(&html); + }); } #[test] fn test_dos_backline() { - let src = "pub fn foo() {\r\n\ + with_default_session_globals(|| { + let src = "pub fn foo() {\r\n\ println!(\"foo\");\r\n\ }\r\n"; - let mut html = Buffer::new(); - write_code(&mut html, src, Edition::Edition2018); - expect_file!["fixtures/dos_line.html"].assert_eq(&html.into_inner()); + let mut html = Buffer::new(); + write_code(&mut html, src, Edition::Edition2018); + expect_file!["fixtures/dos_line.html"].assert_eq(&html.into_inner()); + }); } |
