YhcSource codeContentsIndex
RenameLib
Description
Needs IdSupply.
Synopsis
data RenameState = RenameState Flags Id (Id, PackedString) [Map (TokenId, IdKind) Id] (Map (TokenId, IdKind) Id) (Map Id Info) [(Id, [(Pos, Id)])] (Maybe [Id]) [Error] [Id]
type RenameToken = (PackedString -> Id -> TokenId -> TokenId, TokenId -> TokenId, TokenId -> IdKind -> IE, TokenId -> (InfixClass TokenId, Int))
type RenameToken2 = (PackedString -> Id -> TokenId -> TokenId, TokenId -> TokenId, TokenId -> IdKind -> IE)
type RenameMonad a = State RenameToken RenameState a RenameState
type RenameRMonad a b = State a RenameState b RenameState
type RenameMonadEmpty = State0 RenameToken RenameState RenameState
type RenameRMonadEmpty a = State0 a RenameState RenameState
keepRS :: RenameState -> (Id, ((TokenId, IdKind) -> Id, (TokenId, IdKind) -> Maybe Id), (Id, PackedString), Map Id Info, [(Id, [(Pos, Id)])], Maybe [Id], [Error])
thisModule :: PackedString -> TokenId -> Bool
is2rs :: Flags -> PackedString -> (TokenId -> [TokenId]) -> ((TokenId -> Bool) -> a) -> Overlap -> ImportState -> Either [Error] (TokenId -> TokenId, a, RenameState, Map (TokenId, IdKind) (Either [Pos] [Id]))
fixFixityRS :: (TokenId -> (InfixClass TokenId, Int)) -> RenameState -> [(InfixClass TokenId, Int, [FixId TokenId])] -> (TokenId -> (InfixClass TokenId, Int), RenameState)
getSymbolTableRS :: RenameState -> Map Id Info
getErrorsRS :: RenameState -> (RenameState, [Error])
pushScope :: a -> RenameState -> RenameState
popScope :: a -> (b, RenameState) -> (b, RenameState)
renameError :: Error -> a -> RenameMonad a
lookupAll :: [Map (TokenId, IdKind) Id] -> (TokenId, IdKind) -> Maybe Id
uniqueTid :: Pos -> IdKind -> TokenId -> RenameMonad Id
fixTid :: IdKind -> TokenId -> RenameMonad (InfixClass TokenId, Int)
bindTid :: Pos -> IdKind -> TokenId -> a -> RenameState -> RenameState
bindNK :: Pos -> RenameMonad TokenId
checkPuns :: Pos -> t -> RenameState -> RenameState
checkTid :: Pos -> IdKind -> TokenId -> RenameRMonad a Bool
transTypes :: [(TokenId, Id)] -> [Id] -> [Context TokenId] -> [Type TokenId] -> RenameMonad NewType
transTVar :: Pos -> [(TokenId, Id)] -> TokenId -> RenameMonad NT
uniqueTVar :: (Eq a, Show a) => Pos -> [(a, Id)] -> a -> RenameMonad Id
transContext :: [(TokenId, Id)] -> Context TokenId -> RenameMonad (Id, Id)
transType :: [(TokenId, Id)] -> Type TokenId -> RenameMonad NT
defineDefault :: [Type Id] -> a -> RenameState -> RenameState
defineType :: TokenId -> NewType -> RenameMonad Id
defineClass :: Pos -> TokenId -> NewType -> [(Id, Id)] -> RenameToken -> RenameState -> RenameState
defineDataPrim :: TokenId -> NewType -> Int -> RenameMonad Id
defineData :: Maybe Bool -> TokenId -> NewType -> [Id] -> RenameMonad Id
defineMethod :: Pos -> TokenId -> NewType -> Int -> Id -> TokenId -> RenameMonad Id
defineConstr :: TokenId -> TokenId -> NewType -> [Maybe Id] -> Id -> RenameMonad Id
defineField :: TokenId -> Id -> Id -> ((Maybe (Pos, TokenId, c), b), Int) -> (a, b1, TokenId -> IdKind -> IE, TokenId -> (InfixClass TokenId, Int)) -> RenameState -> (Maybe (Pos, Id, Id), RenameState)
localTid :: PackedString -> Id -> TokenId -> TokenId
globalTid :: PackedString -> Id -> TokenId -> TokenId
defineVar :: TokenId -> RenameMonad Id
defineDefaultMethod :: TokenId -> RenameMonad Id
defineInstMethod :: TokenId -> RenameMonad Id
defineDerived :: Id -> [(Pos, Id)] -> a -> RenameState -> RenameState
strAT :: Ord a => Map a Info -> a -> String
data ImportState
data NT
data NewType
data IE
data Info
data Flags
Documentation
data RenameState
Should be a record ... but should its field names be exported?
Constructors
RenameState Flags Id (Id, PackedString) [Map (TokenId, IdKind) Id] (Map (TokenId, IdKind) Id) (Map Id Info) [(Id, [(Pos, Id)])] (Maybe [Id]) [Error] [Id]
show/hide Instances
type RenameToken = (PackedString -> Id -> TokenId -> TokenId, TokenId -> TokenId, TokenId -> IdKind -> IE, TokenId -> (InfixClass TokenId, Int))
type RenameToken2 = (PackedString -> Id -> TokenId -> TokenId, TokenId -> TokenId, TokenId -> IdKind -> IE)
type RenameMonad a = State RenameToken RenameState a RenameState
type RenameRMonad a b = State a RenameState b RenameState
type RenameMonadEmpty = State0 RenameToken RenameState RenameState
type RenameRMonadEmpty a = State0 a RenameState RenameState
keepRS :: RenameState -> (Id, ((TokenId, IdKind) -> Id, (TokenId, IdKind) -> Maybe Id), (Id, PackedString), Map Id Info, [(Id, [(Pos, Id)])], Maybe [Id], [Error])
Destruct rename state to obtain all its elements we are interested in. Additionally checks some properties of types.
thisModule :: PackedString -> TokenId -> Bool
Only important that it works for data, class, type and newtype
is2rs :: Flags -> PackedString -> (TokenId -> [TokenId]) -> ((TokenId -> Bool) -> a) -> Overlap -> ImportState -> Either [Error] (TokenId -> TokenId, a, RenameState, Map (TokenId, IdKind) (Either [Pos] [Id]))
Basically transform the importState into a renameState
fixFixityRS :: (TokenId -> (InfixClass TokenId, Int)) -> RenameState -> [(InfixClass TokenId, Int, [FixId TokenId])] -> (TokenId -> (InfixClass TokenId, Int), RenameState)
getSymbolTableRS :: RenameState -> Map Id Info
getErrorsRS :: RenameState -> (RenameState, [Error])
pushScope :: a -> RenameState -> RenameState
popScope :: a -> (b, RenameState) -> (b, RenameState)
renameError :: Error -> a -> RenameMonad a
lookupAll :: [Map (TokenId, IdKind) Id] -> (TokenId, IdKind) -> Maybe Id
Looks up identifier (given as token,kind) in list of trees. Returns first entry found.
uniqueTid :: Pos -> IdKind -> TokenId -> RenameMonad Id
Looks up id in rename table for identifier given through its kind and token. If no entry exists, new id is created but appropriate error message added to rename state.
fixTid :: IdKind -> TokenId -> RenameMonad (InfixClass TokenId, Int)
bindTid :: Pos -> IdKind -> TokenId -> a -> RenameState -> RenameState
Adds the the given identifier (position, kind of id, token with name) to the active names in renameState. Adds error to renameState, if identifier is already an active name, that is, redefinition occurred.
bindNK :: Pos -> RenameMonad TokenId
checkPuns :: Pos -> t -> RenameState -> RenameState
checkTid :: Pos -> IdKind -> TokenId -> RenameRMonad a Bool
Checks if given identifier (kind, token) is already known as active name. It is used to check if a field have already been included in the bindings
transTypes :: [(TokenId, Id)] -> [Id] -> [Context TokenId] -> [Type TokenId] -> RenameMonad NewType
This function makes use of the ability of NewType to contain several types.
transTVar :: Pos -> [(TokenId, Id)] -> TokenId -> RenameMonad NT
uniqueTVar :: (Eq a, Show a) => Pos -> [(a, Id)] -> a -> RenameMonad Id
transContext :: [(TokenId, Id)] -> Context TokenId -> RenameMonad (Id, Id)
transType :: [(TokenId, Id)] -> Type TokenId -> RenameMonad NT
defineDefault :: [Type Id] -> a -> RenameState -> RenameState
Adds list of default types to RenameState. Checks for illegal types and redefinition, extending error messages appropriately.
defineType
:: TokenIdtype synonym
-> NewTypethe type it is defined to denote
-> RenameMonad Idid of the type synonym
Add a type synonym to symboltable. (It must be already in renaming table.)
defineClass
:: Pos
-> TokenId
-> NewTypepseudo type built from class and type variable (type of dictionary?)
-> [(Id, Id)](type info for method, default info for method)
-> RenameToken
-> RenameState
-> RenameState
Add a class to symboltable. (It must be already in renaming table.) Also checks for duplicate predicates in context (=> extend error messages)
defineDataPrim :: TokenId -> NewType -> Int -> RenameMonad Id
defineData
:: Maybe BoolNothing: newtype, Just False: data unboxed, Just True: data (boxed)
-> TokenIdtype constructor
-> NewTypedefined type (coded with type variables)
-> [Id]data constructors
-> RenameMonad Id
Add entry for data or newtype declaration to symboltable.
defineMethod
:: Posposition of type declaration
-> TokenIdmethod id
-> NewTypemethod type
-> Intmethod arity
-> Idclass to which method belongs
-> TokenIdclass name
-> RenameMonad Id
Add entry for type declaration of given method to symboltable. Return identifier for this entry.
defineConstr :: TokenId -> TokenId -> NewType -> [Maybe Id] -> Id -> RenameMonad Id
defineField :: TokenId -> Id -> Id -> ((Maybe (Pos, TokenId, c), b), Int) -> (a, b1, TokenId -> IdKind -> IE, TokenId -> (InfixClass TokenId, Int)) -> RenameState -> (Maybe (Pos, Id, Id), RenameState)
localTid :: PackedString -> Id -> TokenId -> TokenId
Creates token for instance methods for tuple type? Another nonsensicle application of tuple tokens... gone wierd
globalTid :: PackedString -> Id -> TokenId -> TokenId
if token is not qualified make it qualified with given module name
defineVar :: TokenId -> RenameMonad Id
defineDefaultMethod :: TokenId -> RenameMonad Id
defineInstMethod :: TokenId -> RenameMonad Id
defineDerived :: Id -> [(Pos, Id)] -> a -> RenameState -> RenameState
strAT :: Ord a => Map a Info -> a -> String
data ImportState
It is probably best to refrain from direct access to the fields...
show/hide Instances
data NT
show/hide Instances
Eq NT
Ord NT
Show NT
Substitute NT
data NewType
Perhaps NewType is a type schema? It quantifies variables over an arrow of NTs.
show/hide Instances
data IE

This is Interface Exports

   defined in a lattice   IEall
                         /     \
                        |     IEsome
                      IEsel     |
                        |     IEabs
                         \     /
                          IEnone
  IEall  -> exported (with all constructors/fields/methods)
  IEsome -> exported with selected constructors/fields/methods
  IEabs  -> exported abstractly (without constructors/fields/methods)
  IEnone -> not exported
  IEsel  -> selected constructors/fields/methods
                      (is exported, despite defn below!)
show/hide Instances
Eq IE
Show IE
data Info
Given all the selector functions below, shouldn't these constructors be record constructors? -SamB
show/hide Instances
Show Info
data Flags
show/hide Instances
Show Flags
Produced by Haddock version 0.8