]> git.lizzy.rs Git - rust.git/commitdiff
Add support for Rust 2021.
authorMara Bos <m-ou.se@m-ou.se>
Fri, 1 Jan 2021 16:22:23 +0000 (17:22 +0100)
committerMara Bos <m-ou.se@m-ou.se>
Fri, 1 Jan 2021 16:22:23 +0000 (17:22 +0100)
crates/base_db/src/input.rs
crates/ide/src/runnables.rs
crates/ide/src/syntax_highlighting/injection.rs
crates/project_model/src/project_json.rs
crates/rust-analyzer/src/markdown.rs
docs/user/manual.adoc

index 9567bcc424de40d08e1e62f85faa10be7644f73f..2dd8fbe6796be84545ffb37c74eb0410313ead61 100644 (file)
@@ -190,10 +190,11 @@ pub struct CrateData {
     pub proc_macro: Vec<ProcMacro>,
 }
 
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
 pub enum Edition {
-    Edition2018,
     Edition2015,
+    Edition2018,
+    Edition2021,
 }
 
 #[derive(Default, Debug, Clone, PartialEq, Eq)]
@@ -393,6 +394,7 @@ fn from_str(s: &str) -> Result<Self, Self::Err> {
         let res = match s {
             "2015" => Edition::Edition2015,
             "2018" => Edition::Edition2018,
+            "2021" => Edition::Edition2021,
             _ => return Err(ParseEditionError { invalid_input: s.to_string() }),
         };
         Ok(res)
@@ -404,6 +406,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         f.write_str(match self {
             Edition::Edition2015 => "2015",
             Edition::Edition2018 => "2018",
+            Edition::Edition2021 => "2021",
         })
     }
 }
index 89118326601ce912d49e3a6e334269107ef82012..c893afc7cf716b6d27f6bca0e25a1050ef8efa21 100644 (file)
@@ -230,7 +230,7 @@ fn from_fn(fn_def: &ast::Fn) -> TestAttr {
 
 const RUSTDOC_FENCE: &str = "```";
 const RUSTDOC_CODE_BLOCK_ATTRIBUTES_RUNNABLE: &[&str] =
-    &["", "rust", "should_panic", "edition2015", "edition2018"];
+    &["", "rust", "should_panic", "edition2015", "edition2018", "edition2021"];
 
 fn has_runnable_doc_test(attrs: &hir::Attrs) -> bool {
     attrs.docs().map_or(false, |doc| {
index 9eb184c74bffa2e0ce8bf5cc255be4ca0184eb8d..3fd414f80bb43e154a2ee3ae17265a2228c5733e 100644 (file)
@@ -55,7 +55,7 @@ pub(super) fn highlight_injection(
 
 const RUSTDOC_FENCE: &'static str = "```";
 const RUSTDOC_FENCE_TOKENS: &[&'static str] =
-    &["", "rust", "should_panic", "ignore", "no_run", "compile_fail", "edition2015", "edition2018"];
+    &["", "rust", "should_panic", "ignore", "no_run", "compile_fail", "edition2015", "edition2018", "edition2021"];
 
 /// Extracts Rust code from documentation comments as well as a mapping from
 /// the extracted source code back to the original source ranges.
index aab279223aee6d6ea11795e4a6c300f4ef418a28..af884eb84a183692ee6a81a9325155b011fbf8dd 100644 (file)
@@ -139,6 +139,8 @@ enum EditionData {
     Edition2015,
     #[serde(rename = "2018")]
     Edition2018,
+    #[serde(rename = "2021")]
+    Edition2021,
 }
 
 impl From<EditionData> for Edition {
@@ -146,6 +148,7 @@ fn from(data: EditionData) -> Self {
         match data {
             EditionData::Edition2015 => Edition::Edition2015,
             EditionData::Edition2018 => Edition::Edition2018,
+            EditionData::Edition2021 => Edition::Edition2021,
         }
     }
 }
index 968ea55f0cc8ddd9385402c7e88bc58e25705723..2f1dcc9a5245a303ecdb6c84249dc191cfb3f5ba 100644 (file)
@@ -2,7 +2,7 @@
 
 const RUSTDOC_FENCE: &str = "```";
 const RUSTDOC_CODE_BLOCK_ATTRIBUTES_RUST_SPECIFIC: &[&str] =
-    &["", "rust", "should_panic", "ignore", "no_run", "compile_fail", "edition2015", "edition2018"];
+    &["", "rust", "should_panic", "ignore", "no_run", "compile_fail", "edition2015", "edition2018", "edition2021"];
 
 pub(crate) fn format_docs(src: &str) -> String {
     let mut processed_lines = Vec::new();
index d4121b4011f4f1206fdcb188ab96f1edfe44568c..75445a02e567d9a6fc4d2e3745d9238bc8794d6d 100644 (file)
@@ -339,7 +339,7 @@ interface Crate {
     /// Path to the root module of the crate.
     root_module: string;
     /// Edition of the crate.
-    edition: "2015" | "2018";
+    edition: "2015" | "2018" | "2021";
     /// Dependencies
     deps: Dep[];
     /// Should this crate be treated as a member of current "workspace".