on master help sign in
Fix bugs: List as built-in type and ignoring kernel imports
bf133d3Evan Czaplicki
src/Canonicalize/Environment/Foreign.hs+12−2
@@ -42,11 +42,16 @@ type ImportDict =
42
42
43createInitialEnv :: ModuleName.Canonical -> ImportDict -> I.Interfaces -> [Src.Import] -> Result i w Env.Env
43createInitialEnv :: ModuleName.Canonical -> ImportDict -> I.Interfaces -> [Src.Import] -> Result i w Env.Env
44createInitialEnv home importDict interfaces sourceImports =
44createInitialEnv home importDict interfaces sourceImports =
45− do imports <- traverse (verifyImport importDict interfaces) sourceImports
45+ do imports <- traverse (verifyImport importDict interfaces) (filter isNotKernel sourceImports)
46 (State vs ts cs bs qvs qts qcs) <- foldM addImport emptyState imports
46 (State vs ts cs bs qvs qts qcs) <- foldM addImport emptyState imports
47 Result.ok (Env.Env home (Map.map Env.Foreign vs) ts cs bs qvs qts qcs)
47 Result.ok (Env.Env home (Map.map Env.Foreign vs) ts cs bs qvs qts qcs)
48
48
49
49
50+isNotKernel :: Src.Import -> Bool
51+isNotKernel (Src.Import (A.At _ name) _ _) =
52+ not (ModuleName.isKernel name)
53+
54+
50
55
51-- STATE
56-- STATE
52
57
@@ -65,7 +70,12 @@ data State =
65
70
66emptyState :: State
71emptyState :: State
67emptyState =
72emptyState =
68− State Map.empty Map.empty Map.empty Map.empty Map.empty Map.empty Map.empty
73+ State Map.empty emptyTypes Map.empty Map.empty Map.empty Map.empty Map.empty
74+
75+
76+emptyTypes :: Env.Exposed Env.Type
77+emptyTypes =
78+ Map.singleton "List" (OneOrMore.one (Env.Union 1 ModuleName.list))
69
79
70
80
71
81