Recognize declare -A statements when value is inlined.

This commit is contained in:
Vidar Holen 2016-06-26 14:57:52 -07:00
parent eb2472ada8
commit 07fd5724b8
2 changed files with 7 additions and 1 deletions

View File

@ -262,6 +262,11 @@ getAssociativeArrays t =
let flags = getAllFlags t
guard $ elem "A" $ map snd flags
let args = map fst . filter ((==) "" . snd) $ flags
let names = mapMaybe getLiteralString args
let names = mapMaybe (getLiteralStringExt nameAssignments) args
return $ tell names
f _ = return ()
nameAssignments t =
case t of
T_Assignment _ _ name _ _ -> return name
otherwise -> Nothing

View File

@ -2120,6 +2120,7 @@ prop_checkUnassignedReferences21= verifyTree checkUnassignedReferences "echo ${#
prop_checkUnassignedReferences22= verifyNotTree checkUnassignedReferences "echo ${!os*}"
prop_checkUnassignedReferences23= verifyTree checkUnassignedReferences "declare -a foo; foo[bar]=42;"
prop_checkUnassignedReferences24= verifyNotTree checkUnassignedReferences "declare -A foo; foo[bar]=42;"
prop_checkUnassignedReferences25= verifyNotTree checkUnassignedReferences "declare -A foo=(); foo[bar]=42;"
checkUnassignedReferences params t = warnings
where
(readMap, writeMap) = execState (mapM tally $ variableFlow params) (Map.empty, Map.empty)