From facf0d1e27185861f7ede9ac1bd9803b440d6c77 Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Sun, 5 Apr 2020 21:59:27 -0400 Subject: [PATCH] Write getLiteralArgs with foldr and without fromMaybe or monads --- src/ShellCheck/Checks/ShellSupport.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ShellCheck/Checks/ShellSupport.hs b/src/ShellCheck/Checks/ShellSupport.hs index 49d3212..de5f78c 100644 --- a/src/ShellCheck/Checks/ShellSupport.hs +++ b/src/ShellCheck/Checks/ShellSupport.hs @@ -289,10 +289,11 @@ checkBashisms = ForShell [Sh, Dash] $ \t -> do -- Get the literal options from a list of arguments, -- up until the first non-literal one getLiteralArgs :: [Token] -> [(Id, String)] - getLiteralArgs (first:rest) = fromMaybe [] $ do - str <- getLiteralString first - return $ (getId first, str) : getLiteralArgs rest - getLiteralArgs [] = [] + getLiteralArgs = foldr go [] + where + go first rest = case getLiteralString first of + Just str -> (getId first, str) : rest + Nothing -> [] -- Check a flag-option pair (such as -o errexit) checkOptions (flag@(fid,flag') : opt@(oid,opt') : rest)