Replace !!! with pattern-matching where it's easy
This commit is contained in:
parent
6e5b5401c6
commit
a786f996a1
|
@ -468,9 +468,8 @@ checkAssignAteCommand _ (T_SimpleCommand id [T_Assignment _ _ _ _ assignmentTerm
|
||||||
where
|
where
|
||||||
isCommonCommand (Just s) = s `elem` commonCommands
|
isCommonCommand (Just s) = s `elem` commonCommands
|
||||||
isCommonCommand _ = False
|
isCommonCommand _ = False
|
||||||
firstWordIsArg list = fromMaybe False $ do
|
firstWordIsArg (head:_) = isGlob head || isUnquotedFlag head
|
||||||
head <- list !!! 0
|
firstWordIsArg [] = False
|
||||||
return $ isGlob head || isUnquotedFlag head
|
|
||||||
|
|
||||||
checkAssignAteCommand _ _ = return ()
|
checkAssignAteCommand _ _ = return ()
|
||||||
|
|
||||||
|
@ -491,9 +490,7 @@ prop_checkWrongArit2 = verify checkWrongArithmeticAssignment "n=2; i=n*2"
|
||||||
checkWrongArithmeticAssignment params (T_SimpleCommand id [T_Assignment _ _ _ _ val] []) =
|
checkWrongArithmeticAssignment params (T_SimpleCommand id [T_Assignment _ _ _ _ val] []) =
|
||||||
sequence_ $ do
|
sequence_ $ do
|
||||||
str <- getNormalString val
|
str <- getNormalString val
|
||||||
match <- matchRegex regex str
|
var:op:_ <- matchRegex regex str
|
||||||
var <- match !!! 0
|
|
||||||
op <- match !!! 1
|
|
||||||
Map.lookup var references
|
Map.lookup var references
|
||||||
return . warn (getId val) 2100 $
|
return . warn (getId val) 2100 $
|
||||||
"Use $((..)) for arithmetics, e.g. i=$((i " ++ op ++ " 2))"
|
"Use $((..)) for arithmetics, e.g. i=$((i " ++ op ++ " 2))"
|
||||||
|
@ -1460,9 +1457,8 @@ prop_checkForDecimals2 = verify checkForDecimals "foo[1.2]=bar"
|
||||||
prop_checkForDecimals3 = verifyNot checkForDecimals "declare -A foo; foo[1.2]=bar"
|
prop_checkForDecimals3 = verifyNot checkForDecimals "declare -A foo; foo[1.2]=bar"
|
||||||
checkForDecimals params t@(TA_Expansion id _) = sequence_ $ do
|
checkForDecimals params t@(TA_Expansion id _) = sequence_ $ do
|
||||||
guard $ not (hasFloatingPoint params)
|
guard $ not (hasFloatingPoint params)
|
||||||
str <- getLiteralString t
|
first:rest <- getLiteralString t
|
||||||
first <- str !!! 0
|
guard $ isDigit first && '.' `elem` rest
|
||||||
guard $ isDigit first && '.' `elem` str
|
|
||||||
return $ err id 2079 "(( )) doesn't support decimals. Use bc or awk."
|
return $ err id 2079 "(( )) doesn't support decimals. Use bc or awk."
|
||||||
checkForDecimals _ _ = return ()
|
checkForDecimals _ _ = return ()
|
||||||
|
|
||||||
|
|
|
@ -1237,8 +1237,7 @@ checkSudoArgs = CommandCheck (Basename "sudo") f
|
||||||
where
|
where
|
||||||
f t = sequence_ $ do
|
f t = sequence_ $ do
|
||||||
opts <- parseOpts $ arguments t
|
opts <- parseOpts $ arguments t
|
||||||
let nonFlags = [x | ("",(x, _)) <- opts]
|
(_,(commandArg, _)) <- find (null . fst) opts
|
||||||
commandArg <- nonFlags !!! 0
|
|
||||||
command <- getLiteralString commandArg
|
command <- getLiteralString commandArg
|
||||||
guard $ command `elem` builtins
|
guard $ command `elem` builtins
|
||||||
return $ warn (getId t) 2232 $ "Can't use sudo with builtins like " ++ command ++ ". Did you want sudo sh -c .. instead?"
|
return $ warn (getId t) 2232 $ "Can't use sudo with builtins like " ++ command ++ ". Did you want sudo sh -c .. instead?"
|
||||||
|
|
|
@ -79,9 +79,8 @@ prop_checkForDecimals3 = verifyNot checkForDecimals "declare -A foo; foo[1.2]=ba
|
||||||
checkForDecimals = ForShell [Sh, Dash, BusyboxSh, Bash] f
|
checkForDecimals = ForShell [Sh, Dash, BusyboxSh, Bash] f
|
||||||
where
|
where
|
||||||
f t@(TA_Expansion id _) = sequence_ $ do
|
f t@(TA_Expansion id _) = sequence_ $ do
|
||||||
str <- getLiteralString t
|
first:rest <- getLiteralString t
|
||||||
first <- str !!! 0
|
guard $ isDigit first && '.' `elem` rest
|
||||||
guard $ isDigit first && '.' `elem` str
|
|
||||||
return $ err id 2079 "(( )) doesn't support decimals. Use bc or awk."
|
return $ err id 2079 "(( )) doesn't support decimals. Use bc or awk."
|
||||||
f _ = return ()
|
f _ = return ()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue