@@ -18,8 +18,9 @@ import qualified AST.Module as Module
1818import qualified AST.Module.Name as ModuleName
1919import qualified Compile
2020import qualified Docs.Check as Docs
21−import qualified Elm.Compiler.Version
21+import qualified Elm.Compiler.Imports as Imports
2222import qualified Elm.Compiler.Module as PublicModule
23+import qualified Elm.Compiler.Version
2324import qualified Elm.Docs as Docs
2425import qualified Elm.Package as Package
2526import qualified Generate.JavaScript as JS
@@ -53,26 +54,37 @@ data Tag
5354 | Port
5455
5556
56−parseDependencies :: String -> Either [Error] (Tag, PublicModule.Raw, [PublicModule.Raw])
57−parseDependencies sourceCode =
57+parseDependencies
58+ :: Package.Name
59+ -> String
60+ -> Either [Error] (Tag, PublicModule.Raw, [PublicModule.Raw])
61+parseDependencies pkgName sourceCode =
5862 let
5963 (Result.Result _ _ answer) =
6064 Parse.parse sourceCode Parse.header
65+ in
66+ Result.answerToEither (Error . A.map Error.Syntax) (getDeps pkgName) answer
6167
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− )
68+
69+getDeps
70+ :: Package.Name
71+ -> Module.Header [Module.UserImport]
72+ -> (Tag, PublicModule.Raw, [PublicModule.Raw])
73+getDeps pkgName (Module.Header sourceTag name _ _ _ imports) =
74+ let
75+ tag =
76+ case sourceTag of
77+ Module.Normal -> Normal
78+ Module.Port _ -> Port
79+ Module.Effect _ -> Effect
80+
81+ deps =
82+ if pkgName == Package.core then
83+ map (fst . A.drop) imports
84+ else
85+ map (fst . A.drop) imports ++ map fst Imports.defaults
7486 in
75− Result.answerToEither (Error . A.map Error.Syntax) getDeps answer
87+ ( tag, name, deps )
7688
7789
7890