mirror of
https://github.com/koalaman/shellcheck
synced 2025-07-11 07:36:29 -07:00
Improve regex parsing (fixes #1367)
This commit is contained in:
parent
07b5aa2971
commit
b815242506
2 changed files with 19 additions and 9 deletions
|
@ -625,8 +625,8 @@ readConditionContents single =
|
|||
readSingleQuoted,
|
||||
readDoubleQuoted,
|
||||
readDollarExpression,
|
||||
readNormalLiteral "( ",
|
||||
readPipeLiteral,
|
||||
readLiteralForParser $ readNormalLiteral "( ",
|
||||
readLiteralString "|",
|
||||
readGlobLiteral
|
||||
]
|
||||
readGlobLiteral = do
|
||||
|
@ -636,19 +636,19 @@ readConditionContents single =
|
|||
return $ T_Literal id [s]
|
||||
readGroup = called "regex grouping" $ do
|
||||
start <- startSpan
|
||||
char '('
|
||||
p1 <- readLiteralString "("
|
||||
parts <- many (readPart <|> readRegexLiteral)
|
||||
char ')'
|
||||
p2 <- readLiteralString ")"
|
||||
id <- endSpan start
|
||||
return $ T_NormalWord id parts
|
||||
return $ T_NormalWord id (p1:(parts ++ [p2]))
|
||||
readRegexLiteral = do
|
||||
start <- startSpan
|
||||
str <- readGenericLiteral1 (singleQuote <|> doubleQuotable <|> oneOf "()")
|
||||
id <- endSpan start
|
||||
return $ T_Literal id str
|
||||
readPipeLiteral = do
|
||||
readLiteralString s = do
|
||||
start <- startSpan
|
||||
str <- string "|"
|
||||
str <- string s
|
||||
id <- endSpan start
|
||||
return $ T_Literal id str
|
||||
|
||||
|
@ -2654,6 +2654,13 @@ readStringForParser parser = do
|
|||
where
|
||||
readUntil endPos = anyChar `reluctantlyTill` (getPosition >>= guard . (== endPos))
|
||||
|
||||
-- Like readStringForParser, returning the span as a T_Literal
|
||||
readLiteralForParser parser = do
|
||||
start <- startSpan
|
||||
str <- readStringForParser parser
|
||||
id <- endSpan start
|
||||
return $ T_Literal id str
|
||||
|
||||
prop_readAssignmentWord = isOk readAssignmentWord "a=42"
|
||||
prop_readAssignmentWord2 = isOk readAssignmentWord "b=(1 2 3)"
|
||||
prop_readAssignmentWord3 = isWarning readAssignmentWord "$b = 13"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue