From 6f8a79e4b97d92497d198ce3f6e4d5b108f2b04d Mon Sep 17 00:00:00 2001
From: Xavier L'Heureux <xavier.lheureux@icloud.com>
Date: Tue, 12 Feb 2019 17:07:46 -0500
Subject: [PATCH] WIP clippy

---
 src/lib/builtins/source.rs                        |  1 -
 src/lib/parser/pipelines/collector.rs             |  9 +++++----
 src/lib/parser/shell_expand/mod.rs                |  2 +-
 .../parser/shell_expand/words/methods/arrays.rs   |  4 ++--
 src/lib/parser/shell_expand/words/mod.rs          | 15 +++++++--------
 5 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/src/lib/builtins/source.rs b/src/lib/builtins/source.rs
index f9371066..650e8c18 100644
--- a/src/lib/builtins/source.rs
+++ b/src/lib/builtins/source.rs
@@ -15,7 +15,6 @@ pub(crate) fn source(shell: &mut Shell, arguments: &[small::String]) -> Result<(
                         for command in command_list.lines() {
                             shell.on_command(command);
                         }
-                        ()
                     })
             } else {
                 Err(format!("ion: failed to open {}\n", argument))
diff --git a/src/lib/parser/pipelines/collector.rs b/src/lib/parser/pipelines/collector.rs
index 835d6bc2..fe40dee5 100644
--- a/src/lib/parser/pipelines/collector.rs
+++ b/src/lib/parser/pipelines/collector.rs
@@ -82,13 +82,14 @@ impl<'a> Collector<'a> {
         let arg = self.arg(bytes)?;
         match arg {
             Some(file) => {
-                outputs.as_mut().map(|o| {
+                if let Some(o) = outputs.as_mut() {
                     o.push(Redirection {
                         from,
                         file: file.into(),
                         append,
-                    })
-                });
+                    });
+                }
+
                 Ok(())
             }
             None => Err("expected file argument after redirection for output"),
@@ -411,7 +412,7 @@ impl<'a> Collector<'a> {
                 // We return an inclusive range to keep the quote type intact
                 b'"' => {
                     bytes.next();
-                    return Ok(&self.data[start..i + 1]);
+                    return Ok(&self.data[start..=i]);
                 }
                 _ => (),
             }
diff --git a/src/lib/parser/shell_expand/mod.rs b/src/lib/parser/shell_expand/mod.rs
index 05b2b7b5..a130a0f1 100644
--- a/src/lib/parser/shell_expand/mod.rs
+++ b/src/lib/parser/shell_expand/mod.rs
@@ -722,7 +722,7 @@ pub(crate) fn expand_tokens<E: Expander>(
         }
         expanded_words
     } else {
-        array![]
+        Array::new()
     }
 }
 
diff --git a/src/lib/parser/shell_expand/words/methods/arrays.rs b/src/lib/parser/shell_expand/words/methods/arrays.rs
index f590fde6..ecd1e097 100644
--- a/src/lib/parser/shell_expand/words/methods/arrays.rs
+++ b/src/lib/parser/shell_expand/words/methods/arrays.rs
@@ -172,7 +172,7 @@ impl<'a> ArrayMethod<'a> {
         } else if is_expression(self.variable) {
             expand_string(self.variable, expand_func, false)
         } else {
-            array![]
+            Array::new()
         }
     }
 
@@ -203,7 +203,7 @@ impl<'a> ArrayMethod<'a> {
 
         res.unwrap_or_else(|m| {
             eprintln!("ion: {}: {}", self.method, m);
-            array![]
+            Array::new()
         })
     }
 
diff --git a/src/lib/parser/shell_expand/words/mod.rs b/src/lib/parser/shell_expand/words/mod.rs
index e0f2b2bb..c60650ab 100644
--- a/src/lib/parser/shell_expand/words/mod.rs
+++ b/src/lib/parser/shell_expand/words/mod.rs
@@ -169,7 +169,7 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> {
         let mut start = self.read;
         let mut level = 0;
         let mut elements = Vec::new();
-        while let Some(character) = iterator.next() {
+        for character in iterator {
             match character {
                 _ if self.flags.contains(Flags::BACKSL) => self.flags ^= Flags::BACKSL,
                 b'\\' => self.flags ^= Flags::BACKSL,
@@ -480,7 +480,7 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> {
     {
         self.read += 1;
         let start = self.read;
-        while let Some(character) = iterator.next() {
+        for character in iterator {
             if let b']' = character {
                 let value =
                     expand_string(&self.data[start..self.read], self.expanders, false).join(" ");
@@ -630,7 +630,7 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> {
         I: Iterator<Item = u8>,
     {
         let start = self.read;
-        while let Some(character) = iterator.next() {
+        for character in iterator {
             if character == b'}' {
                 let output = &self.data[start..self.read];
                 self.read += 1;
@@ -650,12 +650,11 @@ impl<'a, E: Expander + 'a> WordIterator<'a, E> {
     {
         let start = self.read;
         self.read += 1;
-        while let Some(character) = iterator.next() {
-            if character == b' ' {
-                self.read += 1;
-            } else {
-                return WordToken::Whitespace(&self.data[start..self.read]);
+        for character in iterator {
+            if character != b' ' {
+                break;
             }
+            self.read += 1;
         }
 
         WordToken::Whitespace(&self.data[start..self.read])
-- 
GitLab