mirror of
https://github.com/koalaman/shellcheck
synced 2025-07-05 20:41:35 -07:00
Suppress SC2119/SC2120 for ${1:-default} (fixes #2023)
This commit is contained in:
parent
c553288085
commit
7fc992d0dc
1 changed files with 20 additions and 1 deletions
|
@ -2825,6 +2825,8 @@ prop_checkUnpassedInFunctions11 = verifyNotTree checkUnpassedInFunctions "foo()
|
||||||
prop_checkUnpassedInFunctions12 = verifyNotTree checkUnpassedInFunctions "foo() { echo ${!var*}; }; foo;"
|
prop_checkUnpassedInFunctions12 = verifyNotTree checkUnpassedInFunctions "foo() { echo ${!var*}; }; foo;"
|
||||||
prop_checkUnpassedInFunctions13 = verifyNotTree checkUnpassedInFunctions "# shellcheck disable=SC2120\nfoo() { echo $1; }\nfoo\n"
|
prop_checkUnpassedInFunctions13 = verifyNotTree checkUnpassedInFunctions "# shellcheck disable=SC2120\nfoo() { echo $1; }\nfoo\n"
|
||||||
prop_checkUnpassedInFunctions14 = verifyTree checkUnpassedInFunctions "foo() { echo $#; }; foo"
|
prop_checkUnpassedInFunctions14 = verifyTree checkUnpassedInFunctions "foo() { echo $#; }; foo"
|
||||||
|
prop_checkUnpassedInFunctions15 = verifyNotTree checkUnpassedInFunctions "foo() { echo ${1-x}; }; foo"
|
||||||
|
prop_checkUnpassedInFunctions16 = verifyNotTree checkUnpassedInFunctions "foo() { echo ${1:-x}; }; foo"
|
||||||
checkUnpassedInFunctions params root =
|
checkUnpassedInFunctions params root =
|
||||||
execWriter $ mapM_ warnForGroup referenceGroups
|
execWriter $ mapM_ warnForGroup referenceGroups
|
||||||
where
|
where
|
||||||
|
@ -2841,9 +2843,10 @@ checkUnpassedInFunctions params root =
|
||||||
case x of
|
case x of
|
||||||
Assignment (_, _, str, _) -> isPositional str
|
Assignment (_, _, str, _) -> isPositional str
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|
||||||
isPositionalReference function x =
|
isPositionalReference function x =
|
||||||
case x of
|
case x of
|
||||||
Reference (_, t, str) -> isPositional str && t `isDirectChildOf` function
|
Reference (_, t, str) -> isPositional str && t `isDirectChildOf` function && not (hasDefaultValue t)
|
||||||
_ -> False
|
_ -> False
|
||||||
|
|
||||||
isDirectChildOf child parent = fromMaybe False $ do
|
isDirectChildOf child parent = fromMaybe False $ do
|
||||||
|
@ -2857,6 +2860,7 @@ checkUnpassedInFunctions params root =
|
||||||
referenceList :: [(String, Bool, Token)]
|
referenceList :: [(String, Bool, Token)]
|
||||||
referenceList = execWriter $
|
referenceList = execWriter $
|
||||||
doAnalysis (sequence_ . checkCommand) root
|
doAnalysis (sequence_ . checkCommand) root
|
||||||
|
|
||||||
checkCommand :: Token -> Maybe (Writer [(String, Bool, Token)] ())
|
checkCommand :: Token -> Maybe (Writer [(String, Bool, Token)] ())
|
||||||
checkCommand t@(T_SimpleCommand _ _ (cmd:args)) = do
|
checkCommand t@(T_SimpleCommand _ _ (cmd:args)) = do
|
||||||
str <- getLiteralString cmd
|
str <- getLiteralString cmd
|
||||||
|
@ -2867,6 +2871,21 @@ checkUnpassedInFunctions params root =
|
||||||
isPositional str = str == "*" || str == "@" || str == "#"
|
isPositional str = str == "*" || str == "@" || str == "#"
|
||||||
|| (all isDigit str && str /= "0" && str /= "")
|
|| (all isDigit str && str /= "0" && str /= "")
|
||||||
|
|
||||||
|
-- True if t is a variable that specifies a default value,
|
||||||
|
-- such as ${1-x} or ${1:-x}.
|
||||||
|
hasDefaultValue t =
|
||||||
|
case t of
|
||||||
|
T_DollarBraced _ True l ->
|
||||||
|
let str = concat $ oversimplify l
|
||||||
|
in isDefaultValueModifier $ getBracedModifier str
|
||||||
|
_ -> False
|
||||||
|
|
||||||
|
isDefaultValueModifier str =
|
||||||
|
case str of
|
||||||
|
'-':_ -> True
|
||||||
|
':':'-':_ -> True
|
||||||
|
_ -> False
|
||||||
|
|
||||||
isArgumentless (_, b, _) = b
|
isArgumentless (_, b, _) = b
|
||||||
referenceGroups = Map.elems $ foldr updateWith Map.empty referenceList
|
referenceGroups = Map.elems $ foldr updateWith Map.empty referenceList
|
||||||
updateWith x@(name, _, _) = Map.insertWith (++) name [x]
|
updateWith x@(name, _, _) = Map.insertWith (++) name [x]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue