]> git.lizzy.rs Git - rust.git/commitdiff
review fixes
authorBernardo <berublan@gmail.com>
Wed, 23 Jan 2019 19:43:35 +0000 (20:43 +0100)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Sat, 26 Jan 2019 08:46:37 +0000 (11:46 +0300)
crates/ra_vfs/src/io.rs
crates/ra_vfs/src/lib.rs
crates/ra_vfs/tests/vfs.rs

index 335f4f2e1f7e29e6e511a2866ba976b5724d759f..83a021c2fafadb5e412f61bbdabd55f138713292 100644 (file)
@@ -50,7 +50,6 @@ pub enum TaskResult {
     AddRoot(AddRootResult),
     HandleChange(WatcherChange),
     LoadChange(WatcherChangeData),
-    NoOp,
 }
 
 impl fmt::Debug for TaskResult {
@@ -59,7 +58,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
             TaskResult::AddRoot(..) => f.write_str("TaskResult::AddRoot(..)"),
             TaskResult::HandleChange(c) => write!(f, "TaskResult::HandleChange({:?})", c),
             TaskResult::LoadChange(c) => write!(f, "TaskResult::LoadChange({:?})", c),
-            TaskResult::NoOp => f.write_str("TaskResult::NoOp"),
         }
     }
 }
@@ -78,7 +76,7 @@ pub(crate) fn start() -> Worker {
             thread_worker::spawn("vfs", 128, move |input_receiver, output_sender| {
                 input_receiver
                     .into_iter()
-                    .map(|t| handle_task(t, &watcher_clone))
+                    .filter_map(|t| handle_task(t, &watcher_clone))
                     .try_for_each(|it| output_sender.send(it))
                     .unwrap()
             });
@@ -118,18 +116,12 @@ fn watch(
     filter_entry: &RootFilter,
     emit_for_existing: bool,
 ) {
-    let mut watcher = watcher.lock();
-    let watcher = match *watcher {
-        Some(ref mut w) => w,
-        None => {
-            // watcher dropped or couldn't start
-            return;
-        }
-    };
-    watcher.watch_recursive(dir, filter_entry, emit_for_existing)
+    if let Some(watcher) = watcher.lock().as_mut() {
+        watcher.watch_recursive(dir, filter_entry, emit_for_existing)
+    }
 }
 
-fn handle_task(task: Task, watcher: &Arc<Mutex<Option<Watcher>>>) -> TaskResult {
+fn handle_task(task: Task, watcher: &Arc<Mutex<Option<Watcher>>>) -> Option<TaskResult> {
     match task {
         Task::AddRoot {
             root,
@@ -145,22 +137,19 @@ fn handle_task(task: Task, watcher: &Arc<Mutex<Option<Watcher>>>) -> TaskResult
                 nested_roots.as_slice(),
             );
             log::debug!("... loaded {}", path.as_path().display());
-            TaskResult::AddRoot(AddRootResult { root, files })
+            Some(TaskResult::AddRoot(AddRootResult { root, files }))
         }
         Task::HandleChange(change) => {
             // forward as is because Vfs has to decide if we should load it
-            TaskResult::HandleChange(change)
+            Some(TaskResult::HandleChange(change))
         }
         Task::LoadChange(change) => {
             log::debug!("loading {:?} ...", change);
-            match load_change(change) {
-                Some(data) => TaskResult::LoadChange(data),
-                None => TaskResult::NoOp,
-            }
+            load_change(change).map(TaskResult::LoadChange)
         }
         Task::Watch { dir, root_filter } => {
             watch(watcher, &dir, root_filter.as_ref(), true);
-            TaskResult::NoOp
+            None
         }
     }
 }
index bcff7928b7933756f1214a4a406efe522d7d2c47..f6b45c18a7f2d63322b6133fe7eca2abe364a78c 100644 (file)
@@ -259,7 +259,6 @@ pub fn handle_task(&mut self, task: io::TaskResult) {
                     }
                 }
             },
-            TaskResult::NoOp => {}
         }
     }
 
index d3271570a9701bd5bbdf1ee26728e142f50030cd..bf44e97c579dd10831d2d121d495fce949dee6b1 100644 (file)
@@ -117,7 +117,7 @@ fn test_vfs_works() -> std::io::Result<()> {
 
     fs::create_dir_all(dir.path().join("a/sub1/sub2")).unwrap();
     fs::write(dir.path().join("a/sub1/sub2/new.rs"), "new hello").unwrap();
-    process_tasks(&mut vfs, 4);
+    process_tasks(&mut vfs, 3);
     assert_match!(
         vfs.commit_changes().as_slice(),
         [VfsChange::AddFile { text, path, .. }],