@@ -18,6 +18,7 @@ import qualified AST.Source as Src
18import qualified Canonicalize.Environment as Env
18import qualified Canonicalize.Environment as Env
19import qualified Elm.Interface as I
19import qualified Elm.Interface as I
20import qualified Elm.ModuleName as ModuleName
20import qualified Elm.ModuleName as ModuleName
21+import qualified Elm.Package as Pkg
21import qualified Reporting.Annotation as A
22import qualified Reporting.Annotation as A
22import qualified Reporting.Error.Canonicalize as Error
23import qualified Reporting.Error.Canonicalize as Error
23import qualified Reporting.Result as Result
24import qualified Reporting.Result as Result
@@ -33,7 +34,7 @@ type Result i w a =
34createInitialEnv :: ModuleName.Canonical -> Map.Map ModuleName.Raw I.Interface -> [Src.Import] -> Result i w Env.Env
35createInitialEnv :: ModuleName.Canonical -> Map.Map ModuleName.Raw I.Interface -> [Src.Import] -> Result i w Env.Env
35createInitialEnv home ifaces imports =
36createInitialEnv home ifaces imports =
36− do (State vs ts cs bs qvs qts qcs) <- foldM (addImport ifaces) emptyState imports
37+ do (State vs ts cs bs qvs qts qcs) <- foldM (addImport ifaces) emptyState (toSafeImports home imports)
37 Result.ok (Env.Env home (Map.map Env.Foreign vs) ts cs bs qvs qts qcs)
38 Result.ok (Env.Env home (Map.map Env.Foreign vs) ts cs bs qvs qts qcs)
@@ -64,6 +65,28 @@ emptyTypes =
71+toSafeImports :: ModuleName.Canonical -> [Src.Import] -> [Src.Import]
72+toSafeImports (ModuleName.Canonical pkg _) imports =
74+ then filter isNormal imports
78+isNormal :: Src.Import -> Bool
79+isNormal (Src.Import (A.At _ name) maybeAlias _) =
80+ if Name.isKernel name
84+ Just _ -> error "kernel imports cannot use `as`"
67-- ADD IMPORTS
90-- ADD IMPORTS