@@ -151,24 +151,25 @@ parseImportDeclaration' = do
152 stdImport = do
152 stdImport = do
153 moduleName' <- moduleName
153 moduleName' <- moduleName
154− stdImportHiding moduleName' <|> stdImportQualifying moduleName'
154+ suffixHiding moduleName' <|> suffixQualifyingList moduleName'
156− stdImportHiding mn = do
156+ suffixHiding mn = do
157 reserved "hiding"
157 reserved "hiding"
158− declType <- importDeclarationType Hiding
158+ declType <- qualifyingList Hiding
159− return (mn, declType, Nothing)
160− stdImportQualifying mn = do
161− declType <- importDeclarationType Explicit
162 return (mn, declType, Nothing)
159 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
163 qualImport = do
165 qualImport = do
164 reserved "qualified"
166 reserved "qualified"
166 moduleName' <- moduleName
168 moduleName' <- moduleName
167− declType <- importDeclarationType Explicit
169+ declType <- qualifyingList Explicit
168− reserved "as"
170+ qName <- qualifiedName
170− return (moduleName', declType, Just asQ)
171+ return (moduleName', declType, Just qName)
171− importDeclarationType expectedType = do
172+ qualifyingList expectedType = do
172 idents <- P.optionMaybe $ indented *> parens (commaSep parseDeclarationRef)
173 idents <- P.optionMaybe $ indented *> parens (commaSep parseDeclarationRef)
173 return $ fromMaybe Implicit (expectedType <$> idents)
174 return $ fromMaybe Implicit (expectedType <$> idents)