From 678c74430b099e1f615069d99674926a0b7ff892 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 8 Dec 2020 17:16:18 +0100 Subject: Handle macros in `TestDB::check_diagnostics` --- crates/hir_def/src/test_db.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/hir_def/src/test_db.rs b/crates/hir_def/src/test_db.rs index 00fe711fe..59c788b18 100644 --- a/crates/hir_def/src/test_db.rs +++ b/crates/hir_def/src/test_db.rs @@ -157,9 +157,16 @@ impl TestDB { db.diagnostics(|d| { let src = d.display_source(); let root = db.parse_or_expand(src.file_id).unwrap(); - // FIXME: macros... + + // Place all diagnostics emitted in macro files on the original caller. + // Note that this does *not* match IDE behavior. + let mut src = src.map(|ptr| ptr.to_node(&root)); + while let Some(exp) = src.file_id.call_node(db) { + src = exp; + } + let file_id = src.file_id.original_file(db); - let range = src.value.to_node(&root).text_range(); + let range = src.value.text_range(); let message = d.message().to_owned(); actual.entry(file_id).or_default().push((range, message)); }); -- cgit v1.2.3