From 8f31ae913b48438feb39336e5547b806f0d6eb36 Mon Sep 17 00:00:00 2001
From: Vidar Holen <spam@vidarholen.net>
Date: Mon, 3 Jul 2017 10:36:51 -0700
Subject: [PATCH] Skip command argument when checking trap signal specs (#946)

---
 ShellCheck/ASTLib.hs          | 5 +++++
 ShellCheck/Checks/Commands.hs | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/ShellCheck/ASTLib.hs b/ShellCheck/ASTLib.hs
index 8e5b8f6..702a98b 100644
--- a/ShellCheck/ASTLib.hs
+++ b/ShellCheck/ASTLib.hs
@@ -119,6 +119,11 @@ getLeadingFlags = getFlagsUntil (\x -> x == "--" || (not $ "-" `isPrefixOf` x))
 -- Check if a command has a flag.
 hasFlag cmd str = str `elem` (map snd $ getAllFlags cmd)
 
+-- Is this token a word that starts with a dash?
+isFlag token =
+    case getWordParts token of
+        T_Literal _ ('-':_) : _ -> True
+        _ -> False
 
 -- Given a T_DollarBraced, return a simplified version of the string contents.
 bracedString (T_DollarBraced _ l) = concat $ oversimplify l
diff --git a/ShellCheck/Checks/Commands.hs b/ShellCheck/Checks/Commands.hs
index 80ffed9..ead8efa 100644
--- a/ShellCheck/Checks/Commands.hs
+++ b/ShellCheck/Checks/Commands.hs
@@ -415,9 +415,13 @@ prop_checkNonportableSignals3 = verifyNot checkNonportableSignals "trap f 14"
 prop_checkNonportableSignals4 = verify checkNonportableSignals "trap f SIGKILL"
 prop_checkNonportableSignals5 = verify checkNonportableSignals "trap f 9"
 prop_checkNonportableSignals6 = verify checkNonportableSignals "trap f stop"
+prop_checkNonportableSignals7 = verifyNot checkNonportableSignals "trap 'stop' int"
 checkNonportableSignals = CommandCheck (Exactly "trap") (f . arguments)
   where
-    f = mapM_ check
+    f args = case args of
+        first:rest -> unless (isFlag first) $ mapM_ check rest
+        _ -> return ()
+
     check param = potentially $ do
         str <- getLiteralString param
         let id = getId param