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:
54fa96a
)
checkWellStaged: reverse comparsion (no change in semantics), plus some comments
author
simonpj@microsoft.com
<unknown>
Wed, 10 Oct 2007 12:40:13 +0000
(12:40 +0000)
committer
simonpj@microsoft.com
<unknown>
Wed, 10 Oct 2007 12:40:13 +0000
(12:40 +0000)
compiler/typecheck/TcEnv.lhs
patch
|
blob
|
history
diff --git
a/compiler/typecheck/TcEnv.lhs
b/compiler/typecheck/TcEnv.lhs
index
63b73fc
..
58bda52
100644
(file)
--- a/
compiler/typecheck/TcEnv.lhs
+++ b/
compiler/typecheck/TcEnv.lhs
@@
-553,12
+553,12
@@
thLevel (Brack l _ _) = l
checkWellStaged :: SDoc -- What the stage check is for
checkWellStaged :: SDoc -- What the stage check is for
- -> ThLevel -- Binding level
+ -> ThLevel -- Binding level (increases inside brackets)
-> ThStage -- Use stage
-> TcM () -- Fail if badly staged, adding an error
checkWellStaged pp_thing bind_lvl use_stage
-> ThStage -- Use stage
-> TcM () -- Fail if badly staged, adding an error
checkWellStaged pp_thing bind_lvl use_stage
- | bind_lvl <= use_lvl -- OK!
- = returnM ()
+ | use_lvl >= bind_lvl -- OK! Used later than bound
+ = returnM () -- E.g. \x -> [| $(f x) |]
| bind_lvl == topLevel -- GHC restriction on top level splices
= failWithTc $
| bind_lvl == topLevel -- GHC restriction on top level splices
= failWithTc $
@@
-566,7
+566,7
@@
checkWellStaged pp_thing bind_lvl use_stage
nest 2 (ptext SLIT("is used in a top-level splice, and must be imported, not defined locally"))]
| otherwise -- Badly staged
nest 2 (ptext SLIT("is used in a top-level splice, and must be imported, not defined locally"))]
| otherwise -- Badly staged
- = failWithTc $
+ = failWithTc $ -- E.g. \x -> $(f x)
ptext SLIT("Stage error:") <+> pp_thing <+>
hsep [ptext SLIT("is bound at stage") <+> ppr bind_lvl,
ptext SLIT("but used at stage") <+> ppr use_lvl]
ptext SLIT("Stage error:") <+> pp_thing <+>
hsep [ptext SLIT("is bound at stage") <+> ppr bind_lvl,
ptext SLIT("but used at stage") <+> ppr use_lvl]