about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/ide-assists/Cargo.toml3
-rw-r--r--crates/ide-assists/src/tests/sourcegen.rs16
-rw-r--r--crates/ide-diagnostics/Cargo.toml3
-rw-r--r--crates/ide-diagnostics/src/tests/sourcegen.rs7
-rw-r--r--crates/ide/Cargo.toml3
-rw-r--r--crates/rust-analyzer/Cargo.toml7
-rw-r--r--crates/rust-analyzer/tests/slow-tests/sourcegen.rs6
-rw-r--r--crates/rust-analyzer/tests/slow-tests/tidy.rs7
-rw-r--r--crates/sourcegen/Cargo.toml3
-rw-r--r--crates/syntax/Cargo.toml3
-rw-r--r--crates/syntax/src/tests.rs3
-rw-r--r--crates/syntax/src/tests/ast_src.rs7
12 files changed, 63 insertions, 5 deletions
diff --git a/crates/ide-assists/Cargo.toml b/crates/ide-assists/Cargo.toml
index 51e43d21cb0..fca09d384c6 100644
--- a/crates/ide-assists/Cargo.toml
+++ b/crates/ide-assists/Cargo.toml
@@ -26,3 +26,6 @@ hir = { path = "../hir", version = "0.0.0" }
 test-utils = { path = "../test-utils" }
 sourcegen = { path = "../sourcegen" }
 expect-test = "1.4.0"
+
+[features]
+in-rust-tree = []
diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs
index d45e54186bb..97d5b2cbbae 100644
--- a/crates/ide-assists/src/tests/sourcegen.rs
+++ b/crates/ide-assists/src/tests/sourcegen.rs
@@ -1,9 +1,12 @@
 //! Generates `assists.md` documentation.
 
+#[cfg(not(feature = "in-rust-tree"))]
 use std::{fmt, fs, path::Path};
 
+#[cfg(not(feature = "in-rust-tree"))]
 use test_utils::project_root;
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[test]
 fn sourcegen_assists_docs() {
     let assists = Assist::collect();
@@ -59,6 +62,8 @@ r#####"
         fs::write(dst, contents).unwrap();
     }
 }
+
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 struct Section {
     doc: String,
@@ -66,6 +71,7 @@ struct Section {
     after: String,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 struct Assist {
     id: String,
@@ -73,6 +79,7 @@ struct Assist {
     sections: Vec<Section>,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl Assist {
     fn collect() -> Vec<Assist> {
         let handlers_dir = project_root().join("crates/ide-assists/src/handlers");
@@ -104,9 +111,11 @@ impl Assist {
                 while lines.peek().is_some() {
                     let doc = take_until(lines.by_ref(), "```").trim().to_string();
                     assert!(
-                        (doc.chars().next().unwrap().is_ascii_uppercase() && doc.ends_with('.')) || assist.sections.len() > 0,
+                        (doc.chars().next().unwrap().is_ascii_uppercase() && doc.ends_with('.'))
+                            || assist.sections.len() > 0,
                         "\n\n{}: assist docs should be proper sentences, with capitalization and a full stop at the end.\n\n{}\n\n",
-                        &assist.id, doc,
+                        &assist.id,
+                        doc,
                     );
 
                     let before = take_until(lines.by_ref(), "```");
@@ -135,6 +144,7 @@ impl Assist {
     }
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl fmt::Display for Assist {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         let _ = writeln!(
@@ -169,6 +179,7 @@ impl fmt::Display for Assist {
     }
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 fn hide_hash_comments(text: &str) -> String {
     text.split('\n') // want final newline
         .filter(|&it| !(it.starts_with("# ") || it == "#"))
@@ -176,6 +187,7 @@ fn hide_hash_comments(text: &str) -> String {
         .collect()
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 fn reveal_hash_comments(text: &str) -> String {
     text.split('\n') // want final newline
         .map(|it| {
diff --git a/crates/ide-diagnostics/Cargo.toml b/crates/ide-diagnostics/Cargo.toml
index a79adca4cdb..e221425edd5 100644
--- a/crates/ide-diagnostics/Cargo.toml
+++ b/crates/ide-diagnostics/Cargo.toml
@@ -29,3 +29,6 @@ expect-test = "1.4.0"
 
 test-utils = { path = "../test-utils" }
 sourcegen = { path = "../sourcegen" }
+
+[features]
+in-rust-tree = []
diff --git a/crates/ide-diagnostics/src/tests/sourcegen.rs b/crates/ide-diagnostics/src/tests/sourcegen.rs
index ec6558a46ef..24bf6c35894 100644
--- a/crates/ide-diagnostics/src/tests/sourcegen.rs
+++ b/crates/ide-diagnostics/src/tests/sourcegen.rs
@@ -1,9 +1,12 @@
 //! Generates `assists.md` documentation.
 
+#[cfg(not(feature = "in-rust-tree"))]
 use std::{fmt, fs, io, path::PathBuf};
 
+#[cfg(not(feature = "in-rust-tree"))]
 use sourcegen::project_root;
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[test]
 fn sourcegen_diagnostic_docs() {
     let diagnostics = Diagnostic::collect().unwrap();
@@ -14,6 +17,7 @@ fn sourcegen_diagnostic_docs() {
     fs::write(&dst, &contents).unwrap();
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 struct Diagnostic {
     id: String,
@@ -21,6 +25,7 @@ struct Diagnostic {
     doc: String,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl Diagnostic {
     fn collect() -> io::Result<Vec<Diagnostic>> {
         let handlers_dir = project_root().join("crates/ide-diagnostics/src/handlers");
@@ -51,6 +56,7 @@ impl Diagnostic {
     }
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 fn is_valid_diagnostic_name(diagnostic: &str) -> Result<(), String> {
     let diagnostic = diagnostic.trim();
     if diagnostic.find(char::is_whitespace).is_some() {
@@ -66,6 +72,7 @@ fn is_valid_diagnostic_name(diagnostic: &str) -> Result<(), String> {
     Ok(())
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl fmt::Display for Diagnostic {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         writeln!(f, "=== {}\n**Source:** {}\n{}", self.id, self.location, self.doc)
diff --git a/crates/ide/Cargo.toml b/crates/ide/Cargo.toml
index 95a54b75e28..0e9771cd2eb 100644
--- a/crates/ide/Cargo.toml
+++ b/crates/ide/Cargo.toml
@@ -42,3 +42,6 @@ toolchain = { path = "../toolchain", version = "0.0.0" }
 [dev-dependencies]
 test-utils = { path = "../test-utils" }
 expect-test = "1.4.0"
+
+[features]
+in-rust-tree = ["ide-assists/in-rust-tree", "ide-diagnostics/in-rust-tree"]
diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml
index 41205f2584a..07771d1b392 100644
--- a/crates/rust-analyzer/Cargo.toml
+++ b/crates/rust-analyzer/Cargo.toml
@@ -84,4 +84,9 @@ mbe = { path = "../mbe" }
 [features]
 jemalloc = ["jemallocator", "profile/jemalloc"]
 force-always-assert = ["always-assert/force"]
-in-rust-tree = ["proc-macro-srv/sysroot-abi"]
+in-rust-tree = [
+    "proc-macro-srv/sysroot-abi",
+    "sourcegen/in-rust-tree",
+    "ide/in-rust-tree",
+    "syntax/in-rust-tree"
+]
diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
index e6ac018a05f..3c1f8a304ec 100644
--- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
+++ b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
@@ -1,7 +1,9 @@
 //! Generates `assists.md` documentation.
 
+#[cfg(not(feature = "in-rust-tree"))]
 use std::{fmt, fs, io, path::PathBuf};
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[test]
 fn sourcegen_feature_docs() {
     let features = Feature::collect().unwrap();
@@ -17,6 +19,7 @@ fn sourcegen_feature_docs() {
     fs::write(&dst, &contents).unwrap();
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 struct Feature {
     id: String,
@@ -24,6 +27,7 @@ struct Feature {
     doc: String,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl Feature {
     fn collect() -> io::Result<Vec<Feature>> {
         let crates_dir = sourcegen::project_root().join("crates");
@@ -54,6 +58,7 @@ impl Feature {
     }
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 fn is_valid_feature_name(feature: &str) -> Result<(), String> {
     'word: for word in feature.split_whitespace() {
         for short in ["to", "and"] {
@@ -73,6 +78,7 @@ fn is_valid_feature_name(feature: &str) -> Result<(), String> {
     Ok(())
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 impl fmt::Display for Feature {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         writeln!(f, "=== {}\n**Source:** {}\n{}", self.id, self.location, self.doc)
diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs
index dc3c5539c2c..18f95925d9a 100644
--- a/crates/rust-analyzer/tests/slow-tests/tidy.rs
+++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs
@@ -3,8 +3,12 @@ use std::{
     path::{Path, PathBuf},
 };
 
-use xshell::{cmd, Shell};
+use xshell::Shell;
 
+#[cfg(not(feature = "in-rust-tree"))]
+use xshell::cmd;
+
+#[cfg(not(feature = "in-rust-tree"))]
 #[test]
 fn check_code_formatting() {
     let sh = &Shell::new().unwrap();
@@ -168,6 +172,7 @@ See https://github.com/rust-lang/rust-clippy/issues/5537 for discussion.
     }
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[test]
 fn check_licenses() {
     let sh = &Shell::new().unwrap();
diff --git a/crates/sourcegen/Cargo.toml b/crates/sourcegen/Cargo.toml
index e75867e2d81..a84110d940b 100644
--- a/crates/sourcegen/Cargo.toml
+++ b/crates/sourcegen/Cargo.toml
@@ -11,3 +11,6 @@ doctest = false
 
 [dependencies]
 xshell = "0.2.2"
+
+[features]
+in-rust-tree = []
diff --git a/crates/syntax/Cargo.toml b/crates/syntax/Cargo.toml
index a56c9dec401..0e2dec386ff 100644
--- a/crates/syntax/Cargo.toml
+++ b/crates/syntax/Cargo.toml
@@ -34,3 +34,6 @@ ungrammar = "1.16.1"
 
 test-utils = { path = "../test-utils" }
 sourcegen = { path = "../sourcegen" }
+
+[features]
+in-rust-tree = []
diff --git a/crates/syntax/src/tests.rs b/crates/syntax/src/tests.rs
index 0611143e2af..ed6430f5361 100644
--- a/crates/syntax/src/tests.rs
+++ b/crates/syntax/src/tests.rs
@@ -1,5 +1,6 @@
-mod sourcegen_ast;
 mod ast_src;
+#[cfg(not(feature = "in-rust-tree"))]
+mod sourcegen_ast;
 
 use std::{
     fs,
diff --git a/crates/syntax/src/tests/ast_src.rs b/crates/syntax/src/tests/ast_src.rs
index cf5be1c30fb..93959d4ed79 100644
--- a/crates/syntax/src/tests/ast_src.rs
+++ b/crates/syntax/src/tests/ast_src.rs
@@ -1,5 +1,6 @@
 //! Defines input for code generation process.
 
+#[cfg(not(feature = "in-rust-tree"))]
 pub(crate) struct KindsSrc<'a> {
     pub(crate) punct: &'a [(&'a str, &'a str)],
     pub(crate) keywords: &'a [&'a str],
@@ -9,6 +10,7 @@ pub(crate) struct KindsSrc<'a> {
     pub(crate) nodes: &'a [&'a str],
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc {
     punct: &[
         (";", "SEMICOLON"),
@@ -216,6 +218,7 @@ pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc {
     ],
 };
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Default, Debug)]
 pub(crate) struct AstSrc {
     pub(crate) tokens: Vec<String>,
@@ -223,6 +226,7 @@ pub(crate) struct AstSrc {
     pub(crate) enums: Vec<AstEnumSrc>,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 pub(crate) struct AstNodeSrc {
     pub(crate) doc: Vec<String>,
@@ -231,18 +235,21 @@ pub(crate) struct AstNodeSrc {
     pub(crate) fields: Vec<Field>,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug, Eq, PartialEq)]
 pub(crate) enum Field {
     Token(String),
     Node { name: String, ty: String, cardinality: Cardinality },
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug, Eq, PartialEq)]
 pub(crate) enum Cardinality {
     Optional,
     Many,
 }
 
+#[cfg(not(feature = "in-rust-tree"))]
 #[derive(Debug)]
 pub(crate) struct AstEnumSrc {
     pub(crate) doc: Vec<String>,