Copyright | (c) 2013-2016 Galois Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- data NamingEnv
- shadowing :: NamingEnv -> NamingEnv -> NamingEnv
- class BindsNames a where
- namingEnv :: a -> BuildNamingEnv
- data InModule a = InModule (Maybe ModPath) a
- shadowNames :: BindsNames env => env -> RenameM a -> RenameM a
- class Rename f where
- runRenamer :: RenamerInfo -> RenameM a -> (Either [RenamerError] (a, Supply), [RenamerWarning])
- data RenameM a
- data RenamerError
- = MultipleSyms (Located PName) [Name]
- | UnboundName Namespace (Located PName)
- | OverlappingSyms [Name]
- | WrongNamespace Namespace Namespace (Located PName)
- | FixityError (Located Name) Fixity (Located Name) Fixity
- | InvalidConstraint (Type PName)
- | MalformedBuiltin (Type PName) PName
- | BoundReservedType PName (Maybe Range) Doc
- | OverlappingRecordUpdate (Located [Selector]) (Located [Selector])
- | InvalidDependency [DepName]
- data RenamerWarning
- renameVar :: NameType -> PName -> RenameM Name
- renameType :: NameType -> PName -> RenameM Name
- renameModule :: Module PName -> RenameM RenamedModule
- renameTopDecls :: ModName -> [TopDecl PName] -> RenameM (NamingEnv, [TopDecl Name])
- data RenamerInfo = RenamerInfo {}
- data NameType
- data RenamedModule = RenamedModule {}
Documentation
The NamingEnv
is used by the renamer to determine what
identifiers refer to.
Instances
Show NamingEnv Source # | |
Generic NamingEnv Source # | |
Semigroup NamingEnv Source # | |
Monoid NamingEnv Source # | |
NFData NamingEnv Source # | |
Defined in Cryptol.ModuleSystem.NamingEnv | |
PP NamingEnv Source # | |
BindsNames NamingEnv Source # | |
Defined in Cryptol.ModuleSystem.NamingEnv namingEnv :: NamingEnv -> BuildNamingEnv Source # | |
type Rep NamingEnv Source # | |
Defined in Cryptol.ModuleSystem.NamingEnv type Rep NamingEnv = D1 ('MetaData "NamingEnv" "Cryptol.ModuleSystem.NamingEnv" "cryptol-2.13.0-BA7OuzmYZ3M9j8JsJfXs6b" 'True) (C1 ('MetaCons "NamingEnv" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Namespace (Map PName [Name]))))) |
shadowing :: NamingEnv -> NamingEnv -> NamingEnv Source #
Like mappend, but when merging, prefer values on the lhs.
class BindsNames a where Source #
Things that define exported names.
namingEnv :: a -> BuildNamingEnv Source #
Instances
Do somethign in context. If Nothing
than we are working with
a local declaration. Otherwise we are at the top-level of the
given module.
Instances
shadowNames :: BindsNames env => env -> RenameM a -> RenameM a Source #
Shadow the current naming environment with some more names.
Instances
Rename Prop Source # | |
Rename Type Source # | |
Rename TParam Source # | |
Rename Schema Source # | Rename a schema, assuming that none of its type variables are already in scope. |
Rename Pattern Source # | |
Rename Match Source # | |
Rename TypeInst Source # | |
Rename UpdField Source # | Note that after this point the |
Rename FunDesc Source # | |
Rename Expr Source # | |
Rename PrimType Source # | |
Rename Newtype Source # | |
Rename BindDef Source # | |
Rename Bind Source # | Rename a binding. |
Rename PropSyn Source # | |
Rename TySyn Source # | |
Rename ParameterFun Source # | |
Defined in Cryptol.ModuleSystem.Renamer rename :: ParameterFun PName -> RenameM (ParameterFun Name) Source # | |
Rename ParameterType Source # | |
Defined in Cryptol.ModuleSystem.Renamer rename :: ParameterType PName -> RenameM (ParameterType Name) Source # | |
Rename Decl Source # | |
Rename ImpName Source # | |
runRenamer :: RenamerInfo -> RenameM a -> (Either [RenamerError] (a, Supply), [RenamerWarning]) Source #
data RenamerError Source #
MultipleSyms (Located PName) [Name] | Multiple imported symbols contain this name |
UnboundName Namespace (Located PName) | Some name not bound to any definition |
OverlappingSyms [Name] | An environment has produced multiple overlapping symbols |
WrongNamespace Namespace Namespace (Located PName) | expected, actual. When a name is missing from the expected namespace, but exists in another |
FixityError (Located Name) Fixity (Located Name) Fixity | When the fixity of two operators conflict |
InvalidConstraint (Type PName) | When it's not possible to produce a Prop from a Type. |
MalformedBuiltin (Type PName) PName | When a builtin type/type-function is used incorrectly. |
BoundReservedType PName (Maybe Range) Doc | When a builtin type is named in a binder. |
OverlappingRecordUpdate (Located [Selector]) (Located [Selector]) | When record updates overlap (e.g., |
InvalidDependency [DepName] |
Instances
data RenamerWarning Source #
Instances
data RenamedModule Source #
RenamedModule | |
|