diff options
Diffstat (limited to 'crates/ra_assists/src/assist_ctx.rs')
-rw-r--r-- | crates/ra_assists/src/assist_ctx.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/crates/ra_assists/src/assist_ctx.rs b/crates/ra_assists/src/assist_ctx.rs index 2ab65ab99..b6cac96fa 100644 --- a/crates/ra_assists/src/assist_ctx.rs +++ b/crates/ra_assists/src/assist_ctx.rs | |||
@@ -1,8 +1,9 @@ | |||
1 | //! This module defines `AssistCtx` -- the API surface that is exposed to assists. | 1 | //! This module defines `AssistCtx` -- the API surface that is exposed to assists. |
2 | use either::Either; | 2 | use either::Either; |
3 | use hir::{db::HirDatabase, InFile, SourceAnalyzer, SourceBinder}; | 3 | use hir::{db::HirDatabase, InFile, SourceAnalyzer, SourceBinder}; |
4 | use ra_db::FileRange; | 4 | use ra_db::{FileRange, SourceDatabase}; |
5 | use ra_fmt::{leading_indent, reindent}; | 5 | use ra_fmt::{leading_indent, reindent}; |
6 | use ra_ide_db::RootDatabase; | ||
6 | use ra_syntax::{ | 7 | use ra_syntax::{ |
7 | algo::{self, find_covering_element, find_node_at_offset}, | 8 | algo::{self, find_covering_element, find_node_at_offset}, |
8 | AstNode, SourceFile, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, TextUnit, | 9 | AstNode, SourceFile, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, TextUnit, |
@@ -67,17 +68,24 @@ impl<'a, DB> Clone for AssistCtx<'a, DB> { | |||
67 | } | 68 | } |
68 | } | 69 | } |
69 | 70 | ||
70 | impl<'a, DB: HirDatabase> AssistCtx<'a, DB> { | 71 | impl<'a> AssistCtx<'a, RootDatabase> { |
71 | pub(crate) fn with_ctx<F, T>(db: &DB, frange: FileRange, should_compute_edit: bool, f: F) -> T | 72 | pub(crate) fn with_ctx<F, T>( |
73 | db: &RootDatabase, | ||
74 | frange: FileRange, | ||
75 | should_compute_edit: bool, | ||
76 | f: F, | ||
77 | ) -> T | ||
72 | where | 78 | where |
73 | F: FnOnce(AssistCtx<DB>) -> T, | 79 | F: FnOnce(AssistCtx<RootDatabase>) -> T, |
74 | { | 80 | { |
75 | let parse = db.parse(frange.file_id); | 81 | let parse = db.parse(frange.file_id); |
76 | 82 | ||
77 | let ctx = AssistCtx { db, frange, source_file: parse.tree(), should_compute_edit }; | 83 | let ctx = AssistCtx { db, frange, source_file: parse.tree(), should_compute_edit }; |
78 | f(ctx) | 84 | f(ctx) |
79 | } | 85 | } |
86 | } | ||
80 | 87 | ||
88 | impl<'a, DB: HirDatabase> AssistCtx<'a, DB> { | ||
81 | pub(crate) fn add_assist( | 89 | pub(crate) fn add_assist( |
82 | self, | 90 | self, |
83 | id: AssistId, | 91 | id: AssistId, |