diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py
index b59295b0ed7..a0881cc222b 100644
--- a/lib/ansible/executor/task_executor.py
+++ b/lib/ansible/executor/task_executor.py
@@ -279,29 +279,30 @@ class TaskExecutor:
                 # This gets the information to check whether the name field
                 # contains a template that we can squash for
                 template_no_item = template_with_item = None
-                if templar._contains_vars(name):
-                    variables['item'] = '\0$'
-                    template_no_item = templar.template(name, variables, cache=False)
-                    variables['item'] = '\0@'
-                    template_with_item = templar.template(name, variables, cache=False)
-                    del variables['item']
+                if name:
+                    if templar._contains_vars(name):
+                        variables['item'] = '\0$'
+                        template_no_item = templar.template(name, variables, cache=False)
+                        variables['item'] = '\0@'
+                        template_with_item = templar.template(name, variables, cache=False)
+                        del variables['item']
 
-                # Check if the user is doing some operation that doesn't take
-                # name/pkg or the name/pkg field doesn't have any variables
-                # and thus the items can't be squashed
-                if name and (template_no_item != template_with_item):
-                    for item in items:
-                        variables['item'] = item
-                        if self._task.evaluate_conditional(templar, variables):
-                            new_item = templar.template(name, cache=False)
-                            final_items.append(new_item)
-                    self._task.args['name'] = final_items
-                    # Wrap this in a list so that the calling function loop
-                    # executes exactly once
-                    return [final_items]
-                else:
-                    # Restore the name parameter
-                    self._task.args['name'] = name
+                    # Check if the user is doing some operation that doesn't take
+                    # name/pkg or the name/pkg field doesn't have any variables
+                    # and thus the items can't be squashed
+                    if template_no_item != template_with_item:
+                        for item in items:
+                            variables['item'] = item
+                            if self._task.evaluate_conditional(templar, variables):
+                                new_item = templar.template(name, cache=False)
+                                final_items.append(new_item)
+                        self._task.args['name'] = final_items
+                        # Wrap this in a list so that the calling function loop
+                        # executes exactly once
+                        return [final_items]
+                    else:
+                        # Restore the name parameter
+                        self._task.args['name'] = name
             #elif:
                 # Right now we only optimize single entries.  In the future we
                 # could optimize more types: