diff --git a/ShellCheck/Parser.hs b/ShellCheck/Parser.hs index 9a636859c147cc6063c375389ae83e11678fe7f3..5e04cedaa519df0dc19e3f65fb9bd6d57a6d1622 100644 --- a/ShellCheck/Parser.hs +++ b/ShellCheck/Parser.hs @@ -1155,6 +1155,7 @@ prop_readHereDoc3 = isOk readHereDoc "<< foo\n$\"\nfoo" prop_readHereDoc4 = isOk readHereDoc "<< foo\n`\nfoo" prop_readHereDoc5 = isOk readHereDoc "<<- !foo\nbar\n!foo" prop_readHereDoc6 = isOk readHereDoc "<< foo\\ bar\ncow\nfoo bar" +prop_readHereDoc7 = isOk readHereDoc "<< foo\n\\$(f ())\nfoo" readHereDoc = called "here document" $ do fid <- getNextId pos <- getPosition @@ -1210,11 +1211,11 @@ readHereDoc = called "here document" $ do parseHereData Unquoted startPos hereData = subParse startPos readHereData hereData - readHereData = many $ try readNormalDollar <|> try readBackTicked <|> readHereLiteral + readHereData = many $ try doubleQuotedPart <|> readHereLiteral readHereLiteral = do id <- getNextId - chars <- many1 $ noneOf "`$" + chars <- many1 $ noneOf "`$\\" return $ T_Literal id chars verifyHereDoc dashed quoted spacing hereInfo = do