Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : supercompiler
http://hackage.haskell.org/trac/ghc/changeset/e2c9fc779cc7b32afe1c2680e8692ab27af78f41 >--------------------------------------------------------------- commit e2c9fc779cc7b32afe1c2680e8692ab27af78f41 Author: Max Bolingbroke <batterseapo...@hotmail.com> Date: Wed Jul 4 18:15:02 2012 +0100 Instantiating with a stack frame *is* real instantiation >--------------------------------------------------------------- compiler/supercompile/Supercompile/Drive/MSG.hs | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/compiler/supercompile/Supercompile/Drive/MSG.hs b/compiler/supercompile/Supercompile/Drive/MSG.hs index a982aab..aa193f8 100644 --- a/compiler/supercompile/Supercompile/Drive/MSG.hs +++ b/compiler/supercompile/Supercompile/Drive/MSG.hs @@ -439,7 +439,7 @@ msgMatch inst_mtch ((_, Heap h_l _, rn_l, k_l), (heap@(Heap _ ids), k, qa), (dee -- ones are only matched against heap-bound ones, and we don't have any generalisation flag to check on update frames. , let k_r_bvs = stackBoundVars k_r heap_non_instantiating x_r = case M.lookup x_r h_r of - Nothing | x_r `elemVarSet` k_r_bvs -> True -- Instantiating with an update-frame bound thing is *probably* OK + Nothing | x_r `elemVarSet` k_r_bvs -> False -- Instantiating with an update-frame bound thing is *not* OK, especially since this might be a leading update frame with a value in the focus! Just hb_r -> isJust (heapBindingLambdaBoundness hb_r) _ -> panic "msgMatch: variable unbound on right" -- (ppr rn_l_inv $$ ppr x_r $$ pPrintFullState fullStatePrettiness (maxBound, heap, k, qa) $$ ppr (h_l, rn_l, k_l) $$ ppr (h_r, rn_r, k_r)) -- NB: just because we have (x_l, hb_l) in the heap *DOESN'T MEAN* there is a x/x_r corresponding to this x_l because we might have: _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc