@@ -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