on master help sign in
Have Elm.Compiler.parseDependencies produce tags
4b72f55Evan Czaplicki
src/Elm/Compiler.hs+20−4
@@ -1,7 +1,7 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler
2module Elm.Compiler
3 ( version
3 ( version
4− , parseDependencies
4+ , parseDependencies, Tag(..)
5 , compile, Context(..), Result(..)
5 , compile, Context(..), Result(..)
6 , Localizer, dummyLocalizer
6 , Localizer, dummyLocalizer
7 , Error, errorToString, errorToJson, printError
7 , Error, errorToString, errorToJson, printError
@@ -47,14 +47,30 @@ version =
47-- DEPENDENCIES
47-- DEPENDENCIES
48
48
49
49
50+data Tag
51+ = Normal
52+ | Effect
53+ | Port
54+
55+
50−parseDependencies :: String -> Either [Error] (PublicModule.Raw, [PublicModule.Raw])
56+parseDependencies :: String -> Either [Error] (Tag, PublicModule.Raw, [PublicModule.Raw])
51parseDependencies sourceCode =
57parseDependencies sourceCode =
52 let
58 let
53 (Result.Result _ _ answer) =
59 (Result.Result _ _ answer) =
54 Parse.parse sourceCode Parse.header
60 Parse.parse sourceCode Parse.header
55
61
56− getDeps (Module.Header _ name _ _ _ imports) =
62+ getDeps (Module.Header sourceTag name _ _ _ imports) =
63+ let
64+ tag =
65+ case sourceTag of
66+ Module.Normal -> Normal
67+ Module.Port _ -> Port
68+ Module.Effect _ -> Effect
69+ in
70+ ( tag
71+ , name
57− ( name, map (fst . A.drop) imports )
72+ , map (fst . A.drop) imports
73+ )
58 in
74 in
59 Result.answerToEither (Error . A.map Error.Syntax) getDeps answer
75 Result.answerToEither (Error . A.map Error.Syntax) getDeps answer
60
76