From 84ca7711c45da3083b18a5643460b620380ac143 Mon Sep 17 00:00:00 2001 From: Tito Sacchi <tito.sakki@gmail.com> Date: Fri, 1 Nov 2019 14:28:00 +0100 Subject: [PATCH] Make command-specific checks act on `builtin ...` Now if shellchecks encounters a command like `builtin cmd ...` it applies the same check that would be applied to `cmd ...`. --- src/ShellCheck/Checks/Commands.hs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ShellCheck/Checks/Commands.hs b/src/ShellCheck/Checks/Commands.hs index 441e43f..4841ddd 100644 --- a/src/ShellCheck/Checks/Commands.hs +++ b/src/ShellCheck/Checks/Commands.hs @@ -105,12 +105,16 @@ buildCommandMap = foldl' addCheck Map.empty checkCommand :: Map.Map CommandName (Token -> Analysis) -> Token -> Analysis -checkCommand map t@(T_SimpleCommand id _ (cmd:rest)) = fromMaybe (return ()) $ do +checkCommand map t@(T_SimpleCommand id cmdPrefix (cmd:rest)) = fromMaybe (return ()) $ do name <- getLiteralString cmd return $ if '/' `elem` name then Map.findWithDefault nullCheck (Basename $ basename name) map t + else if name == "builtin" && not (null rest) then + let t' = T_SimpleCommand id cmdPrefix rest + selectedBuiltin = fromMaybe "" $ getLiteralString . head $ rest + in Map.findWithDefault nullCheck (Exactly selectedBuiltin) map t' else do Map.findWithDefault nullCheck (Exactly name) map t Map.findWithDefault nullCheck (Basename name) map t