]> git.lizzy.rs Git - rust.git/commitdiff
Simplify
authorAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 6 May 2020 14:39:11 +0000 (16:39 +0200)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 6 May 2020 14:39:11 +0000 (16:39 +0200)
crates/ra_assists/src/assist_ctx.rs
crates/ra_assists/src/handlers/add_function.rs
crates/ra_assists/src/lib.rs

index af6756d17bda1b3f375cb7eccc4eb3bbe81195aa..871671de2bf87953534c7c918a61b86eb7ae7b24 100644 (file)
@@ -13,7 +13,7 @@
 };
 use ra_text_edit::TextEditBuilder;
 
-use crate::{AssistFile, AssistId, AssistLabel, GroupLabel, ResolvedAssist};
+use crate::{AssistId, AssistLabel, GroupLabel, ResolvedAssist};
 
 #[derive(Clone, Debug)]
 pub(crate) struct Assist(pub(crate) Vec<AssistInfo>);
@@ -107,7 +107,7 @@ pub(crate) fn add_assist(
             let source_change = {
                 let mut edit = ActionBuilder::new(&self);
                 f(&mut edit);
-                edit.build(change_label, self.frange.file_id)
+                edit.build(change_label)
             };
             info = info.resolved(source_change)
         };
@@ -166,7 +166,7 @@ pub(crate) fn add_assist(
             let source_change = {
                 let mut edit = ActionBuilder::new(&self.ctx);
                 f(&mut edit);
-                edit.build(change_label, self.ctx.frange.file_id)
+                edit.build(change_label)
             };
             info = info.resolved(source_change)
         };
@@ -186,7 +186,7 @@ pub(crate) fn finish(self) -> Option<Assist> {
 pub(crate) struct ActionBuilder<'a, 'b> {
     edit: TextEditBuilder,
     cursor_position: Option<TextSize>,
-    file: AssistFile,
+    file: FileId,
     ctx: &'a AssistCtx<'b>,
 }
 
@@ -195,7 +195,7 @@ fn new(ctx: &'a AssistCtx<'b>) -> Self {
         Self {
             edit: TextEditBuilder::default(),
             cursor_position: None,
-            file: AssistFile::default(),
+            file: ctx.frange.file_id,
             ctx,
         }
     }
@@ -254,20 +254,16 @@ pub(crate) fn rewrite(&mut self, rewriter: SyntaxRewriter) {
         algo::diff(&node, &new).into_text_edit(&mut self.edit)
     }
 
-    pub(crate) fn set_file(&mut self, assist_file: AssistFile) {
-        self.file = assist_file
+    pub(crate) fn set_file(&mut self, assist_file: FileId) {
+        self.file = assist_file;
     }
 
-    fn build(self, change_label: String, current_file: FileId) -> SourceChange {
+    fn build(self, change_label: String) -> SourceChange {
         let edit = self.edit.finish();
         if edit.is_empty() && self.cursor_position.is_none() {
             panic!("Only call `add_assist` if the assist can be applied")
         }
-        let file = match self.file {
-            AssistFile::CurrentFile => current_file,
-            AssistFile::TargetFile(it) => it,
-        };
         SingleFileChange { label: change_label, edit, cursor_position: self.cursor_position }
-            .into_source_change(file)
+            .into_source_change(self.file)
     }
 }
index 1d9d4e638fc681851f2ebc55314534c13f03b5c4..278079665062d287b4a6e79f7ce76cebd4fca060 100644 (file)
@@ -3,9 +3,10 @@
     SyntaxKind, SyntaxNode, TextSize,
 };
 
-use crate::{Assist, AssistCtx, AssistFile, AssistId};
+use crate::{Assist, AssistCtx, AssistId};
 use ast::{edit::IndentLevel, ArgListOwner, ModuleItemOwner};
 use hir::HirDisplay;
+use ra_db::FileId;
 use rustc_hash::{FxHashMap, FxHashSet};
 
 // Assist: add_function
@@ -70,7 +71,7 @@ struct FunctionTemplate {
     insert_offset: TextSize,
     cursor_offset: TextSize,
     fn_def: ast::SourceFile,
-    file: AssistFile,
+    file: FileId,
 }
 
 struct FunctionBuilder {
@@ -78,7 +79,7 @@ struct FunctionBuilder {
     fn_name: ast::Name,
     type_params: Option<ast::TypeParamList>,
     params: ast::ParamList,
-    file: AssistFile,
+    file: FileId,
     needs_pub: bool,
 }
 
@@ -92,7 +93,7 @@ fn from_call(
         target_module: Option<hir::InFile<hir::ModuleSource>>,
     ) -> Option<Self> {
         let needs_pub = target_module.is_some();
-        let mut file = AssistFile::default();
+        let mut file = ctx.frange.file_id;
         let target = if let Some(target_module) = target_module {
             let (in_file, target) = next_space_for_fn_in_module(ctx.sema.db, target_module)?;
             file = in_file;
@@ -253,9 +254,8 @@ fn next_space_for_fn_after_call_site(expr: &ast::CallExpr) -> Option<GeneratedFu
 fn next_space_for_fn_in_module(
     db: &dyn hir::db::AstDatabase,
     module: hir::InFile<hir::ModuleSource>,
-) -> Option<(AssistFile, GeneratedFunctionTarget)> {
+) -> Option<(FileId, GeneratedFunctionTarget)> {
     let file = module.file_id.original_file(db);
-    let assist_file = AssistFile::TargetFile(file);
     let assist_item = match module.value {
         hir::ModuleSource::SourceFile(it) => {
             if let Some(last_item) = it.items().last() {
@@ -272,7 +272,7 @@ fn next_space_for_fn_in_module(
             }
         }
     };
-    Some((assist_file, assist_item))
+    Some((file, assist_item))
 }
 
 #[cfg(test)]
index 6e81ea8eec58e31b299dcfc74cfb3ab9e2cbd7b9..13ea45ec7cc99d2f552b1b0e71091a108441c916 100644 (file)
@@ -18,7 +18,7 @@ macro_rules! eprintln {
 pub mod ast_transform;
 
 use hir::Semantics;
-use ra_db::{FileId, FileRange};
+use ra_db::FileRange;
 use ra_ide_db::{source_change::SourceChange, RootDatabase};
 use ra_syntax::TextRange;
 
@@ -62,18 +62,6 @@ pub struct ResolvedAssist {
     pub source_change: SourceChange,
 }
 
-#[derive(Debug, Clone, Copy)]
-enum AssistFile {
-    CurrentFile,
-    TargetFile(FileId),
-}
-
-impl Default for AssistFile {
-    fn default() -> Self {
-        Self::CurrentFile
-    }
-}
-
 /// Return all the assists applicable at the given position.
 ///
 /// Assists are returned in the "unresolved" state, that is only labels are