diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs index 8a2902c..74c7398 100644 --- a/src/ShellCheck/Analytics.hs +++ b/src/ShellCheck/Analytics.hs @@ -1996,18 +1996,18 @@ checkQuotesInLiterals params t = readF _ expr name = do assignment <- getQuotes name - return - (if isJust assignment - && not (isParamTo parents "eval" expr) + return $ case assignment of + Just j + | not (isParamTo parents "eval" expr) && not (isQuoteFree parents expr) && not (squashesQuotes expr) - then [ - makeComment WarningC (fromJust assignment) 2089 $ + -> [ + makeComment WarningC j 2089 $ "Quotes/backslashes will be treated literally. " ++ suggestion, makeComment WarningC (getId expr) 2090 "Quotes/backslashes in this variable will not be respected." ] - else []) + _ -> [] suggestion = if supportsArrays (shellType params) then "Use an array." diff --git a/src/ShellCheck/Parser.hs b/src/ShellCheck/Parser.hs index 025fa98..0ef672f 100644 --- a/src/ShellCheck/Parser.hs +++ b/src/ShellCheck/Parser.hs @@ -2056,7 +2056,7 @@ readSimpleCommand = called "simple command" $ do firstArgument <- ignoreProblemsOf . optionMaybe . try . lookAhead $ readCmdWord suffix <- option [] $ getParser readCmdSuffix -- If `export` or other modifier commands are called with `builtin` we have to look at the first argument - (if isCommand ["builtin"] cmd && isJust firstArgument then fromJust firstArgument else cmd) [ + (if isCommand ["builtin"] cmd then fromMaybe cmd firstArgument else cmd) [ (["declare", "export", "local", "readonly", "typeset"], readModifierSuffix), (["time"], readTimeSuffix), (["let"], readLetSuffix),