about summary refs log tree commit diff
path: root/src/librustdoc
diff options
context:
space:
mode:
authorJoshua Nelson <jyn514@gmail.com>2021-09-26 16:29:41 +0000
committerJoshua Nelson <jyn514@gmail.com>2021-09-26 16:36:33 +0000
commit6f087aedb60ccbed0e1ee05256100e2f80e45f2f (patch)
tree6e2d11a5021ad5fda11d7827293b0276d2fade22 /src/librustdoc
parentf4aa3b544f19290a6d27697f78ba29771df22860 (diff)
downloadrust-6f087aedb60ccbed0e1ee05256100e2f80e45f2f.tar.gz
rust-6f087aedb60ccbed0e1ee05256100e2f80e45f2f.zip
Use the correct edition when syntax highlighting doctests
Previously it would unconditionally use edition 2015, which was
incorrect.
Diffstat (limited to 'src/librustdoc')
-rw-r--r--src/librustdoc/passes/check_code_block_syntax.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/librustdoc/passes/check_code_block_syntax.rs b/src/librustdoc/passes/check_code_block_syntax.rs
index 3deede8eeac..d2b3c5239c7 100644
--- a/src/librustdoc/passes/check_code_block_syntax.rs
+++ b/src/librustdoc/passes/check_code_block_syntax.rs
@@ -4,7 +4,7 @@ use rustc_middle::lint::LintDiagnosticBuilder;
 use rustc_parse::parse_stream_from_source_str;
 use rustc_session::parse::ParseSess;
 use rustc_span::source_map::{FilePathMapping, SourceMap};
-use rustc_span::{FileName, InnerSpan};
+use rustc_span::{hygiene::AstPass, ExpnData, ExpnKind, FileName, InnerSpan, DUMMY_SP};
 
 use crate::clean;
 use crate::core::DocContext;
@@ -36,12 +36,22 @@ impl<'a, 'tcx> SyntaxChecker<'a, 'tcx> {
         let source = dox[code_block.code].to_owned();
         let sess = ParseSess::with_span_handler(handler, sm);
 
+        let edition = code_block.lang_string.edition.unwrap_or(self.cx.tcx.sess.edition());
+        let expn_data = ExpnData::default(
+            ExpnKind::AstPass(AstPass::TestHarness),
+            DUMMY_SP,
+            edition,
+            None,
+            None,
+        );
+        let span = DUMMY_SP.fresh_expansion(expn_data, self.cx.tcx.create_stable_hashing_context());
+
         let is_empty = rustc_driver::catch_fatal_errors(|| {
             parse_stream_from_source_str(
                 FileName::Custom(String::from("doctest")),
                 source,
                 &sess,
-                None,
+                Some(span),
             )
             .is_empty()
         })