diff --git a/lib/yap/shell/evaluation.rb b/lib/yap/shell/evaluation.rb
index <HASH>..<HASH> 100644
--- a/lib/yap/shell/evaluation.rb
+++ b/lib/yap/shell/evaluation.rb
@@ -314,12 +314,14 @@ module Yap::Shell
 
     def process_ArgumentNode(node)
       if node.single_quoted?
-        "'#{node.lvalue}'"
+        debug_visit(node, 'single quoted argument, performing no expansion')
+        ["'#{node.lvalue}'"]
       elsif node.double_quoted?
-        variable_expand(node.lvalue)
+        debug_visit(node, 'double quoted argument, performing variable expansion')
+        [variable_expand(node.lvalue)]
       else
-        # TODO: refactor so this doesn't require a call to join.
-        shell_expand(node.lvalue, escape_directory_expansions: false).join(' ')
+        debug_visit(node, 'unquoted argument, performing shell expansion')
+        shell_expand(node.lvalue, escape_directory_expansions: false)
       end
     end
Consistently return an array for process_ArgumentNode.

This resolves an issue where "ls *.gem" was failing when "ls" was assigned as an alias, e.g.: "alias ls='ls -G'"