on master help sign in
Change public API of parseDependencies to give out Errors
19169fcEvan Czaplicki
src/Elm/Compiler.hs+17−16
@@ -1,5 +1,4 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2−{-# LANGUAGE FlexibleContexts #-}
3module Elm.Compiler
2module Elm.Compiler
4 ( version, rawVersion
3 ( version, rawVersion
5 , parseDependencies, compile
4 , parseDependencies, compile
@@ -7,7 +6,6 @@ module Elm.Compiler
7 , Warning
6 , Warning
8 ) where
7 ) where
9
8
10−import Control.Monad.Error.Class (MonadError, throwError)
11import qualified Data.Map as Map
9import qualified Data.Map as Map
12
10
13import qualified AST.Module as Module
11import qualified AST.Module as Module
@@ -15,8 +13,8 @@ import qualified Compile
15import qualified Elm.Compiler.Module as PublicModule
13import qualified Elm.Compiler.Module as PublicModule
16import qualified Elm.Compiler.Version as Version
14import qualified Elm.Compiler.Version as Version
17import qualified Generate.JavaScript as JS
15import qualified Generate.JavaScript as JS
18−import qualified Parse.Helpers as Help
19import qualified Parse.Module as Parse
16import qualified Parse.Module as Parse
17+import qualified Parse.Parse as Parse
20import qualified Reporting.Annotation as A
18import qualified Reporting.Annotation as A
21import qualified Reporting.Error as Error
19import qualified Reporting.Error as Error
22import qualified Reporting.Result as Result
20import qualified Reporting.Result as Result
@@ -38,19 +36,22 @@ rawVersion =
38-- DEPENDENCIES
36-- DEPENDENCIES
39
37
40parseDependencies
38parseDependencies
41− :: (MonadError String m)
39+ :: String
42− => String
43− -> m (PublicModule.Name, [PublicModule.Name])
40+ -> Either [Error] (PublicModule.Name, [PublicModule.Name])
44−parseDependencies src =
41+parseDependencies sourceCode =
45− case Help.iParse Parse.header src of
42+ let
46− Left msg ->
43+ (Result.Result _warnings rawResult) =
47− throwError (show msg)
44+ Parse.parse sourceCode Parse.header
48−
45+ in
46+ case rawResult of
47+ Result.Err msgs ->
48+ Left $ map (Error . A.map Error.Syntax) msgs
49+
49− Right (Module.Header names _exports imports) ->
50+ Result.Ok (Module.Header names _exports imports) ->
50− return
51+ Right
51− ( PublicModule.Name names
52+ ( PublicModule.Name names
52− , map (PublicModule.Name . fst . A.drop) imports
53+ , map (PublicModule.Name . fst . A.drop) imports
53− )
54+ )
54
55
55
56
56-- COMPILATION
57-- COMPILATION
src/Parse/Parse.hs+1−1
@@ -1,5 +1,5 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2−module Parse.Parse (program) where
2+module Parse.Parse (program, parse) where
3
3
4import Control.Applicative ((<$>), (<*>))
4import Control.Applicative ((<$>), (<*>))
5import qualified Data.Map as Map
5import qualified Data.Map as Map