Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/ac11b1f14c3d0d507cf11eade1855ffc440d3b7b

>---------------------------------------------------------------

commit ac11b1f14c3d0d507cf11eade1855ffc440d3b7b
Author: Simon Peyton Jones <[email protected]>
Date:   Tue Nov 29 15:49:24 2011 +0000

    Refactor (again) the treatment of record-selector bindings
    
    We were generating them from the tcg_tcs field of the TcGblEnv,
    but that goes badly wrong when there are top-level Template
    Haskell splices, because the tcg_tcs field grows successively.
    If we generate record-selector binds for all the TyCons in the
    accumulated list, we generate them multiple times for TyCons
    earlier in the program.  This what was happening in Trac #5665:
      data T = T { x :: Int }
      $(f 4)  -- Top level splice
      ..more code..
    Here the record selector bindings for T were being generated
    twice.
    
    Better instead to generate the record-selector bindings in
    TcTyClsDecls, right where the new TyCons are being declared (as indeed
    they were some time ago).  This pushed me into doing some refactoring:
    instead of returning the record bindings, tcTyAndClassDecls adds them
    to the tcg_binds field of the TcGblEnv.  I think the result is a bit
    nicer, and it has the additional merit of working.

 compiler/typecheck/TcBinds.lhs      |   66 +++++++++++++++++++++--------------
 compiler/typecheck/TcDeriv.lhs      |    2 +-
 compiler/typecheck/TcInstDcls.lhs   |   20 ++++++-----
 compiler/typecheck/TcRnDriver.lhs   |   36 +++++--------------
 compiler/typecheck/TcRnMonad.lhs    |   15 +++++---
 compiler/typecheck/TcTyClsDecls.lhs |   34 ++++++++++-------
 6 files changed, 91 insertions(+), 82 deletions(-)


Diff suppressed because of size. To see it, use:

    git show ac11b1f14c3d0d507cf11eade1855ffc440d3b7b

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to