diff --git a/ShellCheck/ASTLib.hs b/ShellCheck/ASTLib.hs index f0c54fe..ccf183e 100644 --- a/ShellCheck/ASTLib.hs +++ b/ShellCheck/ASTLib.hs @@ -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 diff --git a/ShellCheck/Analytics.hs b/ShellCheck/Analytics.hs index 1afa9b4..9dfe2cb 100644 --- a/ShellCheck/Analytics.hs +++ b/ShellCheck/Analytics.hs @@ -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)