about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock2
-rw-r--r--crates/ra_assists/src/assist_context.rs4
-rw-r--r--crates/ra_ide/src/diagnostics.rs6
-rw-r--r--crates/ra_ide/src/diagnostics/diagnostics_with_fix.rs4
-rw-r--r--crates/ra_ide/src/join_lines.rs4
-rw-r--r--crates/ra_ide/src/references/rename.rs2
-rw-r--r--crates/ra_ssr/src/replacing.rs2
-rw-r--r--crates/ra_text_edit/Cargo.toml7
-rw-r--r--crates/ra_text_edit/src/lib.rs27
9 files changed, 34 insertions, 24 deletions
diff --git a/Cargo.lock b/Cargo.lock
index c48c6a59779..daa87254640 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1205,7 +1205,7 @@ dependencies = [
 
 [[package]]
 name = "ra_text_edit"
-version = "0.1.0"
+version = "0.0.0"
 dependencies = [
  "text-size",
 ]
diff --git a/crates/ra_assists/src/assist_context.rs b/crates/ra_assists/src/assist_context.rs
index afd3fd4b9e3..afba860d1dc 100644
--- a/crates/ra_assists/src/assist_context.rs
+++ b/crates/ra_assists/src/assist_context.rs
@@ -15,7 +15,7 @@ use ra_syntax::{
     AstNode, SourceFile, SyntaxElement, SyntaxKind, SyntaxNode, SyntaxToken, TextRange, TextSize,
     TokenAtOffset,
 };
-use ra_text_edit::TextEditBuilder;
+use ra_text_edit::{TextEdit, TextEditBuilder};
 
 use crate::{
     assist_config::{AssistConfig, SnippetCap},
@@ -214,7 +214,7 @@ pub(crate) struct AssistBuilder {
 impl AssistBuilder {
     pub(crate) fn new(file_id: FileId) -> AssistBuilder {
         AssistBuilder {
-            edit: TextEditBuilder::default(),
+            edit: TextEdit::builder(),
             file_id,
             is_snippet: false,
             change: SourceChange::default(),
diff --git a/crates/ra_ide/src/diagnostics.rs b/crates/ra_ide/src/diagnostics.rs
index 07bf133bd6c..e006c777548 100644
--- a/crates/ra_ide/src/diagnostics.rs
+++ b/crates/ra_ide/src/diagnostics.rs
@@ -14,7 +14,7 @@ use ra_syntax::{
     ast::{self, AstNode},
     SyntaxNode, TextRange, T,
 };
-use ra_text_edit::{TextEdit, TextEditBuilder};
+use ra_text_edit::TextEdit;
 
 use crate::{Diagnostic, FileId, Fix, SourceFileEdit};
 
@@ -103,7 +103,7 @@ fn check_unnecessary_braces_in_use_statement(
             text_edit_for_remove_unnecessary_braces_with_self_in_use_statement(&single_use_tree)
                 .unwrap_or_else(|| {
                     let to_replace = single_use_tree.syntax().text().to_string();
-                    let mut edit_builder = TextEditBuilder::default();
+                    let mut edit_builder = TextEdit::builder();
                     edit_builder.delete(use_range);
                     edit_builder.insert(use_range.start(), to_replace);
                     edit_builder.finish()
@@ -149,7 +149,7 @@ fn check_struct_shorthand_initialization(
             let field_expr = expr.syntax().text().to_string();
             let field_name_is_tup_index = name_ref.as_tuple_field().is_some();
             if field_name == field_expr && !field_name_is_tup_index {
-                let mut edit_builder = TextEditBuilder::default();
+                let mut edit_builder = TextEdit::builder();
                 edit_builder.delete(record_field.syntax().text_range());
                 edit_builder.insert(record_field.syntax().text_range().start(), field_name);
                 let edit = edit_builder.finish();
diff --git a/crates/ra_ide/src/diagnostics/diagnostics_with_fix.rs b/crates/ra_ide/src/diagnostics/diagnostics_with_fix.rs
index f7c73773f3a..88e593e0039 100644
--- a/crates/ra_ide/src/diagnostics/diagnostics_with_fix.rs
+++ b/crates/ra_ide/src/diagnostics/diagnostics_with_fix.rs
@@ -13,7 +13,7 @@ use ra_ide_db::{
     RootDatabase,
 };
 use ra_syntax::{algo, ast, AstNode};
-use ra_text_edit::{TextEdit, TextEditBuilder};
+use ra_text_edit::TextEdit;
 
 /// A [Diagnostic] that potentially has a fix available.
 ///
@@ -70,7 +70,7 @@ impl DiagnosticWithFix for MissingFields {
         }
 
         let edit = {
-            let mut builder = TextEditBuilder::default();
+            let mut builder = TextEdit::builder();
             algo::diff(&old_field_list.syntax(), &new_field_list.syntax())
                 .into_text_edit(&mut builder);
             builder.finish()
diff --git a/crates/ra_ide/src/join_lines.rs b/crates/ra_ide/src/join_lines.rs
index 6907c09e80c..1c881386f7d 100644
--- a/crates/ra_ide/src/join_lines.rs
+++ b/crates/ra_ide/src/join_lines.rs
@@ -23,7 +23,7 @@ pub fn join_lines(file: &SourceFile, range: TextRange) -> TextEdit {
         let syntax = file.syntax();
         let text = syntax.text().slice(range.start()..);
         let pos = match text.find_char('\n') {
-            None => return TextEditBuilder::default().finish(),
+            None => return TextEdit::builder().finish(),
             Some(pos) => pos,
         };
         TextRange::at(range.start() + pos, TextSize::of('\n'))
@@ -35,7 +35,7 @@ pub fn join_lines(file: &SourceFile, range: TextRange) -> TextEdit {
         NodeOrToken::Node(node) => node,
         NodeOrToken::Token(token) => token.parent(),
     };
-    let mut edit = TextEditBuilder::default();
+    let mut edit = TextEdit::builder();
     for token in node.descendants_with_tokens().filter_map(|it| it.into_token()) {
         let range = match range.intersect(token.text_range()) {
             Some(range) => range,
diff --git a/crates/ra_ide/src/references/rename.rs b/crates/ra_ide/src/references/rename.rs
index c8d80fcf7cb..8c1ac3c5601 100644
--- a/crates/ra_ide/src/references/rename.rs
+++ b/crates/ra_ide/src/references/rename.rs
@@ -281,7 +281,7 @@ mod tests {
         let ra_fixture_after = &trim_indent(ra_fixture_after);
         let (analysis, position) = analysis_and_position(ra_fixture_before);
         let source_change = analysis.rename(position, new_name).unwrap();
-        let mut text_edit_builder = TextEditBuilder::default();
+        let mut text_edit_builder = TextEdit::builder();
         let mut file_id: Option<FileId> = None;
         if let Some(change) = source_change {
             for edit in change.info.source_file_edits {
diff --git a/crates/ra_ssr/src/replacing.rs b/crates/ra_ssr/src/replacing.rs
index 0943244ff9f..36ced3842da 100644
--- a/crates/ra_ssr/src/replacing.rs
+++ b/crates/ra_ssr/src/replacing.rs
@@ -24,7 +24,7 @@ fn matches_to_edit_at_offset(
     relative_start: TextSize,
     rules: &[ResolvedRule],
 ) -> TextEdit {
-    let mut edit_builder = ra_text_edit::TextEditBuilder::default();
+    let mut edit_builder = TextEdit::builder();
     for m in &matches.matches {
         edit_builder.replace(
             m.range.range.checked_sub(relative_start).unwrap(),
diff --git a/crates/ra_text_edit/Cargo.toml b/crates/ra_text_edit/Cargo.toml
index dbb22335042..427862a5cc5 100644
--- a/crates/ra_text_edit/Cargo.toml
+++ b/crates/ra_text_edit/Cargo.toml
@@ -1,10 +1,9 @@
 [package]
-edition = "2018"
 name = "ra_text_edit"
-version = "0.1.0"
-authors = ["rust-analyzer developers"]
-publish = false
+version = "0.0.0"
 license = "MIT OR Apache-2.0"
+authors = ["rust-analyzer developers"]
+edition = "2018"
 
 [lib]
 doctest = false
diff --git a/crates/ra_text_edit/src/lib.rs b/crates/ra_text_edit/src/lib.rs
index d68791cf1fd..ab8cd7fd119 100644
--- a/crates/ra_text_edit/src/lib.rs
+++ b/crates/ra_text_edit/src/lib.rs
@@ -3,8 +3,6 @@
 //! `rust-analyzer` never mutates text itself and only sends diffs to clients,
 //! so `TextEdit` is the ultimate representation of the work done by
 //! rust-analyzer.
-use std::{slice, vec};
-
 pub use text_size::{TextRange, TextSize};
 
 /// `InsertDelete` -- a single "atomic" change to text
@@ -46,20 +44,24 @@ impl Indel {
 }
 
 impl TextEdit {
+    pub fn builder() -> TextEditBuilder {
+        TextEditBuilder::default()
+    }
+
     pub fn insert(offset: TextSize, text: String) -> TextEdit {
-        let mut builder = TextEditBuilder::default();
+        let mut builder = TextEdit::builder();
         builder.insert(offset, text);
         builder.finish()
     }
 
     pub fn delete(range: TextRange) -> TextEdit {
-        let mut builder = TextEditBuilder::default();
+        let mut builder = TextEdit::builder();
         builder.delete(range);
         builder.finish()
     }
 
     pub fn replace(range: TextRange, replace_with: String) -> TextEdit {
-        let mut builder = TextEditBuilder::default();
+        let mut builder = TextEdit::builder();
         builder.replace(range, replace_with);
         builder.finish()
     }
@@ -72,8 +74,8 @@ impl TextEdit {
         self.indels.is_empty()
     }
 
-    pub fn iter(&self) -> slice::Iter<'_, Indel> {
-        self.indels.iter()
+    pub fn iter(&self) -> std::slice::Iter<'_, Indel> {
+        self.into_iter()
     }
 
     pub fn apply(&self, text: &mut String) {
@@ -139,13 +141,22 @@ impl TextEdit {
 
 impl IntoIterator for TextEdit {
     type Item = Indel;
-    type IntoIter = vec::IntoIter<Self::Item>;
+    type IntoIter = std::vec::IntoIter<Indel>;
 
     fn into_iter(self) -> Self::IntoIter {
         self.indels.into_iter()
     }
 }
 
+impl<'a> IntoIterator for &'a TextEdit {
+    type Item = &'a Indel;
+    type IntoIter = std::slice::Iter<'a, Indel>;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.indels.iter()
+    }
+}
+
 impl TextEditBuilder {
     pub fn replace(&mut self, range: TextRange, replace_with: String) {
         self.indels.push(Indel::replace(range, replace_with))