{-# OPTIONS_GHC -Wno-orphans #-}
module GHC.Debugger.View.Containers where

import GHC.Debugger.View.Class

import qualified Data.IntMap        as IM
import qualified Data.Map           as M

instance DebugView (IM.IntMap a) where
  debugValue :: IntMap a -> VarValue
debugValue IntMap a
_ = String -> Bool -> VarValue
VarValue String
"IntMap" Bool
True
  debugFields :: IntMap a -> VarFields
debugFields IntMap a
im = [(String, VarFieldValue)] -> VarFields
VarFields
    [ (Key -> String
forall a. Show a => a -> String
show Key
k, a -> VarFieldValue
forall a. a -> VarFieldValue
VarFieldValue a
v)
    | (Key
k, a
v) <- IntMap a -> [(Key, a)]
forall a. IntMap a -> [(Key, a)]
IM.toList IntMap a
im
    ]

instance Show k => DebugView (M.Map k a) where
  debugValue :: Map k a -> VarValue
debugValue Map k a
_ = String -> Bool -> VarValue
VarValue String
"Map" Bool
True
  debugFields :: Map k a -> VarFields
debugFields Map k a
m = [(String, VarFieldValue)] -> VarFields
VarFields
    [ (k -> String
forall a. Show a => a -> String
show k
k, a -> VarFieldValue
forall a. a -> VarFieldValue
VarFieldValue a
v)
    | (k
k, a
v) <- Map k a -> [(k, a)]
forall k a. Map k a -> [(k, a)]
M.toList Map k a
m
    ]