@@ -141,10 +141,10 @@ parseFixityDeclaration = do
142parseImportDeclaration :: TokenParser Declaration
142parseImportDeclaration :: TokenParser Declaration
143parseImportDeclaration = do
143parseImportDeclaration = do
144− (mn, declType, asQ) <- parseImportDeclaration'
144+ (mn, declType, asQ, isOldSyntax) <- parseImportDeclaration'
145− return $ ImportDeclaration mn declType asQ
145+ return $ ImportDeclaration mn declType asQ isOldSyntax
147−parseImportDeclaration' :: TokenParser (ModuleName, ImportDeclarationType, Maybe ModuleName)
147+parseImportDeclaration' :: TokenParser (ModuleName, ImportDeclarationType, Maybe ModuleName, Bool)
148parseImportDeclaration' = do
148parseImportDeclaration' = do
149 reserved "import"
149 reserved "import"
@@ -152,16 +152,9 @@ parseImportDeclaration' = do
153 stdImport = do
153 stdImport = do
154 moduleName' <- moduleName
154 moduleName' <- moduleName
155− suffixHiding moduleName' <|> suffixQualifyingList moduleName'
157− suffixHiding mn = do
159− declType <- qualifyingList Hiding
160− return (mn, declType, Nothing)
161− suffixQualifyingList mn = do
162− declType <- qualifyingList Explicit
155+ declType <- reserved "hiding" *> qualifyingList Hiding <|> qualifyingList Explicit
163− qName <- P.optionMaybe qualifiedName
156+ qName <- P.optionMaybe qualifiedName
164− return (mn, declType, qName)
157+ return (moduleName', declType, qName, False)
165 qualifiedName = reserved "as" *> moduleName
158 qualifiedName = reserved "as" *> moduleName
166 qualImport = do
159 qualImport = do
167 reserved "qualified"
160 reserved "qualified"
@@ -169,7 +162,7 @@ parseImportDeclaration' = do
169 moduleName' <- moduleName
162 moduleName' <- moduleName
170 declType <- qualifyingList Explicit
163 declType <- qualifyingList Explicit
171 qName <- qualifiedName
164 qName <- qualifiedName
172− return (moduleName', declType, Just qName)
165+ return (moduleName', declType, Just qName, True)
173 qualifyingList expectedType = do
166 qualifyingList expectedType = do
174 idents <- P.optionMaybe $ indented *> parens (commaSep parseDeclarationRef)
167 idents <- P.optionMaybe $ indented *> parens (commaSep parseDeclarationRef)
175 return $ fromMaybe Implicit (expectedType <$> idents)
168 return $ fromMaybe Implicit (expectedType <$> idents)