From 489c3a4ddf221b60c9e2f0476e38f96f08d88174 Mon Sep 17 00:00:00 2001
From: Vidar Holen <spam@vidarholen.net>
Date: Sun, 20 Jan 2019 15:06:33 -0800
Subject: [PATCH] Fix SC2164 always saying 'cd' even when using 'pushd'

---
 src/ShellCheck/Analytics.hs | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs
index 3265ab6..4e7b9c6 100644
--- a/src/ShellCheck/Analytics.hs
+++ b/src/ShellCheck/Analytics.hs
@@ -2605,15 +2605,17 @@ checkUncheckedCdPushdPopd params root =
         []
     else execWriter $ doAnalysis checkElement root
   where
-    checkElement t@T_SimpleCommand {} =
-        when(name t `elem` ["cd", "pushd", "popd"]
+    checkElement t@T_SimpleCommand {} = do
+        let name = getName t
+        when(name `elem` ["cd", "pushd", "popd"]
             && not (isSafeDir t)
-            && not (name t `elem` ["pushd", "popd"] && ("n" `elem` map snd (getAllFlags t)))
+            && not (name `elem` ["pushd", "popd"] && ("n" `elem` map snd (getAllFlags t)))
             && not (isCondition $ getPath (parentMap params) t)) $
-                warnWithFix (getId t) 2164 "Use 'cd ... || exit' or 'cd ... || return' in case cd fails."
+                warnWithFix (getId t) 2164
+                    ("Use '" ++ name ++ " ... || exit' or '" ++ name ++ " ... || return' in case " ++ name ++ " fails.")
                     (fixWith [replaceEnd (getId t) params 0 " || exit"])
     checkElement _ = return ()
-    name t = fromMaybe "" $ getCommandName t
+    getName t = fromMaybe "" $ getCommandName t
     isSafeDir t = case oversimplify t of
           [_, ".."] -> True;
           _ -> False