Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/tests.rs')
-rw-r--r--crates/ide-diagnostics/src/tests.rs78
1 files changed, 49 insertions, 29 deletions
diff --git a/crates/ide-diagnostics/src/tests.rs b/crates/ide-diagnostics/src/tests.rs
index 181993154e..1839ab1c58 100644
--- a/crates/ide-diagnostics/src/tests.rs
+++ b/crates/ide-diagnostics/src/tests.rs
@@ -2,10 +2,11 @@
mod overly_long_real_world_cases;
+use hir::setup_tracing;
use ide_db::{
LineIndexDatabase, RootDatabase,
assists::{AssistResolveStrategy, ExprFillDefaultMode},
- base_db::SourceDatabase,
+ base_db::{SourceDatabase, salsa},
};
use itertools::Itertools;
use stdx::trim_indent;
@@ -73,14 +74,16 @@ fn check_nth_fix_with_config(
let after = trim_indent(ra_fixture_after);
let (db, file_position) = RootDatabase::with_position(ra_fixture_before);
- let diagnostic = super::full_diagnostics(
- &db,
- &config,
- &AssistResolveStrategy::All,
- file_position.file_id.file_id(&db),
- )
- .pop()
- .expect("no diagnostics");
+ let diagnostic = salsa::attach(&db, || {
+ super::full_diagnostics(
+ &db,
+ &config,
+ &AssistResolveStrategy::All,
+ file_position.file_id.file_id(&db),
+ )
+ .pop()
+ .expect("no diagnostics")
+ });
let fix = &diagnostic
.fixes
.unwrap_or_else(|| panic!("{:?} diagnostic misses fixes", diagnostic.code))[nth];
@@ -126,12 +129,14 @@ pub(crate) fn check_has_fix(
let (db, file_position) = RootDatabase::with_position(ra_fixture_before);
let mut conf = DiagnosticsConfig::test_sample();
conf.expr_fill_default = ExprFillDefaultMode::Default;
- let fix = super::full_diagnostics(
- &db,
- &conf,
- &AssistResolveStrategy::All,
- file_position.file_id.file_id(&db),
- )
+ let fix = salsa::attach(&db, || {
+ super::full_diagnostics(
+ &db,
+ &conf,
+ &AssistResolveStrategy::All,
+ file_position.file_id.file_id(&db),
+ )
+ })
.into_iter()
.find(|d| {
d.fixes
@@ -165,12 +170,14 @@ pub(crate) fn check_has_fix(
/// Checks that there's a diagnostic *without* fix at `$0`.
pub(crate) fn check_no_fix(#[rust_analyzer::rust_fixture] ra_fixture: &str) {
let (db, file_position) = RootDatabase::with_position(ra_fixture);
- let diagnostic = super::full_diagnostics(
- &db,
- &DiagnosticsConfig::test_sample(),
- &AssistResolveStrategy::All,
- file_position.file_id.file_id(&db),
- )
+ let diagnostic = salsa::attach(&db, || {
+ super::full_diagnostics(
+ &db,
+ &DiagnosticsConfig::test_sample(),
+ &AssistResolveStrategy::All,
+ file_position.file_id.file_id(&db),
+ )
+ })
.pop()
.unwrap();
assert!(diagnostic.fixes.is_none(), "got a fix when none was expected: {diagnostic:?}");
@@ -198,12 +205,20 @@ pub(crate) fn check_diagnostics_with_config(
config: DiagnosticsConfig,
#[rust_analyzer::rust_fixture] ra_fixture: &str,
) {
+ let _tracing = setup_tracing();
+
let (db, files) = RootDatabase::with_many_files(ra_fixture);
let mut annotations = files
.iter()
.copied()
.flat_map(|file_id| {
- super::full_diagnostics(&db, &config, &AssistResolveStrategy::All, file_id.file_id(&db))
+ salsa::attach(&db, || {
+ super::full_diagnostics(
+ &db,
+ &config,
+ &AssistResolveStrategy::All,
+ file_id.file_id(&db),
+ )
.into_iter()
.map(|d| {
let mut annotation = String::new();
@@ -221,6 +236,7 @@ pub(crate) fn check_diagnostics_with_config(
annotation.push_str(&d.message);
(d.range, annotation)
})
+ })
})
.map(|(diagnostic, annotation)| (diagnostic.file_id, (diagnostic.range, annotation)))
.into_group_map();
@@ -272,15 +288,19 @@ fn test_disabled_diagnostics() {
let (db, file_id) = RootDatabase::with_single_file(r#"mod foo;"#);
let file_id = file_id.file_id(&db);
- let diagnostics = super::full_diagnostics(&db, &config, &AssistResolveStrategy::All, file_id);
+ let diagnostics = salsa::attach(&db, || {
+ super::full_diagnostics(&db, &config, &AssistResolveStrategy::All, file_id)
+ });
assert!(diagnostics.is_empty());
- let diagnostics = super::full_diagnostics(
- &db,
- &DiagnosticsConfig::test_sample(),
- &AssistResolveStrategy::All,
- file_id,
- );
+ let diagnostics = salsa::attach(&db, || {
+ super::full_diagnostics(
+ &db,
+ &DiagnosticsConfig::test_sample(),
+ &AssistResolveStrategy::All,
+ file_id,
+ )
+ });
assert!(!diagnostics.is_empty());
}