Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-ssr/src/resolving.rs')
-rw-r--r--crates/ide-ssr/src/resolving.rs26
1 files changed, 15 insertions, 11 deletions
diff --git a/crates/ide-ssr/src/resolving.rs b/crates/ide-ssr/src/resolving.rs
index a4e2cfbaee..1d5f5adf2e 100644
--- a/crates/ide-ssr/src/resolving.rs
+++ b/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,
+ })
})
}