[commit: ghc] master: Simpify constraints from a TH bracket eagerly (43cc549)
Simon Marlow
marlowsd at gmail.com
Thu Feb 10 10:20:04 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/43cc549d6b596a0ba33fff2b126e5149f07eca29
>---------------------------------------------------------------
commit 43cc549d6b596a0ba33fff2b126e5149f07eca29
Author: simonpj at microsoft.com <unknown>
Date: Wed Feb 9 17:50:03 2011 +0000
Simpify constraints from a TH bracket eagerly
See Trac #4949, where having a TH bracket implication
was messing things up. Better to get rid of it right away.
>---------------------------------------------------------------
compiler/typecheck/TcSplice.lhs | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/compiler/typecheck/TcSplice.lhs b/compiler/typecheck/TcSplice.lhs
index 2e81314..1956e5b 100644
--- a/compiler/typecheck/TcSplice.lhs
+++ b/compiler/typecheck/TcSplice.lhs
@@ -348,10 +348,22 @@ tcBracket brack res_ty
-- instance), but we aren't otherwise interested in the
-- results. Nor do we care about ambiguous dictionaries etc.
-- We will type check this bracket again at its usage site.
- ; _ <- newImplication BracketSkol [] [] $
- setStage brack_stage $
- do { meta_ty <- tc_bracket cur_stage brack
- ; unifyType meta_ty res_ty }
+ --
+ -- We build a single implication constraint with a BracketSkol;
+ -- that in turn tells simplifyCheck to report only definite
+ -- errors
+ ; (_,lie) <- captureConstraints $
+ newImplication BracketSkol [] [] $
+ setStage brack_stage $
+ do { meta_ty <- tc_bracket cur_stage brack
+ ; unifyType meta_ty res_ty }
+
+ -- It's best to simplify the constraint now, even though in
+ -- principle some later unification might be useful for it,
+ -- because we don't want these essentially-junk TH implication
+ -- contraints floating around nested inside other constraints
+ -- See for example Trac #4949
+ ; _ <- simplifyTop lie
-- Return the original expression, not the type-decorated one
; pendings <- readMutVar pending_splices
More information about the Cvs-ghc
mailing list