4 import qualified HpcMap as Map
7 -- | grab's the text behind a HpcPos;
8 grabHpcPos :: Map.Map Int String -> HpcPos -> String
9 grabHpcPos hsMap span =
11 [ln] -> (take ((c2 - c1) + 1) $ drop (c1 - 1) ln)
12 _ -> let lns1 = drop (c1 -1) (head lns) : tail lns
13 lns2 = init lns1 ++ [take (c2 + 1) (last lns1) ]
14 in foldl1 (\ xs ys -> xs ++ "\n" ++ ys) lns2
15 where (l1,c1,l2,c2) = fromHpcPos span
16 lns = map (\ n -> case Map.lookup n hsMap of
18 Nothing -> error $ "bad line number : " ++ show n