diff --git a/ShellCheck/Analytics.hs b/ShellCheck/Analytics.hs index 634ab1c157179d1d54886fe43b5760a73a685aec..6ab59ed072cdb0a98feeb9cd24abac3d0100740f 100644 --- a/ShellCheck/Analytics.hs +++ b/ShellCheck/Analytics.hs @@ -2071,6 +2071,7 @@ prop_checkUnused30= verifyTree checkUnusedAssignments "let a=1" prop_checkUnused31= verifyTree checkUnusedAssignments "let 'a=1'" prop_checkUnused32= verifyTree checkUnusedAssignments "let a=b=c; echo $a" prop_checkUnused33= verifyNotTree checkUnusedAssignments "a=foo; [[ foo =~ ^{$a}$ ]]" +prop_checkUnused34= verifyNotTree checkUnusedAssignments "foo=1; (( t = foo )); echo $t" checkUnusedAssignments params t = execWriter (mapM_ warnFor unused) where flow = variableFlow params diff --git a/ShellCheck/AnalyzerLib.hs b/ShellCheck/AnalyzerLib.hs index 6f02040f6a876099f6ebdac5b1f8e49e5acc9732..681345958aadaba0144550a409abc47db6e14c02 100644 --- a/ShellCheck/AnalyzerLib.hs +++ b/ShellCheck/AnalyzerLib.hs @@ -520,7 +520,7 @@ getReferencedVariables parents t = isDereferencing = (`elem` ["-eq", "-ne", "-lt", "-le", "-gt", "-ge"]) isArithmeticAssignment t = case getPath parents t of - this: TA_Assignment _ "=" _ _ :_ -> True + this: TA_Assignment _ "=" lhs _ :_ -> lhs == t _ -> False dataTypeFrom defaultType v = (case v of T_Array {} -> DataArray; _ -> defaultType) $ SourceFrom [v]