aboutsummaryrefslogtreecommitdiff
path: root/crates/ide/src/diagnostics
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2021-01-14 17:35:22 +0000
committerLukas Wirth <[email protected]>2021-01-14 17:35:22 +0000
commitf51457a643b768794092f73add6dda4aecd400a1 (patch)
tree8deeda89c7709aa69918d24ee4ecd18ea0e179db /crates/ide/src/diagnostics
parentf88f3d688507508ae9528101e13e1c62902467a3 (diff)
Group file source edits by FileId
Diffstat (limited to 'crates/ide/src/diagnostics')
-rw-r--r--crates/ide/src/diagnostics/field_shorthand.rs7
-rw-r--r--crates/ide/src/diagnostics/fixes.rs18
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
4use ide_db::base_db::FileId; 4use ide_db::{base_db::FileId, source_change::SourceFileEdits};
5use ide_db::source_change::SourceFileEdit;
6use syntax::{ast, match_ast, AstNode, SyntaxNode}; 5use syntax::{ast, match_ast, AstNode, SyntaxNode};
7use text_edit::TextEdit; 6use 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};
11use ide_db::base_db::{AnchoredPathBuf, FileId};
12use ide_db::{ 11use ide_db::{
13 source_change::{FileSystemEdit, SourceFileEdit}, 12 base_db::{AnchoredPathBuf, FileId},
13 source_change::{FileSystemEdit, SourceFileEdits},
14 RootDatabase, 14 RootDatabase,
15}; 15};
16use syntax::{ 16use 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(),