@@ -29,6 +29,10 @@ import qualified AST.Variable as Variable
2929import qualified AST.Type as Type
3030
3131
32+
33+-- TESTS
34+
35+
3236writeExpectedJsEnvVarName :: String
3337writeExpectedJsEnvVarName =
3438 "ELM_WRITE_NEW_EXPECTED"
@@ -64,6 +68,7 @@ testsDir :: FilePath
6468testsDir =
6569 "tests" </> "test-files"
6670
71+
6772convertToExpectedJsFilePath :: String -> FilePath -> FilePath
6873convertToExpectedJsFilePath expectedJsDir filePath =
6974 testsDir
@@ -73,11 +78,35 @@ convertToExpectedJsFilePath expectedJsDir filePath =
7378
7479
7580
76−-- TEST HELPERS
81+-- COMPILE HELPERS
82+
83+
84+compile :: FilePath -> Text -> Either String Compiler.Result
85+compile filePath source =
86+ let
87+ context =
88+ Compiler.Context Package.core False importDict interfaces
89+
90+ (dealiaser, _warnings, result) =
91+ Compiler.compile context source
92+
93+ formatErrors errors =
94+ concatMap (Compiler.errorToString dealiaser filePath source) errors
95+ in
96+ either (Left . formatErrors) Right result
97+
98+
99+importDict :: Map.Map ModuleName.Raw ModuleName.Canonical
100+importDict =
101+ let
102+ toPair name =
103+ ( ModuleName._module name, name )
104+ in
105+ Map.fromList $ map toPair $ Map.keys interfaces
77106
78107
79−essentialInterfaces :: Module.Interfaces
80−essentialInterfaces =
108+interfaces :: Module.Interfaces
109+interfaces =
81110 Map.fromList
82111 [
83112 (ModuleName.inCore "Debug",
@@ -102,18 +131,8 @@ buildCoreInterface members =
102131 Module.Interface Compiler.version Package.core exports imports types adts aliases fixities
103132
104133
105−compile :: FilePath -> Text -> Either String Compiler.Result
106−compile filePath source =
107− let dependentModuleNames =
108− Map.keys essentialInterfaces
109− context =
110− Compiler.Context Package.core False dependentModuleNames
111− (dealiaser, _warnings, result) =
112− Compiler.compile context source essentialInterfaces
113− formatErrors errors =
114− concatMap (Compiler.errorToString dealiaser filePath source) errors
115− in
116− either (Left . formatErrors) Right result
134+
135+-- FILE HELPER
117136
118137
119138readFileOrErrorStr :: FilePath -> IO String