projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
29723ae
)
Comments and debug output
author
simonpj@microsoft.com
<unknown>
Tue, 6 Feb 2007 12:24:35 +0000
(12:24 +0000)
committer
simonpj@microsoft.com
<unknown>
Tue, 6 Feb 2007 12:24:35 +0000
(12:24 +0000)
compiler/specialise/Rules.lhs
patch
|
blob
|
history
diff --git
a/compiler/specialise/Rules.lhs
b/compiler/specialise/Rules.lhs
index
6fc35a5
..
2798ca1
100644
(file)
--- a/
compiler/specialise/Rules.lhs
+++ b/
compiler/specialise/Rules.lhs
@@
-348,19
+348,25
@@
matchN in_scope tmpl_vars tmpl_es target_es
Just e -> e
other -> unbound tmpl_var'
Just e -> e
other -> unbound tmpl_var'
- unbound var = pprPanic "Template variable unbound in rewrite rule" (ppr var)
+ unbound var = pprPanic "Template variable unbound in rewrite rule"
+ (ppr var $$ ppr tmpl_vars $$ ppr tmpl_vars' $$ ppr tmpl_es $$ ppr target_es)
\end{code}
Note [Template binders]
~~~~~~~~~~~~~~~~~~~~~~~
Consider the following match:
Template: forall x. f x
\end{code}
Note [Template binders]
~~~~~~~~~~~~~~~~~~~~~~~
Consider the following match:
Template: forall x. f x
- Taret: f (x+1)
-This should succeed, because the template variable 'x' has nothing to do with
-the 'x' in the target.
+ Target: f (x+1)
+This should succeed, because the template variable 'x' has
+nothing to do with the 'x' in the target.
-To achive this, we use rnBndrL to rename the template variables if necessary;
-the renamed ones are the tmpl_vars'
+On reflection, this case probably does just work, but this might not
+ Template: forall x. f (\x.x)
+ Target: f (\y.y)
+Here we want to clone when we find the \x, but to know that x must be in scope
+
+To achive this, we use rnBndrL to rename the template variables if
+necessary; the renamed ones are the tmpl_vars'
---------------------------------------------
---------------------------------------------