mirror of
https://github.com/GaloisInc/cryptol.git
synced 2024-10-26 14:20:59 +03:00
Better error
This commit is contained in:
parent
f426edca1c
commit
1b42bb5e6a
@ -637,13 +637,17 @@ instance Rename TopDecl where
|
||||
$ DParameterConstraint <$> mapM (rnLocated rename) ds
|
||||
|
||||
DModule m -> DModule <$> traverse rename m
|
||||
DImport li -> DImport <$> traverse renI li
|
||||
DImport li -> DImport <$> renI li
|
||||
DModParam mp -> DModParam <$> rename mp
|
||||
|
||||
renI :: ImportG (ImpName PName) -> RenameM (ImportG (ImpName Name))
|
||||
renI i = do m <- rename (iModule i)
|
||||
recordImport m
|
||||
pure i { iModule = m }
|
||||
renI :: Located (ImportG (ImpName PName)) ->
|
||||
RenameM (Located (ImportG (ImpName Name)))
|
||||
renI li =
|
||||
do m <- rename (iModule i)
|
||||
recordImport (srcRange li) m
|
||||
pure li { thing = i { iModule = m } }
|
||||
where
|
||||
i = thing li
|
||||
|
||||
|
||||
instance Rename ModParam where
|
||||
@ -668,7 +672,7 @@ renameSig nm sig =
|
||||
ImpTop t -> ModPath (TopModule t)
|
||||
shadowNames' CheckOverlap env $
|
||||
depsOf depName
|
||||
do imps <- traverse (traverse renI) (sigImports sig)
|
||||
do imps <- traverse renI (sigImports sig)
|
||||
tps <- traverse rename (sigTypeParams sig)
|
||||
cts <- traverse (traverse rename) (sigConstraints sig)
|
||||
fun <- traverse rename (sigFunParams sig)
|
||||
|
@ -399,14 +399,14 @@ warnUnused m0 env rw =
|
||||
* record external dependency if the name refers to an external import
|
||||
* record an error if the imported thing is a functor
|
||||
-}
|
||||
recordImport :: ImpName Name -> RenameM ()
|
||||
recordImport i =
|
||||
recordImport :: Range -> ImpName Name -> RenameM ()
|
||||
recordImport r i =
|
||||
do ro <- RenameM ask
|
||||
case Map.lookup i (roResolvedModules ro) of
|
||||
Just loc ->
|
||||
case rmodKind loc of
|
||||
AModule -> pure ()
|
||||
_ -> bad
|
||||
k -> recordError (ModuleKindMismatch r i AModule k)
|
||||
Nothing
|
||||
| Just topName <- case i of
|
||||
ImpTop m -> Just m
|
||||
@ -415,13 +415,14 @@ recordImport i =
|
||||
RenameM $ sets_ \s ->
|
||||
s { rwExternalDeps = ifPublic iface <>
|
||||
rwExternalDeps s }
|
||||
when (ifaceIsFunctor iface) bad
|
||||
when (ifaceIsFunctor iface)
|
||||
(recordError (ModuleKindMismatch r i AModule AFunctor))
|
||||
-- XXX: This could be a signature, but we don't have top
|
||||
-- signature interfaces.
|
||||
|
||||
-- This may happen if encoutnered an error (e.g., undefined name)
|
||||
| otherwise -> pure ()
|
||||
|
||||
where
|
||||
bad = recordError (InvalidFunctorImport i)
|
||||
|
||||
-- XXX: Maybe we'd want to cache some of the conversion to Mod?
|
||||
-- | This gives the loaded *external* modules.
|
||||
|
Loading…
Reference in New Issue
Block a user