git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Initial refactoring for qualified imports
commit50ff1f2087489a282767c17f2b3544708154a018 authorGary Burgess <gary.burgess@gmail.com> dateMon 17 Mar 2014, 18:57 (13 years ago) parent9eff663
7 files changed+10−8
psci/Main.hs+1−1 src/Language/PureScript/Declarations.hs+3−2 src/Language/PureScript/ModuleDependencies.hs+1−1 src/Language/PureScript/Parser/Declarations.hs+2−1 src/Language/PureScript/Sugar/Names.hs+1−1 src/Language/PureScript/Sugar/Operators.hs+1−1 src/Language/PureScript/TypeChecker.hs+1−1
psci/Main.hs+1−1
@@ -204,7 +204,7 @@ createTemporaryModule :: Bool -> PSCiState -> P.Value -> P.Module
204204createTemporaryModule exec PSCiState{psciImportedModuleNames = imports, psciLetBindings = lets} value =
205205 let
206206 moduleName = P.ModuleName [P.ProperName "Main"]
207− importDecl m = P.ImportDeclaration m Nothing
207+ importDecl m = P.ImportDeclaration m Nothing Nothing
208208 traceModule = P.ModuleName [P.ProperName "Debug", P.ProperName "Trace"]
209209 trace = P.Var (P.Qualified (Just traceModule) (P.Ident "print"))
210210 itValue = foldl (\x f -> f x) value lets
src/Language/PureScript/Declarations.hs+3−2
@@ -117,9 +117,10 @@ data Declaration
117117 --
118118 | FixityDeclaration Fixity String
119119 -- |
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)
121122 --
122− | ImportDeclaration ModuleName (Maybe [DeclarationRef])
123+ | ImportDeclaration ModuleName (Maybe [DeclarationRef]) (Maybe ModuleName)
123124 -- |
124125 -- A type class declaration (name, argument, member declarations)
125126 --
src/Language/PureScript/ModuleDependencies.hs+1−1
@@ -47,7 +47,7 @@ usedModules = nub . everything (++) (mkQ [] qualifiedIdents `extQ` qualifiedProp
4747 qualifiedProperNames (Qualified (Just mn) _) = [mn]
4848 qualifiedProperNames _ = []
4949 imports :: Declaration -> [ModuleName]
50− imports (ImportDeclaration mn _) = [mn]
50+ imports (ImportDeclaration mn _ _) = [mn]
5151 imports _ = []
5252
5353getModuleName :: Module -> ModuleName
src/Language/PureScript/Parser/Declarations.hs+2−1
@@ -101,7 +101,8 @@ parseImportDeclaration = do
101101 indented
102102 moduleName' <- moduleName
103103 idents <- P.optionMaybe $ parens $ commaSep parseDeclarationRef
104− return $ ImportDeclaration moduleName' idents
104+ asQ <- P.optionMaybe $ reserved "as" *> moduleName
105+ return $ ImportDeclaration moduleName' idents asQ
105106
106107parseDeclarationRef :: P.Parsec String ParseState DeclarationRef
107108parseDeclarationRef = ValueRef <$> parseIdent
src/Language/PureScript/Sugar/Names.hs+1−1
@@ -337,7 +337,7 @@ type ExplicitImports = [DeclarationRef]
337337findImports :: [Declaration] -> M.Map ModuleName (Maybe ExplicitImports)
338338findImports = foldl findImports' M.empty
339339 where
340− findImports' result (ImportDeclaration mn expl) = M.insert mn expl result
340+ findImports' result (ImportDeclaration mn expl _) = M.insert mn expl result
341341 findImports' result _ = result
342342
343343-- |
src/Language/PureScript/Sugar/Operators.hs+1−1
@@ -124,7 +124,7 @@ collectFixities m moduleName (FixityDeclaration fixity name : rest) = do
124124 let qual = Qualified (Just moduleName) (Op name)
125125 when (qual `M.member` m) (Left $ "redefined fixity for " ++ show name)
126126 collectFixities (M.insert qual fixity m) moduleName rest
127−collectFixities m moduleName (ImportDeclaration importedModule _ : rest) = do
127+collectFixities m moduleName (ImportDeclaration importedModule _ _ : rest) = do
128128 let fs = [ (i, fixity) | (Qualified mn i, fixity) <- M.toList m, mn == Just importedModule ]
129129 let m' = M.fromList (map (first (Qualified (Just moduleName))) fs)
130130 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
173173 env <- getEnv
174174 guardWith ("Fixity declaration with no binding: " ++ name) $ M.member (moduleName, Op name) $ names env
175175 return $ d : ds
176−typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _) : rest) = do
176+typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _ _) : rest) = do
177177 env <- getEnv
178178 let instances = filter (\tcd -> let Qualified (Just mn) _ = tcdName tcd in moduleName == mn) (typeClassDictionaries env)
179179 forM_ instances $ \tcd -> do