diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-05-27 12:56:26 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-05-27 12:56:26 +0100 |
commit | d0a4ba294ccf0c925a5ff1115c19a60c6a24b734 (patch) | |
tree | 5caf7619e3486f68516d81971abc3018ddee5323 /crates/hir_def/src/test_db.rs | |
parent | bfb06e17acd4bcb623ad5656490a7a1971980441 (diff) | |
parent | 196cb65ead398f81340de431400103224d7de660 (diff) |
Merge #8997
8997: internal: stop expanding UseTrees during ItemTree lowering r=jonas-schievink a=jonas-schievink
Closes https://github.com/rust-analyzer/rust-analyzer/issues/8908
Messy diff, but `ItemTree` lowering got simpler, since we now have a strict 1-to-1 mapping between `ast::Item` and `ModItem`.
The most messy part is mapping a single `UseTree` back to its `ast::UseTree` counterpart for diagnostics, but I think the ad-hoc source map built during lowering does the job.
Co-authored-by: Jonas Schievink <[email protected]>
Diffstat (limited to 'crates/hir_def/src/test_db.rs')
-rw-r--r-- | crates/hir_def/src/test_db.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/hir_def/src/test_db.rs b/crates/hir_def/src/test_db.rs index 6c357c915..a9c1e13e2 100644 --- a/crates/hir_def/src/test_db.rs +++ b/crates/hir_def/src/test_db.rs | |||
@@ -278,9 +278,11 @@ impl TestDB { | |||
278 | let node = ast.to_node(self.upcast()); | 278 | let node = ast.to_node(self.upcast()); |
279 | (InFile::new(ast.file_id, node.syntax().clone()), "UnresolvedExternCrate") | 279 | (InFile::new(ast.file_id, node.syntax().clone()), "UnresolvedExternCrate") |
280 | } | 280 | } |
281 | DefDiagnosticKind::UnresolvedImport { ast, .. } => { | 281 | DefDiagnosticKind::UnresolvedImport { id, .. } => { |
282 | let node = ast.to_node(self.upcast()); | 282 | let item_tree = id.item_tree(self.upcast()); |
283 | (InFile::new(ast.file_id, node.syntax().clone()), "UnresolvedImport") | 283 | let import = &item_tree[id.value]; |
284 | let node = InFile::new(id.file_id(), import.ast_id).to_node(self.upcast()); | ||
285 | (InFile::new(id.file_id(), node.syntax().clone()), "UnresolvedImport") | ||
284 | } | 286 | } |
285 | DefDiagnosticKind::UnconfiguredCode { ast, .. } => { | 287 | DefDiagnosticKind::UnconfiguredCode { ast, .. } => { |
286 | let node = ast.to_node(self.upcast()); | 288 | let node = ast.to_node(self.upcast()); |