git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Initial refactoring for qualified imports
50ff1f2Gary Burgess
psci/Main.hs+1−1
@@ -204,7 +204,7 @@ createTemporaryModule :: Bool -> PSCiState -> P.Value -> P.Module
204createTemporaryModule exec PSCiState{psciImportedModuleNames = imports, psciLetBindings = lets} value =
204createTemporaryModule exec PSCiState{psciImportedModuleNames = imports, psciLetBindings = lets} value =
205 let
205 let
206 moduleName = P.ModuleName [P.ProperName "Main"]
206 moduleName = P.ModuleName [P.ProperName "Main"]
207− importDecl m = P.ImportDeclaration m Nothing
207+ importDecl m = P.ImportDeclaration m Nothing Nothing
208 traceModule = P.ModuleName [P.ProperName "Debug", P.ProperName "Trace"]
208 traceModule = P.ModuleName [P.ProperName "Debug", P.ProperName "Trace"]
209 trace = P.Var (P.Qualified (Just traceModule) (P.Ident "print"))
209 trace = P.Var (P.Qualified (Just traceModule) (P.Ident "print"))
210 itValue = foldl (\x f -> f x) value lets
210 itValue = foldl (\x f -> f x) value lets
src/Language/PureScript/Declarations.hs+3−2
@@ -117,9 +117,10 @@ data Declaration
117 --
117 --
118 | FixityDeclaration Fixity String
118 | FixityDeclaration Fixity String
119 -- |
119 -- |
120− -- A module import (module name, optional set of identifiers to import)
120+ -- A module import (module name, optional set of identifiers to import, optional "qualified as"
121+ -- name)
121 --
122 --
122− | ImportDeclaration ModuleName (Maybe [DeclarationRef])
123+ | ImportDeclaration ModuleName (Maybe [DeclarationRef]) (Maybe ModuleName)
123 -- |
124 -- |
124 -- A type class declaration (name, argument, member declarations)
125 -- A type class declaration (name, argument, member declarations)
125 --
126 --
src/Language/PureScript/ModuleDependencies.hs+1−1
@@ -47,7 +47,7 @@ usedModules = nub . everything (++) (mkQ [] qualifiedIdents `extQ` qualifiedProp
47 qualifiedProperNames (Qualified (Just mn) _) = [mn]
47 qualifiedProperNames (Qualified (Just mn) _) = [mn]
48 qualifiedProperNames _ = []
48 qualifiedProperNames _ = []
49 imports :: Declaration -> [ModuleName]
49 imports :: Declaration -> [ModuleName]
50− imports (ImportDeclaration mn _) = [mn]
50+ imports (ImportDeclaration mn _ _) = [mn]
51 imports _ = []
51 imports _ = []
52
52
53getModuleName :: Module -> ModuleName
53getModuleName :: Module -> ModuleName
src/Language/PureScript/Parser/Declarations.hs+2−1
@@ -101,7 +101,8 @@ parseImportDeclaration = do
101 indented
101 indented
102 moduleName' <- moduleName
102 moduleName' <- moduleName
103 idents <- P.optionMaybe $ parens $ commaSep parseDeclarationRef
103 idents <- P.optionMaybe $ parens $ commaSep parseDeclarationRef
104+ asQ <- P.optionMaybe $ reserved "as" *> moduleName
104− return $ ImportDeclaration moduleName' idents
105+ return $ ImportDeclaration moduleName' idents asQ
105
106
106parseDeclarationRef :: P.Parsec String ParseState DeclarationRef
107parseDeclarationRef :: P.Parsec String ParseState DeclarationRef
107parseDeclarationRef = ValueRef <$> parseIdent
108parseDeclarationRef = ValueRef <$> parseIdent
src/Language/PureScript/Sugar/Names.hs+1−1
@@ -337,7 +337,7 @@ type ExplicitImports = [DeclarationRef]
337findImports :: [Declaration] -> M.Map ModuleName (Maybe ExplicitImports)
337findImports :: [Declaration] -> M.Map ModuleName (Maybe ExplicitImports)
338findImports = foldl findImports' M.empty
338findImports = foldl findImports' M.empty
339 where
339 where
340− findImports' result (ImportDeclaration mn expl) = M.insert mn expl result
340+ findImports' result (ImportDeclaration mn expl _) = M.insert mn expl result
341 findImports' result _ = result
341 findImports' result _ = result
342
342
343-- |
343-- |
src/Language/PureScript/Sugar/Operators.hs+1−1
@@ -124,7 +124,7 @@ collectFixities m moduleName (FixityDeclaration fixity name : rest) = do
124 let qual = Qualified (Just moduleName) (Op name)
124 let qual = Qualified (Just moduleName) (Op name)
125 when (qual `M.member` m) (Left $ "redefined fixity for " ++ show name)
125 when (qual `M.member` m) (Left $ "redefined fixity for " ++ show name)
126 collectFixities (M.insert qual fixity m) moduleName rest
126 collectFixities (M.insert qual fixity m) moduleName rest
127−collectFixities m moduleName (ImportDeclaration importedModule _ : rest) = do
127+collectFixities m moduleName (ImportDeclaration importedModule _ _ : rest) = do
128 let fs = [ (i, fixity) | (Qualified mn i, fixity) <- M.toList m, mn == Just importedModule ]
128 let fs = [ (i, fixity) | (Qualified mn i, fixity) <- M.toList m, mn == Just importedModule ]
129 let m' = M.fromList (map (first (Qualified (Just moduleName))) fs)
129 let m' = M.fromList (map (first (Qualified (Just moduleName))) fs)
130 collectFixities (m' `M.union` m) moduleName rest
130 collectFixities (m' `M.union` m) moduleName rest
src/Language/PureScript/TypeChecker.hs+1−1
@@ -173,7 +173,7 @@ typeCheckAll mainModuleName moduleName (d@(FixityDeclaration _ name) : rest) = d
173 env <- getEnv
173 env <- getEnv
174 guardWith ("Fixity declaration with no binding: " ++ name) $ M.member (moduleName, Op name) $ names env
174 guardWith ("Fixity declaration with no binding: " ++ name) $ M.member (moduleName, Op name) $ names env
175 return $ d : ds
175 return $ d : ds
176−typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _) : rest) = do
176+typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _ _) : rest) = do
177 env <- getEnv
177 env <- getEnv
178 let instances = filter (\tcd -> let Qualified (Just mn) _ = tcdName tcd in moduleName == mn) (typeClassDictionaries env)
178 let instances = filter (\tcd -> let Qualified (Just mn) _ = tcdName tcd in moduleName == mn) (typeClassDictionaries env)
179 forM_ instances $ \tcd -> do
179 forM_ instances $ \tcd -> do