Treat typeset similar to declare (fixes #2354)
This commit is contained in:
parent
0d128dd918
commit
788aee1b7c
|
@ -2380,6 +2380,7 @@ prop_checkUnused46= verifyTree checkUnusedAssignments "readonly foo=(bar)"
|
||||||
prop_checkUnused47= verifyNotTree checkUnusedAssignments "a=1; alias hello='echo $a'"
|
prop_checkUnused47= verifyNotTree checkUnusedAssignments "a=1; alias hello='echo $a'"
|
||||||
prop_checkUnused48= verifyNotTree checkUnusedAssignments "_a=1"
|
prop_checkUnused48= verifyNotTree checkUnusedAssignments "_a=1"
|
||||||
prop_checkUnused49= verifyNotTree checkUnusedAssignments "declare -A array; key=a; [[ -v array[$key] ]]"
|
prop_checkUnused49= verifyNotTree checkUnusedAssignments "declare -A array; key=a; [[ -v array[$key] ]]"
|
||||||
|
prop_checkUnused50= verifyNotTree checkUnusedAssignments "foofunc() { :; }; typeset -fx foofunc"
|
||||||
|
|
||||||
checkUnusedAssignments params t = execWriter (mapM_ warnFor unused)
|
checkUnusedAssignments params t = execWriter (mapM_ warnFor unused)
|
||||||
where
|
where
|
||||||
|
|
|
@ -571,14 +571,12 @@ isClosingFileOp op =
|
||||||
-- Consider 'export/declare -x' a reference, since it makes the var available
|
-- Consider 'export/declare -x' a reference, since it makes the var available
|
||||||
getReferencedVariableCommand base@(T_SimpleCommand _ _ (T_NormalWord _ (T_Literal _ x:_):rest)) =
|
getReferencedVariableCommand base@(T_SimpleCommand _ _ (T_NormalWord _ (T_Literal _ x:_):rest)) =
|
||||||
case x of
|
case x of
|
||||||
|
"declare" -> forDeclare
|
||||||
|
"typeset" -> forDeclare
|
||||||
|
|
||||||
"export" -> if "f" `elem` flags
|
"export" -> if "f" `elem` flags
|
||||||
then []
|
then []
|
||||||
else concatMap getReference rest
|
else concatMap getReference rest
|
||||||
"declare" -> if
|
|
||||||
any (`elem` flags) ["x", "p"] &&
|
|
||||||
(not $ any (`elem` flags) ["f", "F"])
|
|
||||||
then concatMap getReference rest
|
|
||||||
else []
|
|
||||||
"local" -> if "x" `elem` flags
|
"local" -> if "x" `elem` flags
|
||||||
then concatMap getReference rest
|
then concatMap getReference rest
|
||||||
else []
|
else []
|
||||||
|
@ -589,6 +587,13 @@ getReferencedVariableCommand base@(T_SimpleCommand _ _ (T_NormalWord _ (T_Litera
|
||||||
"alias" -> [(base, token, name) | token <- rest, name <- getVariablesFromLiteralToken token]
|
"alias" -> [(base, token, name) | token <- rest, name <- getVariablesFromLiteralToken token]
|
||||||
_ -> []
|
_ -> []
|
||||||
where
|
where
|
||||||
|
forDeclare =
|
||||||
|
if
|
||||||
|
any (`elem` flags) ["x", "p"] &&
|
||||||
|
(not $ any (`elem` flags) ["f", "F"])
|
||||||
|
then concatMap getReference rest
|
||||||
|
else []
|
||||||
|
|
||||||
getReference t@(T_Assignment _ _ name _ value) = [(t, t, name)]
|
getReference t@(T_Assignment _ _ name _ value) = [(t, t, name)]
|
||||||
getReference t@(T_NormalWord _ [T_Literal _ name]) | not ("-" `isPrefixOf` name) = [(t, t, name)]
|
getReference t@(T_NormalWord _ [T_Literal _ name]) | not ("-" `isPrefixOf` name) = [(t, t, name)]
|
||||||
getReference _ = []
|
getReference _ = []
|
||||||
|
@ -628,8 +633,8 @@ getModifiedVariableCommand base@(T_SimpleCommand id cmdPrefix (T_NormalWord _ (T
|
||||||
"export" ->
|
"export" ->
|
||||||
if "f" `elem` flags then [] else concatMap getModifierParamString rest
|
if "f" `elem` flags then [] else concatMap getModifierParamString rest
|
||||||
|
|
||||||
"declare" -> if any (`elem` flags) ["F", "f", "p"] then [] else declaredVars
|
"declare" -> forDeclare
|
||||||
"typeset" -> declaredVars
|
"typeset" -> forDeclare
|
||||||
|
|
||||||
"local" -> concatMap getModifierParamString rest
|
"local" -> concatMap getModifierParamString rest
|
||||||
"readonly" ->
|
"readonly" ->
|
||||||
|
@ -661,6 +666,8 @@ getModifiedVariableCommand base@(T_SimpleCommand id cmdPrefix (T_NormalWord _ (T
|
||||||
T_NormalWord id1 [T_DoubleQuoted id2 [T_Literal id3 (stripEquals s)]]
|
T_NormalWord id1 [T_DoubleQuoted id2 [T_Literal id3 (stripEquals s)]]
|
||||||
stripEqualsFrom t = t
|
stripEqualsFrom t = t
|
||||||
|
|
||||||
|
forDeclare = if any (`elem` flags) ["F", "f", "p"] then [] else declaredVars
|
||||||
|
|
||||||
declaredVars = concatMap (getModifierParam defaultType) rest
|
declaredVars = concatMap (getModifierParam defaultType) rest
|
||||||
where
|
where
|
||||||
defaultType = if any (`elem` flags) ["a", "A"] then DataArray else DataString
|
defaultType = if any (`elem` flags) ["a", "A"] then DataArray else DataString
|
||||||
|
|
Loading…
Reference in New Issue