diff options
| author | jackh726 <git@jackhuey.me> | 2025-08-01 14:29:21 +0000 |
|---|---|---|
| committer | jackh726 <git@jackhuey.me> | 2025-08-09 16:08:58 +0000 |
| commit | eb2bbbb9134ae3fc4d043ea12b3546b73cd90efd (patch) | |
| tree | ecfb46ef30ec9fd6fd94ecf8121ccd1e0a4bf8dc /src/tools/rust-analyzer/crates/ide-ssr | |
| parent | 840d8130a13a1123886922fa1d581be3e5717a01 (diff) | |
| download | rust-eb2bbbb9134ae3fc4d043ea12b3546b73cd90efd.tar.gz rust-eb2bbbb9134ae3fc4d043ea12b3546b73cd90efd.zip | |
Implement next trait solver
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-ssr')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-ssr/src/resolving.rs | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-ssr/src/resolving.rs b/src/tools/rust-analyzer/crates/ide-ssr/src/resolving.rs index a4e2cfbaee2..1d5f5adf2ee 100644 --- a/src/tools/rust-analyzer/crates/ide-ssr/src/resolving.rs +++ b/src/tools/rust-analyzer/crates/ide-ssr/src/resolving.rs @@ -1,7 +1,7 @@ //! This module is responsible for resolving paths within rules. use hir::AsAssocItem; -use ide_db::FxHashMap; +use ide_db::{FxHashMap, base_db::salsa}; use parsing::Placeholder; use syntax::{ SmolStr, SyntaxKind, SyntaxNode, SyntaxToken, @@ -48,16 +48,20 @@ impl<'db> ResolvedRule<'db> { resolution_scope: &ResolutionScope<'db>, index: usize, ) -> Result<ResolvedRule<'db>, SsrError> { - let resolver = - Resolver { resolution_scope, placeholders_by_stand_in: rule.placeholders_by_stand_in }; - let resolved_template = match rule.template { - Some(template) => Some(resolver.resolve_pattern_tree(template)?), - None => None, - }; - Ok(ResolvedRule { - pattern: resolver.resolve_pattern_tree(rule.pattern)?, - template: resolved_template, - index, + salsa::attach(resolution_scope.scope.db, || { + let resolver = Resolver { + resolution_scope, + placeholders_by_stand_in: rule.placeholders_by_stand_in, + }; + let resolved_template = match rule.template { + Some(template) => Some(resolver.resolve_pattern_tree(template)?), + None => None, + }; + Ok(ResolvedRule { + pattern: resolver.resolve_pattern_tree(rule.pattern)?, + template: resolved_template, + index, + }) }) } |
