From ef51ed3950a0a516d6fe149b0c0183e0bad941d4 Mon Sep 17 00:00:00 2001 From: "Joseph C. Sible" Date: Sat, 8 Feb 2020 14:09:17 -0500 Subject: [PATCH] Simplify literalEquals --- src/ShellCheck/Analytics.hs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/ShellCheck/Analytics.hs b/src/ShellCheck/Analytics.hs index 8a2902c..d0db0f7 100644 --- a/src/ShellCheck/Analytics.hs +++ b/src/ShellCheck/Analytics.hs @@ -3052,11 +3052,9 @@ checkArrayAssignmentIndices params root = T_NormalWord _ parts -> let literalEquals = do - part <- parts - (id, str) <- case part of - T_Literal id str -> [(id,str)] - _ -> [] - guard $ '=' `elem` str && hasNumericIndex str + T_Literal id str <- parts + let (before, after) = break ('=' ==) str + guard $ all isDigit before && not (null after) return $ warnWithFix id 2191 "The = here is literal. To assign by index, use ( [index]=value ) with no spaces. To keep as literal, quote it." (surroundWidth id params "\"") in if null literalEquals && isAssociative @@ -3064,8 +3062,6 @@ checkArrayAssignmentIndices params root = else sequence_ literalEquals _ -> return () - where - hasNumericIndex str = all isDigit $ takeWhile (/= '=') str prop_checkUnmatchableCases1 = verify checkUnmatchableCases "case foo in bar) true; esac"