@@ -648,14 +648,19 @@ constraintArg syn = do symbol "@{"
648648
649649-}
650650quasiquote :: SyntaxInfo -> IdrisParser PTerm
651−quasiquote syn = do symbol "`("
651+quasiquote syn = do startFC <- symbolFC "`("
652652 e <- expr syn { syn_in_quasiquote = (syn_in_quasiquote syn) + 1 ,
653653 inPattern = False }
654− g <- optional $ do
655− symbol ":"
656− expr syn { inPattern = False } -- don't allow antiquotes
657− symbol ")"
658− return $ PQuasiquote e g
654+ g <- optional $
655+ do fc <- symbolFC ":"
656+ ty <- expr syn { inPattern = False } -- don't allow antiquotes
657+ return (ty, fc)
658+ endFC <- symbolFC ")"
659+ mapM_ (uncurry highlightP) [(startFC, AnnKeyword), (endFC, AnnKeyword)]
660+ case g of
661+ Just (_, fc) -> highlightP fc AnnKeyword
662+ _ -> return ()
663+ return $ PQuasiquote e (fst <$> g)
659664 <?> "quasiquotation"
660665
661666{-| Parses an unquoting inside a quasiquotation (for building reflected terms using the elaborator)
@@ -665,8 +670,9 @@ quasiquote syn = do symbol "`("
665670-}
666671unquote :: SyntaxInfo -> IdrisParser PTerm
667672unquote syn = do guard (syn_in_quasiquote syn > 0)
668− symbol "~"
673+ startFC <- symbolFC "~"
669674 e <- simpleExpr syn { syn_in_quasiquote = syn_in_quasiquote syn - 1 }
675+ highlightP startFC AnnKeyword
670676 return $ PUnquote e
671677 <?> "unquotation"
672678