Skip to content

Commit 381cec5

Browse files
committed
Add debug log for collected records
1 parent d378e6e commit 381cec5

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

plugins/hls-explicit-record-fields-plugin/src/Ide/Plugin/ExplicitFields.hs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ import Development.IDE.Graph.Classes (Hashable,
6060
import Development.IDE.Spans.Pragmas (NextPragmaInfo (..),
6161
getFirstPragma,
6262
insertNewPragma)
63-
import Development.IDE.Types.Logger (cmapWithPrio)
63+
import Development.IDE.Types.Logger (Priority (..),
64+
cmapWithPrio,
65+
logWith, (<+>))
6466
import GHC.Generics (Generic)
6567
import qualified HaskellWorks.Data.IntervalMap.FingerTree as IM
6668
import Ide.PluginUtils (getNormalizedFilePath,
@@ -86,11 +88,14 @@ import Language.LSP.Types (CodeAction (..),
8688
import qualified Language.LSP.Types.Lens as L
8789

8890

89-
data Log = LogShake Shake.Log
91+
data Log
92+
= LogShake Shake.Log
93+
| LogCollectedRecords [RecordInfo]
9094

9195
instance Pretty Log where
9296
pretty = \case
9397
LogShake shakeLog -> pretty shakeLog
98+
LogCollectedRecords recs -> "Collected records with wildcards:" <+> pretty recs
9499

95100
descriptor :: Recorder (WithPriority Log) -> PluginId -> PluginDescriptor IdeState
96101
descriptor recorder plId = (defaultPluginDescriptor plId)
@@ -146,8 +151,9 @@ collectRecordsRule :: Recorder (WithPriority Log) -> Rules ()
146151
collectRecordsRule recorder = define (cmapWithPrio LogShake recorder) $ \CollectRecords nfp -> do
147152
tmr <- use TypeCheck nfp
148153
let exts = getEnabledExtensions <$> tmr
149-
recs = getRecords <$> tmr
150-
renderedRecs = mapMaybe renderRecordInfo <$> recs
154+
recs = concat $ maybeToList (getRecords <$> tmr)
155+
logWith recorder Debug (LogCollectedRecords recs)
156+
let renderedRecs = traverse renderRecordInfo recs
151157
recMap = buildIntervalMap <$> renderedRecs
152158
pure ([], CRR <$> recMap <*> exts)
153159

@@ -188,12 +194,19 @@ data RecordInfo
188194
= RecordInfoPat SrcSpan (Pat (GhcPass 'Renamed))
189195
| RecordInfoCon SrcSpan (HsExpr (GhcPass 'Renamed))
190196

197+
instance Pretty RecordInfo where
198+
pretty (RecordInfoPat ss p) = pretty (printOutputable ss) <> ":" <+> pretty (printOutputable p)
199+
pretty (RecordInfoCon ss e) = pretty (printOutputable ss) <> ":" <+> pretty (printOutputable e)
200+
191201
data RenderedRecordInfo = RenderedRecordInfo
192202
{ renderedSrcSpan :: SrcSpan
193203
, renderedRecord :: Text
194204
}
195205
deriving (Generic)
196206

207+
instance Pretty RenderedRecordInfo where
208+
pretty (RenderedRecordInfo ss r) = pretty (printOutputable ss) <> ":" <+> pretty r
209+
197210
instance NFData RenderedRecordInfo
198211

199212
renderRecordInfo :: RecordInfo -> Maybe RenderedRecordInfo

0 commit comments

Comments
 (0)