Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
0aa1d46a
Commit
0aa1d46a
authored
Dec 29, 2006
by
chak@cse.unsw.edu.au.
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Construction of EqPred dictionaries
parent
5f8e2da0
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
13 additions
and
5 deletions
+13
-5
compiler/basicTypes/OccName.lhs
compiler/basicTypes/OccName.lhs
+2
-1
compiler/typecheck/Inst.lhs
compiler/typecheck/Inst.lhs
+11
-4
No files found.
compiler/basicTypes/OccName.lhs
View file @
0aa1d46a
...
@@ -31,7 +31,7 @@ module OccName (
...
@@ -31,7 +31,7 @@ module OccName (
mkSpecOcc, mkForeignExportOcc, mkGenOcc1, mkGenOcc2,
mkSpecOcc, mkForeignExportOcc, mkGenOcc1, mkGenOcc2,
mkDataTOcc, mkDataCOcc, mkDataConWorkerOcc,
mkDataTOcc, mkDataCOcc, mkDataConWorkerOcc,
mkSuperDictSelOcc, mkLocalOcc, mkMethodOcc, mkInstTyTcOcc,
mkSuperDictSelOcc, mkLocalOcc, mkMethodOcc, mkInstTyTcOcc,
mkInstTyCoOcc,
mkInstTyCoOcc,
mkEqPredCoOcc,
-- ** Deconstruction
-- ** Deconstruction
occNameFS, occNameString, occNameSpace,
occNameFS, occNameString, occNameSpace,
...
@@ -445,6 +445,7 @@ mkSpecOcc = mk_simple_deriv varName "$s"
...
@@ -445,6 +445,7 @@ mkSpecOcc = mk_simple_deriv varName "$s"
mkForeignExportOcc = mk_simple_deriv varName "$f"
mkForeignExportOcc = mk_simple_deriv varName "$f"
mkNewTyCoOcc = mk_simple_deriv tcName ":Co"
mkNewTyCoOcc = mk_simple_deriv tcName ":Co"
mkInstTyCoOcc = mk_simple_deriv tcName ":Co" -- derived from rep ty
mkInstTyCoOcc = mk_simple_deriv tcName ":Co" -- derived from rep ty
mkEqPredCoOcc = mk_simple_deriv tcName "$co"
-- Generic derivable classes
-- Generic derivable classes
mkGenOcc1 = mk_simple_deriv varName "$gfrom"
mkGenOcc1 = mk_simple_deriv varName "$gfrom"
...
...
compiler/typecheck/Inst.lhs
View file @
0aa1d46a
...
@@ -83,7 +83,7 @@ Selection
...
@@ -83,7 +83,7 @@ Selection
~~~~~~~~~
~~~~~~~~~
\begin{code}
\begin{code}
instName :: Inst -> Name
instName :: Inst -> Name
instName inst =
id
Name (instTo
Id
inst)
instName inst =
Var.var
Name (instTo
Var
inst)
instToId :: Inst -> TcId
instToId :: Inst -> TcId
instToId inst = ASSERT2( isId id, ppr inst ) id
instToId inst = ASSERT2( isId id, ppr inst ) id
...
@@ -329,9 +329,16 @@ mkPredName uniq loc pred_ty
...
@@ -329,9 +329,16 @@ mkPredName uniq loc pred_ty
= mkInternalName uniq occ (srcSpanStart (instLocSpan loc))
= mkInternalName uniq occ (srcSpanStart (instLocSpan loc))
where
where
occ = case pred_ty of
occ = case pred_ty of
ClassP cls tys -> mkDictOcc (getOccName cls)
ClassP cls _ -> mkDictOcc (getOccName cls)
IParam ip ty -> getOccName (ipNameName ip)
IParam ip _ -> getOccName (ipNameName ip)
EqPred _ _ -> pprPanic "mkPredName" (ppr pred_ty)
EqPred ty _ -> mkEqPredCoOcc baseOcc
where
-- we use the outermost tycon of the lhs, which must be a type
-- function, as the base name for an equality
baseOcc = case splitTyConApp_maybe ty of
Nothing ->
pprPanic "Inst.mkPredName:" (ppr ty)
Just (tc, _) -> getOccName tc
\end{code}
\end{code}
%************************************************************************
%************************************************************************
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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