@@ -1549,31 +1549,35 @@ referenceLink constructor (lab, raw) = do
1549 let labIsRef = raw' == "" || raw' == "[]"
1549 let labIsRef = raw' == "" || raw' == "[]"
1550 let key = toKey $ if labIsRef then raw else raw'
1550 let key = toKey $ if labIsRef then raw else raw'
1551 parsedRaw <- parseFromString (mconcat <$> many inline) raw'
1551 parsedRaw <- parseFromString (mconcat <$> many inline) raw'
1552− let dropRB (']':xs) = xs
1554− let dropLB ('[':xs) = xs
1556− let dropBrackets = reverse . dropRB . reverse . dropLB
1557 fallback <- parseFromString (mconcat <$> many inline) $ dropBrackets raw
1552 fallback <- parseFromString (mconcat <$> many inline) $ dropBrackets raw
1558 implicitHeaderRefs <- option False $
1553 implicitHeaderRefs <- option False $
1559 True <$ guardEnabled Ext_implicit_header_references
1554 True <$ guardEnabled Ext_implicit_header_references
1555+ let makeFallback = do
1556+ parsedRaw' <- parsedRaw
1557+ fallback' <- fallback
1558+ return $ B.str "[" <> fallback' <> B.str "]" <>
1559+ (if sp && not (null raw) then B.space else mempty) <>
1560 return $ do
1561 return $ do
1561 keys <- asksF stateKeys
1562 keys <- asksF stateKeys
1562 case M.lookup key keys of
1563 case M.lookup key keys of
1563 Nothing -> do
1564 Nothing -> do
1564 headers <- asksF stateHeaders
1565 headers <- asksF stateHeaders
1565 ref' <- if labIsRef then lab else ref
1566 ref' <- if labIsRef then lab else ref
1566− parsedRaw' <- parsedRaw
1567− fallback' <- fallback
1568− let fallback'' = B.str "[" <> fallback' <> B.str "]" <>
1569− (if sp && not (null raw) then B.space else mempty) <> parsedRaw'
1570 if implicitHeaderRefs
1567 if implicitHeaderRefs
1571 then case M.lookup ref' headers of
1568 then case M.lookup ref' headers of
1572 Just ident -> constructor ('#':ident) "" <$> lab
1569 Just ident -> constructor ('#':ident) "" <$> lab
1573− Nothing -> return fallback''
1570+ Nothing -> makeFallback
1574− else return fallback''
1571+ else makeFallback
1575 Just (src,tit) -> constructor src tit <$> lab
1572 Just (src,tit) -> constructor src tit <$> lab
1574+dropBrackets :: String -> String
1575+dropBrackets = reverse . dropRB . reverse . dropLB
1576+ where dropRB (']':xs) = xs
1578+ dropLB ('[':xs) = xs
1577bareURL :: MarkdownParser (F Inlines)
1581bareURL :: MarkdownParser (F Inlines)
1578bareURL = try $ do
1582bareURL = try $ do
1579 guardEnabled Ext_autolink_bare_uris
1583 guardEnabled Ext_autolink_bare_uris