@@ -1,7 +1,7 @@
11{-# OPTIONS_GHC -Wall #-}
22module Elm.Compiler
33 ( version
4− , parseDependencies
4+ , parseDependencies, Tag(..)
55 , compile, Context(..), Result(..)
66 , Localizer, dummyLocalizer
77 , Error, errorToString, errorToJson, printError
@@ -47,14 +47,30 @@ version =
4747-- DEPENDENCIES
4848
4949
50−parseDependencies :: String -> Either [Error] (PublicModule.Raw, [PublicModule.Raw])
50+data Tag
51+ = Normal
52+ | Effect
53+ | Port
54+
55+
56+parseDependencies :: String -> Either [Error] (Tag, PublicModule.Raw, [PublicModule.Raw])
5157parseDependencies sourceCode =
5258 let
5359 (Result.Result _ _ answer) =
5460 Parse.parse sourceCode Parse.header
5561
56− getDeps (Module.Header _ name _ _ _ imports) =
57− ( name, map (fst . A.drop) 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
72+ , map (fst . A.drop) imports
73+ )
5874 in
5975 Result.answerToEither (Error . A.map Error.Syntax) getDeps answer
6076