diff options
author | Lukas Wirth <[email protected]> | 2021-01-14 17:35:22 +0000 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2021-01-14 17:35:22 +0000 |
commit | f51457a643b768794092f73add6dda4aecd400a1 (patch) | |
tree | 8deeda89c7709aa69918d24ee4ecd18ea0e179db /crates/ide/src/diagnostics | |
parent | f88f3d688507508ae9528101e13e1c62902467a3 (diff) |
Group file source edits by FileId
Diffstat (limited to 'crates/ide/src/diagnostics')
-rw-r--r-- | crates/ide/src/diagnostics/field_shorthand.rs | 7 | ||||
-rw-r--r-- | crates/ide/src/diagnostics/fixes.rs | 18 |
2 files changed, 12 insertions, 13 deletions
diff --git a/crates/ide/src/diagnostics/field_shorthand.rs b/crates/ide/src/diagnostics/field_shorthand.rs index 16c6ea827..f4ec51b64 100644 --- a/crates/ide/src/diagnostics/field_shorthand.rs +++ b/crates/ide/src/diagnostics/field_shorthand.rs | |||
@@ -1,8 +1,7 @@ | |||
1 | //! Suggests shortening `Foo { field: field }` to `Foo { field }` in both | 1 | //! Suggests shortening `Foo { field: field }` to `Foo { field }` in both |
2 | //! expressions and patterns. | 2 | //! expressions and patterns. |
3 | 3 | ||
4 | use ide_db::base_db::FileId; | 4 | use ide_db::{base_db::FileId, source_change::SourceFileEdits}; |
5 | use ide_db::source_change::SourceFileEdit; | ||
6 | use syntax::{ast, match_ast, AstNode, SyntaxNode}; | 5 | use syntax::{ast, match_ast, AstNode, SyntaxNode}; |
7 | use text_edit::TextEdit; | 6 | use text_edit::TextEdit; |
8 | 7 | ||
@@ -50,7 +49,7 @@ fn check_expr_field_shorthand( | |||
50 | Diagnostic::hint(field_range, "Shorthand struct initialization".to_string()).with_fix( | 49 | Diagnostic::hint(field_range, "Shorthand struct initialization".to_string()).with_fix( |
51 | Some(Fix::new( | 50 | Some(Fix::new( |
52 | "Use struct shorthand initialization", | 51 | "Use struct shorthand initialization", |
53 | SourceFileEdit { file_id, edit }.into(), | 52 | SourceFileEdits::from_text_edit(file_id, edit).into(), |
54 | field_range, | 53 | field_range, |
55 | )), | 54 | )), |
56 | ), | 55 | ), |
@@ -89,7 +88,7 @@ fn check_pat_field_shorthand( | |||
89 | acc.push(Diagnostic::hint(field_range, "Shorthand struct pattern".to_string()).with_fix( | 88 | acc.push(Diagnostic::hint(field_range, "Shorthand struct pattern".to_string()).with_fix( |
90 | Some(Fix::new( | 89 | Some(Fix::new( |
91 | "Use struct field shorthand", | 90 | "Use struct field shorthand", |
92 | SourceFileEdit { file_id, edit }.into(), | 91 | SourceFileEdits::from_text_edit(file_id, edit).into(), |
93 | field_range, | 92 | field_range, |
94 | )), | 93 | )), |
95 | )); | 94 | )); |
diff --git a/crates/ide/src/diagnostics/fixes.rs b/crates/ide/src/diagnostics/fixes.rs index d7ad88ed5..b04964ccd 100644 --- a/crates/ide/src/diagnostics/fixes.rs +++ b/crates/ide/src/diagnostics/fixes.rs | |||
@@ -8,9 +8,9 @@ use hir::{ | |||
8 | }, | 8 | }, |
9 | HasSource, HirDisplay, InFile, Semantics, VariantDef, | 9 | HasSource, HirDisplay, InFile, Semantics, VariantDef, |
10 | }; | 10 | }; |
11 | use ide_db::base_db::{AnchoredPathBuf, FileId}; | ||
12 | use ide_db::{ | 11 | use ide_db::{ |
13 | source_change::{FileSystemEdit, SourceFileEdit}, | 12 | base_db::{AnchoredPathBuf, FileId}, |
13 | source_change::{FileSystemEdit, SourceFileEdits}, | ||
14 | RootDatabase, | 14 | RootDatabase, |
15 | }; | 15 | }; |
16 | use syntax::{ | 16 | use syntax::{ |
@@ -88,7 +88,7 @@ impl DiagnosticWithFix for MissingFields { | |||
88 | }; | 88 | }; |
89 | Some(Fix::new( | 89 | Some(Fix::new( |
90 | "Fill struct fields", | 90 | "Fill struct fields", |
91 | SourceFileEdit { file_id: self.file.original_file(sema.db), edit }.into(), | 91 | SourceFileEdits::from_text_edit(self.file.original_file(sema.db), edit).into(), |
92 | sema.original_range(&field_list_parent.syntax()).range, | 92 | sema.original_range(&field_list_parent.syntax()).range, |
93 | )) | 93 | )) |
94 | } | 94 | } |
@@ -102,7 +102,7 @@ impl DiagnosticWithFix for MissingOkOrSomeInTailExpr { | |||
102 | let replacement = format!("{}({})", self.required, tail_expr.syntax()); | 102 | let replacement = format!("{}({})", self.required, tail_expr.syntax()); |
103 | let edit = TextEdit::replace(tail_expr_range, replacement); | 103 | let edit = TextEdit::replace(tail_expr_range, replacement); |
104 | let source_change = | 104 | let source_change = |
105 | SourceFileEdit { file_id: self.file.original_file(sema.db), edit }.into(); | 105 | SourceFileEdits::from_text_edit(self.file.original_file(sema.db), edit).into(); |
106 | let name = if self.required == "Ok" { "Wrap with Ok" } else { "Wrap with Some" }; | 106 | let name = if self.required == "Ok" { "Wrap with Ok" } else { "Wrap with Some" }; |
107 | Some(Fix::new(name, source_change, tail_expr_range)) | 107 | Some(Fix::new(name, source_change, tail_expr_range)) |
108 | } | 108 | } |
@@ -123,7 +123,7 @@ impl DiagnosticWithFix for RemoveThisSemicolon { | |||
123 | 123 | ||
124 | let edit = TextEdit::delete(semicolon); | 124 | let edit = TextEdit::delete(semicolon); |
125 | let source_change = | 125 | let source_change = |
126 | SourceFileEdit { file_id: self.file.original_file(sema.db), edit }.into(); | 126 | SourceFileEdits::from_text_edit(self.file.original_file(sema.db), edit).into(); |
127 | 127 | ||
128 | Some(Fix::new("Remove this semicolon", source_change, semicolon)) | 128 | Some(Fix::new("Remove this semicolon", source_change, semicolon)) |
129 | } | 129 | } |
@@ -204,10 +204,10 @@ fn missing_record_expr_field_fix( | |||
204 | new_field = format!(",{}", new_field); | 204 | new_field = format!(",{}", new_field); |
205 | } | 205 | } |
206 | 206 | ||
207 | let source_change = SourceFileEdit { | 207 | let source_change = SourceFileEdits::from_text_edit( |
208 | file_id: def_file_id, | 208 | def_file_id, |
209 | edit: TextEdit::insert(last_field_syntax.text_range().end(), new_field), | 209 | TextEdit::insert(last_field_syntax.text_range().end(), new_field), |
210 | }; | 210 | ); |
211 | return Some(Fix::new( | 211 | return Some(Fix::new( |
212 | "Create field", | 212 | "Create field", |
213 | source_change.into(), | 213 | source_change.into(), |