aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Pelenitsyn <a.pelenitsyn@gmail.com>2022-05-08 10:19:47 -0400
committerGitHub <noreply@github.com>2022-05-08 16:19:47 +0200
commit4073ed3534eea6579869679bdb59ea3322c2a588 (patch)
treeccadbf7dfcb67f2b61ec2717bc378cd9f9a22e59
parentab53ccf089ea703b767581ac14be0f6c78a7678a (diff)
fix parsing trailing quotes in backticked identifiers (#1408) (#1483)
-rw-r--r--haddock-library/src/Documentation/Haddock/Parser/Identifier.hs4
-rw-r--r--haddock-library/test/Documentation/Haddock/ParserSpec.hs3
2 files changed, 5 insertions, 2 deletions
diff --git a/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs b/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs
index e39aabdd..4c56be9b 100644
--- a/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs
+++ b/haddock-library/src/Documentation/Haddock/Parser/Identifier.hs
@@ -149,9 +149,9 @@ takeIdentifier input = listToMaybe $ do
| otherwise = Nothing
-- | Parse all but the last quote off the front of the input
- -- PRECONDITION: T.head t == '\''
+ -- PRECONDITION: T.head t `elem` ['\'', '`']
quotes :: Text -> (Int, Text)
- quotes t = let !n = T.length (T.takeWhile (== '\'') t) - 1
+ quotes t = let !n = T.length (T.takeWhile (`elem` ['\'', '`']) t) - 1
in (n, T.drop n t)
-- | Parse an operator off the front of the input
diff --git a/haddock-library/test/Documentation/Haddock/ParserSpec.hs b/haddock-library/test/Documentation/Haddock/ParserSpec.hs
index 6e700050..1d227e57 100644
--- a/haddock-library/test/Documentation/Haddock/ParserSpec.hs
+++ b/haddock-library/test/Documentation/Haddock/ParserSpec.hs
@@ -121,6 +121,9 @@ spec = do
it "can parse identifiers ending with a single quote" $ do
"'foo''" `shouldParseTo` DocIdentifier "foo'"
+ it "can parse identifiers in backticks ending with a single quote" $ do
+ "`foo'`" `shouldParseTo` DocIdentifier "foo'"
+
it "can parse an identifier containing a digit" $ do
"'f0'" `shouldParseTo` DocIdentifier "f0"