From ddb3aaa5f50a9622f1aa1240d489da30de085809 Mon Sep 17 00:00:00 2001 From: Guillaume Bouchard Date: Tue, 1 Feb 2022 22:11:45 +0100 Subject: [PATCH] eval-plugin for GHC 9.2: find all comments --- .../hls-eval-plugin/src/Ide/Plugin/Eval/Rules.hs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/Rules.hs b/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/Rules.hs index 517bd4033d2..85464678d0f 100644 --- a/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/Rules.hs +++ b/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/Rules.hs @@ -58,12 +58,22 @@ queueForEvaluation ide nfp = do #if MIN_VERSION_ghc(9,2,0) getAnnotations :: Development.IDE.GHC.Compat.Located HsModule -> [LEpaComment] -getAnnotations (L _ (HsModule { hsmodAnn = anns'})) = priorComments $ epAnnComments anns' +getAnnotations (L _ m@(HsModule { hsmodAnn = anns'})) = + priorComments annComments <> getFollowingComments annComments + <> concatMap getCommentsForDecl (hsmodImports m) + <> concatMap getCommentsForDecl (hsmodDecls m) + where + annComments = epAnnComments anns' + +getCommentsForDecl :: GenLocated (SrcSpanAnn' (EpAnn ann)) e + -> [LEpaComment] +getCommentsForDecl (L (SrcSpanAnn (EpAnn _ _ cs) _) _) = priorComments cs <> getFollowingComments cs +getCommentsForDecl (L (SrcSpanAnn (EpAnnNotUsed) _) _) = [] apiAnnComments' :: ParsedModule -> [SrcLoc.RealLocated EpaCommentTok] apiAnnComments' pm = do - L span' (EpaComment c span) <- getAnnotations $ pm_parsed_source pm - pure (L (anchor span') c) + L span (EpaComment c _) <- getAnnotations $ pm_parsed_source pm + pure (L (anchor span) c) pattern RealSrcSpanAlready :: SrcLoc.RealSrcSpan -> SrcLoc.RealSrcSpan pattern RealSrcSpanAlready x = x