Only warn once per unused variable name.

This commit is contained in:
Vidar Holen 2014-09-07 12:55:08 -07:00
parent 9f3802138f
commit 40ce949a56
1 changed files with 11 additions and 8 deletions

View File

@ -2344,7 +2344,7 @@ prop_checkUnused18= verifyNotTree checkUnusedAssignments "a=1; arr=( [$a]=42 );
prop_checkUnused19= verifyNotTree checkUnusedAssignments "a=1; let b=a+1; echo $b" prop_checkUnused19= verifyNotTree checkUnusedAssignments "a=1; let b=a+1; echo $b"
prop_checkUnused20= verifyNotTree checkUnusedAssignments "a=1; PS1='$a'" prop_checkUnused20= verifyNotTree checkUnusedAssignments "a=1; PS1='$a'"
prop_checkUnused21= verifyNotTree checkUnusedAssignments "a=1; trap 'echo $a' INT" prop_checkUnused21= verifyNotTree checkUnusedAssignments "a=1; trap 'echo $a' INT"
checkUnusedAssignments params t = snd $ runWriter (mapM_ checkAssignment flow) checkUnusedAssignments params t = execWriter (mapM_ warnFor unused)
where where
flow = variableFlow params flow = variableFlow params
references = foldl (flip ($)) defaultMap (map insertRef flow) references = foldl (flip ($)) defaultMap (map insertRef flow)
@ -2352,13 +2352,16 @@ checkUnusedAssignments params t = snd $ runWriter (mapM_ checkAssignment flow)
Map.insert (stripSuffix name) () Map.insert (stripSuffix name) ()
insertRef _ = id insertRef _ = id
checkAssignment (Assignment (_, token, name, _)) | isVariableName name = assignments = foldl (flip ($)) Map.empty (map insertAssignment flow)
case Map.lookup name references of insertAssignment (Assignment (_, token, name, _)) | isVariableName name =
Just _ -> return () Map.insert name token
Nothing -> insertAssignment _ = id
info (getId token) 2034 $
name ++ " appears unused. Verify it or export it." unused = Map.assocs $ Map.difference assignments references
checkAssignment _ = return ()
warnFor (name, token) =
info (getId token) 2034 $
name ++ " appears unused. Verify it or export it."
stripSuffix = takeWhile isVariableChar stripSuffix = takeWhile isVariableChar
defaultMap = Map.fromList $ zip internalVariables $ repeat () defaultMap = Map.fromList $ zip internalVariables $ repeat ()