Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Tobias Decking
GHC
Commits
b5267605
Commit
b5267605
authored
Nov 01, 2006
by
simonpj@microsoft.com
Browse files
Make idInfo fail more informatively on TyVars
parent
cc6f35b1
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/basicTypes/Var.lhs
View file @
b5267605
...
...
@@ -88,7 +88,7 @@ data Var
varName :: !Name, -- Always an External or WiredIn Name
realUnique :: FastInt,
idType :: Type,
idInfo
:: IdInfo,
idInfo
_
:: IdInfo,
gblDetails :: GlobalIdDetails }
| LocalId { -- Used for locally-defined Ids
...
...
@@ -96,7 +96,7 @@ data Var
varName :: !Name,
realUnique :: FastInt,
idType :: Type,
idInfo
:: IdInfo,
idInfo
_
:: IdInfo,
lclDetails :: LocalIdDetails }
data LocalIdDetails
...
...
@@ -284,25 +284,30 @@ globaliseId :: GlobalIdDetails -> Id -> Id
globaliseId details id = GlobalId { varName = varName id,
realUnique = realUnique id,
idType = idType id,
idInfo
= idInfo id,
idInfo
_
= idInfo id,
gblDetails = details }
idInfo :: Id -> IdInfo
idInfo (GlobalId {idInfo_ = info}) = info
idInfo (LocalId {idInfo_ = info}) = info
idInfo other_var = pprPanic "idInfo" (ppr other_var)
lazySetIdInfo :: Id -> IdInfo -> Id
lazySetIdInfo id info = id {idInfo = info}
lazySetIdInfo id info = id {idInfo
_
= info}
setIdInfo :: Id -> IdInfo -> Id
setIdInfo id info = seqIdInfo info `seq` id {idInfo = info}
setIdInfo id info = seqIdInfo info `seq` id {idInfo
_
= info}
-- Try to avoid spack leaks by seq'ing
modifyIdInfo :: (IdInfo -> IdInfo) -> Id -> Id
modifyIdInfo fn id
= seqIdInfo new_info `seq` id {idInfo = new_info}
= seqIdInfo new_info `seq` id {idInfo
_
= new_info}
where
new_info = fn (idInfo id)
-- maybeModifyIdInfo tries to avoid unnecesary thrashing
maybeModifyIdInfo :: Maybe IdInfo -> Id -> Id
maybeModifyIdInfo (Just new_info) id = id {idInfo = new_info}
maybeModifyIdInfo (Just new_info) id = id {idInfo
_
= new_info}
maybeModifyIdInfo Nothing id = id
\end{code}
...
...
@@ -319,7 +324,7 @@ mkGlobalId details name ty info
realUnique = getKey# (nameUnique name), -- Cache the unique
idType = ty,
gblDetails = details,
idInfo
= info }
idInfo
_
= info }
mk_local_id :: Name -> Type -> LocalIdDetails -> IdInfo -> Id
mk_local_id name ty details info
...
...
@@ -327,7 +332,7 @@ mk_local_id name ty details info
realUnique = getKey# (nameUnique name), -- Cache the unique
idType = ty,
lclDetails = details,
idInfo
= info }
idInfo
_
= info }
mkLocalId :: Name -> Type -> IdInfo -> Id
mkLocalId name ty info = mk_local_id name ty NotExported info
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment