summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPéter Diviánszky <divipp@gmail.com>2016-11-10 17:25:48 +0100
committerPéter Diviánszky <divipp@gmail.com>2016-11-10 17:25:48 +0100
commitf1b113b7de5b19647b0137cdd824bc0a37379ca8 (patch)
treeb4055378fe48e8f443b02745f74b74ed75b32fce
parentd1e956c1c3a12b3ca201d434e1d834f5ccf91fb9 (diff)
export new listErrors & listWarnings API functions
-rw-r--r--src/LambdaCube/Compiler.hs2
-rw-r--r--src/LambdaCube/Compiler/InferMonad.hs9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/LambdaCube/Compiler.hs b/src/LambdaCube/Compiler.hs
index bc34a088..a61686ff 100644
--- a/src/LambdaCube/Compiler.hs
+++ b/src/LambdaCube/Compiler.hs
@@ -50,7 +50,7 @@ import LambdaCube.Compiler.CoreToIR
50import LambdaCube.Compiler.Utils 50import LambdaCube.Compiler.Utils
51import LambdaCube.Compiler.DesugaredSource as Exported (FileInfo(..), Range(..), SPos(..), pattern SPos, SIName(..), pattern SIName, sName, SI(..)) 51import LambdaCube.Compiler.DesugaredSource as Exported (FileInfo(..), Range(..), SPos(..), pattern SPos, SIName(..), pattern SIName, sName, SI(..))
52import LambdaCube.Compiler.Core as Exported (mkDoc, Exp, ExpType(..), pattern ET, outputType, boolType, trueExp, hnf) 52import LambdaCube.Compiler.Core as Exported (mkDoc, Exp, ExpType(..), pattern ET, outputType, boolType, trueExp, hnf)
53import LambdaCube.Compiler.InferMonad as Exported (errorRange, listAllInfos, listAllInfos', listTypeInfos, listTraceInfos, Infos, Info(..)) 53import LambdaCube.Compiler.InferMonad as Exported (errorRange, listAllInfos, listAllInfos', listTypeInfos, listErrors, listWarnings, listTraceInfos, Infos, Info(..))
54--import LambdaCube.Compiler.Infer as Exported () 54--import LambdaCube.Compiler.Infer as Exported ()
55 55
56-- inlcude path for: Builtins, Internals and Prelude 56-- inlcude path for: Builtins, Internals and Prelude
diff --git a/src/LambdaCube/Compiler/InferMonad.hs b/src/LambdaCube/Compiler/InferMonad.hs
index 8d46f7c7..1905c839 100644
--- a/src/LambdaCube/Compiler/InferMonad.hs
+++ b/src/LambdaCube/Compiler/InferMonad.hs
@@ -30,7 +30,7 @@ import Control.Arrow hiding ((<+>))
30import LambdaCube.Compiler.DeBruijn 30import LambdaCube.Compiler.DeBruijn
31import LambdaCube.Compiler.Pretty hiding (braces, parens) 31import LambdaCube.Compiler.Pretty hiding (braces, parens)
32import LambdaCube.Compiler.DesugaredSource hiding (getList) 32import LambdaCube.Compiler.DesugaredSource hiding (getList)
33import LambdaCube.Compiler.Parser (ParseWarning) -- TODO: remove 33import LambdaCube.Compiler.Parser (ParseWarning (..))
34import LambdaCube.Compiler.Core 34import LambdaCube.Compiler.Core
35 35
36-------------------------------------------------------------------------------- error messages 36-------------------------------------------------------------------------------- error messages
@@ -97,6 +97,13 @@ listAllInfos' f m
97 97
98listTraceInfos m = [DResetFreshNames $ pShow i | i <- m, case i of Info{} -> False; ParseWarning{} -> False; _ -> True] 98listTraceInfos m = [DResetFreshNames $ pShow i | i <- m, case i of Info{} -> False; ParseWarning{} -> False; _ -> True]
99listTypeInfos m = Map.toList $ Map.unionsWith (<>) [Map.singleton r [DResetFreshNames i] | Info r i <- m] 99listTypeInfos m = Map.toList $ Map.unionsWith (<>) [Map.singleton r [DResetFreshNames i] | Info r i <- m]
100listErrors m = Map.toList $ Map.unionsWith (<>) [Map.singleton r [DResetFreshNames (pShow e)] | IError e <- m, RangeSI r <- errorRange_ e]
101listWarnings m = Map.toList $ Map.unionsWith (<>) [Map.singleton r [DResetFreshNames msg] | ParseWarning (getRangeAndMsg -> Just (r, msg)) <- m]
102 where
103 getRangeAndMsg = \case
104 Unreachable r -> Just (r, "Unreachable")
105 w@(Uncovered (getRange . sourceInfo -> Just r) _) -> Just (r, pShow w)
106 _ -> Nothing
100 107
101tellType si t = tell $ mkInfoItem (sourceInfo si) $ DTypeNamespace True $ pShow t 108tellType si t = tell $ mkInfoItem (sourceInfo si) $ DTypeNamespace True $ pShow t
102 109