mirror of
https://github.com/koalaman/shellcheck
synced 2025-08-20 13:23:55 -07:00
Merge branch 'slycordinator-leading_X'
This commit is contained in:
commit
2ae0aeaff9
1 changed files with 16 additions and 13 deletions
|
@ -4318,13 +4318,15 @@ prop_checkComparisonWithLeadingX3 = verifyNot checkComparisonWithLeadingX "[ $fo
|
|||
prop_checkComparisonWithLeadingX4 = verifyNot checkComparisonWithLeadingX "test $foo = xbar"
|
||||
prop_checkComparisonWithLeadingX5 = verify checkComparisonWithLeadingX "[ \"x$foo\" = 'xlol' ]"
|
||||
prop_checkComparisonWithLeadingX6 = verify checkComparisonWithLeadingX "[ x\"$foo\" = x'lol' ]"
|
||||
prop_checkComparisonWithLeadingX7 = verify checkComparisonWithLeadingX "[ X$foo != Xbar ]"
|
||||
checkComparisonWithLeadingX params t =
|
||||
case t of
|
||||
TC_Binary id typ op lhs rhs | op == "=" || op == "==" ->
|
||||
TC_Binary id typ op lhs rhs
|
||||
| op `elem` ["=", "==", "!="] ->
|
||||
check lhs rhs
|
||||
T_SimpleCommand _ _ [cmd, lhs, op, rhs] |
|
||||
getLiteralString cmd == Just "test" &&
|
||||
getLiteralString op `elem` [Just "=", Just "=="] ->
|
||||
T_SimpleCommand _ _ [cmd, lhs, op, rhs]
|
||||
| getLiteralString cmd == Just "test" &&
|
||||
getLiteralString op `elem` [Just "=", Just "==", Just "!="] ->
|
||||
check lhs rhs
|
||||
_ -> return ()
|
||||
where
|
||||
|
@ -4336,18 +4338,19 @@ checkComparisonWithLeadingX params t =
|
|||
|
||||
fixLeadingX token =
|
||||
case getWordParts token of
|
||||
T_Literal id ('x':_):_ ->
|
||||
T_Literal id (c:_):_ | toLower c == 'x' ->
|
||||
case token of
|
||||
-- The side is a single, unquoted x, so we have to quote
|
||||
T_NormalWord _ [T_Literal id "x"] ->
|
||||
-- The side is a single, unquoted x or X, so we have to quote
|
||||
T_NormalWord _ [T_Literal id [c]] ->
|
||||
return $ replaceStart id params 1 "\"\""
|
||||
-- Otherwise we can just delete it
|
||||
_ -> return $ replaceStart id params 1 ""
|
||||
T_SingleQuoted id ('x':_):_ ->
|
||||
-- Replace the single quote and x
|
||||
T_SingleQuoted id (c:rest):_ | toLower c == 'x' ->
|
||||
-- Replace the single quote and the character x or X
|
||||
return $ replaceStart id params 2 "'"
|
||||
_ -> Nothing
|
||||
|
||||
|
||||
prop_checkAssignToSelf1 = verify checkAssignToSelf "x=$x"
|
||||
prop_checkAssignToSelf2 = verify checkAssignToSelf "x=${x}"
|
||||
prop_checkAssignToSelf3 = verify checkAssignToSelf "x=\"$x\""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue