Only warn once per unused variable name.
This commit is contained in:
parent
9f3802138f
commit
40ce949a56
|
@ -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 ()
|
||||||
|
|
Loading…
Reference in New Issue