on master help sign in
Turn default imports back on
92be75cEvan Czaplicki
elm-compiler.cabal+1−1
@@ -68,6 +68,7 @@ Library
68 Generate.JavaScript.Variable,
68 Generate.JavaScript.Variable,
69 Generate.Markdown,
69 Generate.Markdown,
70 Generate.Cases,
70 Generate.Cases,
71+ Transform.AddDefaultImports,
71 Transform.Canonicalize,
72 Transform.Canonicalize,
72 Transform.Canonicalize.Environment,
73 Transform.Canonicalize.Environment,
73 Transform.Canonicalize.Setup,
74 Transform.Canonicalize.Setup,
@@ -80,7 +81,6 @@ Library
80 Transform.Interface,
81 Transform.Interface,
81 Transform.SortDefinitions,
82 Transform.SortDefinitions,
82 Transform.Substitute,
83 Transform.Substitute,
83− Metadata.Prelude,
84 Parse.Binop,
84 Parse.Binop,
85 Parse.Declaration,
85 Parse.Declaration,
86 Parse.Expression,
86 Parse.Expression,
src/Build/Source.hs+2−2
@@ -5,7 +5,7 @@ import Text.PrettyPrint (Doc)
5
5
6import qualified AST.Module as Module
6import qualified AST.Module as Module
7import qualified Parse.Parse as Parse
7import qualified Parse.Parse as Parse
8−import qualified Metadata.Prelude as Prelude
8+import qualified Transform.AddDefaultImports as DefaultImports
9import qualified Transform.Check as Check
9import qualified Transform.Check as Check
10import qualified Type.Inference as TI
10import qualified Type.Inference as TI
11import qualified Transform.Canonicalize as Canonical
11import qualified Transform.Canonicalize as Canonical
@@ -17,7 +17,7 @@ build noPrelude interfaces source =
17
17
18 -- Parse the source code and validate that it is well formed.
18 -- Parse the source code and validate that it is well formed.
19 validModule <- do
19 validModule <- do
20− modul <- Prelude.add noPrelude `fmap` Parse.program infixes source
20+ modul <- DefaultImports.add noPrelude `fmap` Parse.program infixes source
21 case Check.mistakes (Module.body modul) of
21 case Check.mistakes (Module.body modul) of
22 [] -> return modul
22 [] -> return modul
23 ms -> Left ms
23 ms -> Left ms
src/Metadata/Prelude.hs → src/Transform/AddDefaultImports.hsrenamed+30−8
@@ -1,5 +1,5 @@
1{-# LANGUAGE FlexibleContexts #-}
1{-# LANGUAGE FlexibleContexts #-}
2−module Metadata.Prelude (add) where
2+module Transform.AddDefaultImports (add) where
3
3
4import qualified Data.Map as Map
4import qualified Data.Map as Map
5import qualified Data.Set as Set
5import qualified Data.Set as Set
@@ -8,20 +8,42 @@ import qualified AST.Module as Module
8import qualified AST.Variable as Var
8import qualified AST.Variable as Var
9
9
10
10
11−-- DEFINITION OF THE PRELUDE
12−
13type ImportDict =
11type ImportDict =
14 Map.Map Module.Name ([String], Var.Listing Var.Value)
12 Map.Map Module.Name ([String], Var.Listing Var.Value)
15
13
16
14
15+-- DESCRIPTION OF DEFAULT IMPORTS
16+
17+(==>) :: a -> b -> (a,b)
18+(==>) = (,)
19+
20+
17−prelude :: ImportDict
21+defaultImports :: ImportDict
18−prelude =
22+defaultImports =
19 Map.fromList $ map (\name -> (name, ([], Var.openListing))) $
23 Map.fromList $ map (\name -> (name, ([], Var.openListing))) $
20− [ -- ["Basics"]
24+ [ ["Basics"] ==> ([], Var.openListing)
25+ , ["Maybe"] ==> ([], Var.Listing [maybe] False)
26+ , ["Result"] ==> ([], Var.Listing [result] False)
27+ , ["Signal"] ==> ([], Var.Listing [signal] False)
21 ]
28 ]
22
29
23
30
31+maybe : [Var.Value]
32+maybe =
33+ Var.ADT "Maybe" Var.openListing
34+
35+
36+result : Var.Value
37+result =
38+ Var.ADT "Result" Var.openListing
39+
40+
41+signal : Var.Value
42+signal =
43+ Var.ADT "Signal" (Var.Listing [] False)
44+
45+
24−-- ADDING PRELUDE TO A MODULE
46+-- ADDING DEFAULT IMPORTS TO A MODULE
25
47
26add :: Bool -> Module.Module exs body -> Module.Module exs body
48add :: Bool -> Module.Module exs body -> Module.Module exs body
27add noPrelude (Module.Module moduleName path exports imports decls) =
49add noPrelude (Module.Module moduleName path exports imports decls) =
@@ -29,7 +51,7 @@ add noPrelude (Module.Module moduleName path exports imports decls) =
29 where
51 where
30 ammendedImports =
52 ammendedImports =
31 importDictToList $
53 importDictToList $
32− foldr addImport (if noPrelude then Map.empty else prelude) imports
54+ foldr addImport (if noPrelude then Map.empty else defaultImports) imports
33
55
34
56
35importDictToList :: ImportDict -> [(Module.Name, Module.ImportMethod)]
57importDictToList :: ImportDict -> [(Module.Name, Module.ImportMethod)]