git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
fixes #1502: make `qualified` keyword optional in qualified imports
commit46ded7d8f15c3cf2641c36492bacd0b8f564ff4e authorMichael Ficarra <git@michael.ficarra.me> dateSun 4 Oct 2015, 12:47 (11 years ago) parent7e0fe37
3 files changed+31−11
examples/passing/OptionalQualified.purs+13 examples/passing/QualifiedQualifiedImports.purs+6 src/Language/PureScript/Parser/Declarations.hs+12−11
examples/passing/OptionalQualified.pursnew file+13
@@ -0,0 +1,13 @@
1+module Main where
2+
3+-- qualified import with the "qualified" keyword
4+import qualified Prelude as P
5+
6+-- qualified import without the "qualified" keyword
7+import Control.Monad.Eff.Console as Console
8+
9+bind = P.bind
10+
11+main = do
12+ message <- P.return "success!"
13+ Console.log message
examples/passing/QualifiedQualifiedImports.pursnew file+6
@@ -0,0 +1,6 @@
1+module Main where
2+
3+-- qualified import with qualified imported names
4+import qualified Control.Monad.Eff.Console (log) as Console
5+
6+main = Console.log "Success!"
src/Language/PureScript/Parser/Declarations.hs+12−11
@@ -151,24 +151,25 @@ parseImportDeclaration' = do
151151 where
152152 stdImport = do
153153 moduleName' <- moduleName
154− stdImportHiding moduleName' <|> stdImportQualifying moduleName'
154+ suffixHiding moduleName' <|> suffixQualifyingList moduleName'
155155 where
156− stdImportHiding mn = do
156+ suffixHiding mn = do
157157 reserved "hiding"
158− declType <- importDeclarationType Hiding
159− return (mn, declType, Nothing)
160− stdImportQualifying mn = do
161− declType <- importDeclarationType Explicit
158+ declType <- qualifyingList Hiding
162159 return (mn, declType, Nothing)
160+ suffixQualifyingList mn = do
161+ declType <- qualifyingList Explicit
162+ qName <- P.optionMaybe qualifiedName
163+ return (mn, declType, qName)
164+ qualifiedName = reserved "as" *> moduleName
163165 qualImport = do
164166 reserved "qualified"
165167 indented
166168 moduleName' <- moduleName
167− declType <- importDeclarationType Explicit
168− reserved "as"
169− asQ <- moduleName
170− return (moduleName', declType, Just asQ)
171− importDeclarationType expectedType = do
169+ declType <- qualifyingList Explicit
170+ qName <- qualifiedName
171+ return (moduleName', declType, Just qName)
172+ qualifyingList expectedType = do
172173 idents <- P.optionMaybe $ indented *> parens (commaSep parseDeclarationRef)
173174 return $ fromMaybe Implicit (expectedType <$> idents)
174175