diff options
author | Artem Pelenitsyn <a.pelenitsyn@gmail.com> | 2022-05-08 10:19:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-08 16:19:47 +0200 |
commit | 4073ed3534eea6579869679bdb59ea3322c2a588 (patch) | |
tree | ccadbf7dfcb67f2b61ec2717bc378cd9f9a22e59 | |
parent | ab53ccf089ea703b767581ac14be0f6c78a7678a (diff) |
fix parsing trailing quotes in backticked identifiers (#1408) (#1483)
-rw-r--r-- | haddock-library/src/Documentation/Haddock/Parser/Identifier.hs | 4 | ||||
-rw-r--r-- | haddock-library/test/Documentation/Haddock/ParserSpec.hs | 3 |
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" |