diff options
Diffstat (limited to 'crates/ide/src/lib.rs')
-rw-r--r-- | crates/ide/src/lib.rs | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/crates/ide/src/lib.rs b/crates/ide/src/lib.rs index 99e45633e..6847b7e83 100644 --- a/crates/ide/src/lib.rs +++ b/crates/ide/src/lib.rs | |||
@@ -87,7 +87,7 @@ pub use crate::{ | |||
87 | }, | 87 | }, |
88 | }; | 88 | }; |
89 | pub use hir::{Documentation, Semantics}; | 89 | pub use hir::{Documentation, Semantics}; |
90 | pub use ide_assists::{Assist, AssistConfig, AssistId, AssistKind}; | 90 | pub use ide_assists::{Assist, AssistConfig, AssistId, AssistKind, AssistResolveStrategy}; |
91 | pub use ide_completion::{ | 91 | pub use ide_completion::{ |
92 | CompletionConfig, CompletionItem, CompletionItemKind, CompletionRelevance, ImportEdit, | 92 | CompletionConfig, CompletionItem, CompletionItemKind, CompletionRelevance, ImportEdit, |
93 | InsertTextFormat, | 93 | InsertTextFormat, |
@@ -518,12 +518,13 @@ impl Analysis { | |||
518 | pub fn assists( | 518 | pub fn assists( |
519 | &self, | 519 | &self, |
520 | config: &AssistConfig, | 520 | config: &AssistConfig, |
521 | resolve: bool, | 521 | resolve: AssistResolveStrategy, |
522 | frange: FileRange, | 522 | frange: FileRange, |
523 | ) -> Cancelable<Vec<Assist>> { | 523 | ) -> Cancelable<Vec<Assist>> { |
524 | self.with_db(|db| { | 524 | self.with_db(|db| { |
525 | let ssr_assists = ssr::ssr_assists(db, resolve, frange); | ||
525 | let mut acc = Assist::get(db, config, resolve, frange); | 526 | let mut acc = Assist::get(db, config, resolve, frange); |
526 | ssr::add_ssr_assist(db, &mut acc, resolve, frange); | 527 | acc.extend(ssr_assists.into_iter()); |
527 | acc | 528 | acc |
528 | }) | 529 | }) |
529 | } | 530 | } |
@@ -532,7 +533,7 @@ impl Analysis { | |||
532 | pub fn diagnostics( | 533 | pub fn diagnostics( |
533 | &self, | 534 | &self, |
534 | config: &DiagnosticsConfig, | 535 | config: &DiagnosticsConfig, |
535 | resolve: bool, | 536 | resolve: AssistResolveStrategy, |
536 | file_id: FileId, | 537 | file_id: FileId, |
537 | ) -> Cancelable<Vec<Diagnostic>> { | 538 | ) -> Cancelable<Vec<Diagnostic>> { |
538 | self.with_db(|db| diagnostics::diagnostics(db, config, resolve, file_id)) | 539 | self.with_db(|db| diagnostics::diagnostics(db, config, resolve, file_id)) |
@@ -543,7 +544,7 @@ impl Analysis { | |||
543 | &self, | 544 | &self, |
544 | assist_config: &AssistConfig, | 545 | assist_config: &AssistConfig, |
545 | diagnostics_config: &DiagnosticsConfig, | 546 | diagnostics_config: &DiagnosticsConfig, |
546 | resolve: bool, | 547 | resolve: AssistResolveStrategy, |
547 | frange: FileRange, | 548 | frange: FileRange, |
548 | ) -> Cancelable<Vec<Assist>> { | 549 | ) -> Cancelable<Vec<Assist>> { |
549 | let include_fixes = match &assist_config.allowed { | 550 | let include_fixes = match &assist_config.allowed { |
@@ -552,17 +553,21 @@ impl Analysis { | |||
552 | }; | 553 | }; |
553 | 554 | ||
554 | self.with_db(|db| { | 555 | self.with_db(|db| { |
556 | let ssr_assists = ssr::ssr_assists(db, resolve, frange); | ||
557 | let diagnostic_assists = if include_fixes { | ||
558 | diagnostics::diagnostics(db, diagnostics_config, resolve, frange.file_id) | ||
559 | .into_iter() | ||
560 | .filter_map(|it| it.fix) | ||
561 | .filter(|it| it.target.intersect(frange.range).is_some()) | ||
562 | .collect() | ||
563 | } else { | ||
564 | Vec::new() | ||
565 | }; | ||
566 | |||
555 | let mut res = Assist::get(db, assist_config, resolve, frange); | 567 | let mut res = Assist::get(db, assist_config, resolve, frange); |
556 | ssr::add_ssr_assist(db, &mut res, resolve, frange); | 568 | res.extend(ssr_assists.into_iter()); |
557 | 569 | res.extend(diagnostic_assists.into_iter()); | |
558 | if include_fixes { | 570 | |
559 | res.extend( | ||
560 | diagnostics::diagnostics(db, diagnostics_config, resolve, frange.file_id) | ||
561 | .into_iter() | ||
562 | .filter_map(|it| it.fix) | ||
563 | .filter(|it| it.target.intersect(frange.range).is_some()), | ||
564 | ); | ||
565 | } | ||
566 | res | 571 | res |
567 | }) | 572 | }) |
568 | } | 573 | } |