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

On branch  : master

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

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

commit aa1e0976055e89ee20cb4c393ee05a33d670bc5d
Author: Simon Peyton Jones <[email protected]>
Date:   Sun May 27 22:31:43 2012 +0100

    Add silent superclass parameters (again)
    
    Silent superclass parameters solve the problem that
    the superclasses of a dicionary construction can easily
    turn out to be (wrongly) bottom.  The problem and solution
    are described in
       Note [Silent superclass arguments] in TcInstDcls
    
    I first implemented this fix (with Dimitrios) in Dec 2010, but removed
    it again in Jun 2011 becuase we thought it wasn't necessary any
    more. (The reason we thought it wasn't necessary is that we'd stopped
    generating derived superclass constraints for *wanteds*.  But we were
    wrong; that didn't solve the superclass-loop problem.)
    
    So we have to re-implement it.  It's not hard.  Main features:
    
      * The IdDetails for a DFunId says how many silent arguments it has
    
      * A DFunUnfolding describes which dictionary args are
        just parameters (DFunLamArg) and which are a function to apply
        to the parameters (DFunPolyArg).  This adds the DFunArg type
        to CoreSyn
    
      * Consequential changes to IfaceSyn.  (Binary hi file format changes
        slightly.)
    
      * TcInstDcls changes to generate the right dfuns
    
      * CoreSubst.exprIsConApp_maybe handles the new DFunUnfolding
    
    The thing taht is *not* done yet is to alter the vectoriser to
    pass the relevant extra argument when building a PA dictionary.

 compiler/basicTypes/Id.lhs                     |    7 +-
 compiler/basicTypes/IdInfo.lhs                 |   12 ++-
 compiler/basicTypes/MkId.lhs                   |   20 +++-
 compiler/coreSyn/CoreFVs.lhs                   |    2 +-
 compiler/coreSyn/CoreSubst.lhs                 |    5 +-
 compiler/coreSyn/CoreSyn.lhs                   |   18 +++-
 compiler/coreSyn/CoreTidy.lhs                  |    4 +-
 compiler/coreSyn/CoreUnfold.lhs                |    2 +-
 compiler/coreSyn/CoreUtils.lhs                 |    2 +-
 compiler/coreSyn/PprCore.lhs                   |    4 +
 compiler/iface/BinIface.hs                     |   13 ++-
 compiler/iface/IfaceSyn.lhs                    |   10 +-
 compiler/iface/MkIface.lhs                     |    4 +-
 compiler/iface/TcIface.lhs                     |    8 +-
 compiler/main/TidyPgm.lhs                      |    2 +-
 compiler/simplCore/Simplify.lhs                |    2 +-
 compiler/typecheck/TcErrors.lhs                |    3 +
 compiler/typecheck/TcInstDcls.lhs              |  147 +++++++++++++++---------
 compiler/typecheck/TcSplice.lhs                |    3 +-
 compiler/types/InstEnv.lhs                     |   11 ++-
 compiler/vectorise/Vectorise/Generic/PADict.hs |    2 +-
 21 files changed, 196 insertions(+), 85 deletions(-)


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

    git show aa1e0976055e89ee20cb4c393ee05a33d670bc5d

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

Reply via email to