@@ -214,13 +214,14 @@ data ExportMode = Internal | ReExport
214214--
215215exportType
216216 :: MonadError MultipleErrors m
217- => ExportMode
217+ => SourceSpan
218+ -> ExportMode
218219 -> Exports
219220 -> ProperName 'TypeName
220221 -> [ProperName 'ConstructorName]
221222 -> ModuleName
222223 -> m Exports
223- exportType exportMode exps name dctors mn = do
224+ exportType ss exportMode exps name dctors mn = do
224225 let exTypes = exportedTypes exps
225226 exClasses = exportedTypeClasses exps
226227 dctorNameCounts :: [(ProperName 'ConstructorName, Int )]
@@ -242,11 +243,11 @@ exportType exportMode exps name dctors mn = do
242243 ReExport -> do
243244 forM_ (name `M.lookup` exTypes) $ \ (_, mn') ->
244245 when (mn /= mn') $
245- throwExportConflict mn mn' (TyName name)
246+ throwExportConflict ss mn mn' (TyName name)
246247 forM_ dctors $ \ dctor ->
247248 forM_ ((elem dctor . fst ) `find` exTypes) $ \ (_, mn') ->
248249 when (mn /= mn') $
249- throwExportConflict mn mn' (DctorName dctor)
250+ throwExportConflict ss mn mn' (DctorName dctor)
250251 return $ exps { exportedTypes = M. alter updateOrInsert name exTypes }
251252 where
252253 updateOrInsert Nothing = Just (dctors, mn)
@@ -258,45 +259,48 @@ exportType exportMode exps name dctors mn = do
258259--
259260exportTypeOp
260261 :: MonadError MultipleErrors m
261- => Exports
262+ => SourceSpan
263+ -> Exports
262264 -> OpName 'TypeOpName
263265 -> ModuleName
264266 -> m Exports
265- exportTypeOp exps op mn = do
266- typeOps <- addExport TyOpName op mn (exportedTypeOps exps)
267+ exportTypeOp ss exps op mn = do
268+ typeOps <- addExport ss TyOpName op mn (exportedTypeOps exps)
267269 return $ exps { exportedTypeOps = typeOps }
268270
269271-- |
270272-- Safely adds a class to some exports, returning an error if a conflict occurs.
271273--
272274exportTypeClass
273275 :: MonadError MultipleErrors m
274- => ExportMode
276+ => SourceSpan
277+ -> ExportMode
275278 -> Exports
276279 -> ProperName 'ClassName
277280 -> ModuleName
278281 -> m Exports
279- exportTypeClass exportMode exps name mn = do
282+ exportTypeClass ss exportMode exps name mn = do
280283 let exTypes = exportedTypes exps
281284 when (exportMode == Internal ) $ do
282285 when (coerceProperName name `M.member` exTypes) $
283286 throwDeclConflict (TyClassName name) (TyName (coerceProperName name))
284287 when ((elem (coerceProperName name) . fst ) `any` exTypes) $
285288 throwDeclConflict (TyClassName name) (DctorName (coerceProperName name))
286- classes <- addExport TyClassName name mn (exportedTypeClasses exps)
289+ classes <- addExport ss TyClassName name mn (exportedTypeClasses exps)
287290 return $ exps { exportedTypeClasses = classes }
288291
289292-- |
290293-- Safely adds a value to some exports, returning an error if a conflict occurs.
291294--
292295exportValue
293296 :: MonadError MultipleErrors m
294- => Exports
297+ => SourceSpan
298+ -> Exports
295299 -> Ident
296300 -> ModuleName
297301 -> m Exports
298- exportValue exps name mn = do
299- values <- addExport IdentName name mn (exportedValues exps)
302+ exportValue ss exps name mn = do
303+ values <- addExport ss IdentName name mn (exportedValues exps)
300304 return $ exps { exportedValues = values }
301305
302306-- |
@@ -305,25 +309,27 @@ exportValue exps name mn = do
305309--
306310exportValueOp
307311 :: MonadError MultipleErrors m
308- => Exports
312+ => SourceSpan
313+ -> Exports
309314 -> OpName 'ValueOpName
310315 -> ModuleName
311316 -> m Exports
312- exportValueOp exps op mn = do
313- valueOps <- addExport ValOpName op mn (exportedValueOps exps)
317+ exportValueOp ss exps op mn = do
318+ valueOps <- addExport ss ValOpName op mn (exportedValueOps exps)
314319 return $ exps { exportedValueOps = valueOps }
315320
316321-- |
317322-- Safely adds a kind to some exports, returning an error if a conflict occurs.
318323--
319324exportKind
320325 :: MonadError MultipleErrors m
321- => Exports
326+ => SourceSpan
327+ -> Exports
322328 -> ProperName 'KindName
323329 -> ModuleName
324330 -> m Exports
325- exportKind exps name mn = do
326- kinds <- addExport KiName name mn (exportedKinds exps)
331+ exportKind ss exps name mn = do
332+ kinds <- addExport ss KiName name mn (exportedKinds exps)
327333 return $ exps { exportedKinds = kinds }
328334
329335-- |
@@ -332,16 +338,17 @@ exportKind exps name mn = do
332338--
333339addExport
334340 :: (MonadError MultipleErrors m , Ord a )
335- => (a -> Name )
341+ => SourceSpan
342+ -> (a -> Name )
336343 -> a
337344 -> ModuleName
338345 -> M. Map a ModuleName
339346 -> m (M. Map a ModuleName )
340- addExport toName name mn exports =
347+ addExport ss toName name mn exports =
341348 case M. lookup name exports of
342349 Just mn'
343350 | mn == mn' -> return exports
344- | otherwise -> throwExportConflict mn mn' (toName name)
351+ | otherwise -> throwExportConflict ss mn mn' (toName name)
345352 Nothing ->
346353 return $ M. insert name mn exports
347354
@@ -361,12 +368,13 @@ throwDeclConflict new existing =
361368--
362369throwExportConflict
363370 :: MonadError MultipleErrors m
364- => ModuleName
371+ => SourceSpan
372+ -> ModuleName
365373 -> ModuleName
366374 -> Name
367375 -> m a
368- throwExportConflict new existing name =
369- throwError . errorMessage $
376+ throwExportConflict ss new existing name =
377+ throwError . errorMessage' ss $
370378 ExportConflict (Qualified (Just new) name) (Qualified (Just existing) name)
371379
372380-- |
0 commit comments