1. 12 Nov, 2010 3 commits
    • benl's avatar
      3b2b4836
    • simonpj@microsoft.com's avatar
      A (final) re-engineering of the new typechecker · c80364f8
      simonpj@microsoft.com authored
      Regression testing and user feedback for GHC 7.0 taught
      us a lot.  This patch fixes numerous small bugs, and some
      major ones (eg Trac #4484, #4492), and improves type
      error messages.
      
      The main changes are:
      
      * Entirely remove the "skolem equivalance class" stuff;
        a very useful simplification
      
      * Instead, when flattening "wanted" constraints we generate
        unification variables (not flatten-skolems) for the
        flattened type function application
      
      * We then need a fixup pass at the end, TcSimplify.solveCTyFunEqs,
        which resolves any residual equalities of form
            F xi ~ alpha
      
      * When we come across a definite failure (e.g. Int ~ [a]),
        we now defer reporting the error until the end, in case we
        learn more about 'a'.  That is particularly important for
        occurs-check errors.  These are called "frozen" type errors.
      
      * Other improvements in error message generation.
      
      * Better tracing messages
      c80364f8
    • simonpj@microsoft.com's avatar
      Allow the old [$foo| ... |] syntax for quasi-quotes · 9ba922ee
      simonpj@microsoft.com authored
      This is just a backward-compatibility thing, to be removed
      eventually.
      9ba922ee
  2. 11 Nov, 2010 1 commit
  3. 10 Nov, 2010 2 commits
  4. 03 Nov, 2010 4 commits
  5. 02 Nov, 2010 2 commits
  6. 01 Nov, 2010 1 commit
  7. 29 Oct, 2010 1 commit
  8. 01 Nov, 2010 1 commit
  9. 29 Oct, 2010 2 commits
  10. 28 Oct, 2010 1 commit
    • Simon Marlow's avatar
      Remove duplicate PrimopWrappers generation · 5e578e12
      Simon Marlow authored
      We were generating PrimopWrappers.hs twice in two different places,
      one for the normal build and one for Haddock (I think).  Unfortunately
      one of these was causing extra rebuilding, because the file dropped
      into the dist-install/build/autogen directory, where it was picked up
      by the automatic HS_SRCS detection in subsequent make runs.  This was
      exposed by a recent change to HS_SRCS:
      
        Wed Oct 20 11:47:59 BST 2010  Ian Lynagh <igloo@earth.li>
          * Look for sources in Cabal's autogen directory too
      
      This should fix the stage3 failures in the build bots.
      5e578e12
  11. 29 Oct, 2010 4 commits
  12. 28 Oct, 2010 4 commits
  13. 27 Oct, 2010 7 commits
    • simonpj@microsoft.com's avatar
      Two signficant changes to the simplifier · f95a9542
      simonpj@microsoft.com authored
      1. Do eta-expansion at let-bindings, not lambdas.
         I have wanted to do this for a long time.
         See Note [Eta-expanding at let bindings] in SimplUtils
      
      2. Simplify the rather subtle way in which InlineRules (the
         template captured by an INLINE pragma) was simplified.
         Now, these templates are always simplified in "gentle"
         mode only, and only INLINE things inline inside them.
      
         See Note Note [Gentle mode], Note [Inlining in gentle mode]
         and Note [RULEs enabled in SimplGently] in SimplUtils
      f95a9542
    • simonpj@microsoft.com's avatar
      Yet another go at CoreArity · 32bb9e87
      simonpj@microsoft.com authored
      Amazingly, there were still Wrong Things in the arity analysis, 
      exposed by my fiddling with eta expansion.
      
      I simplified the code, clarified the comments, added more examples,
      and tidied it all up.  I hope it's better this time.
      32bb9e87
    • simonpj@microsoft.com's avatar
      Buglet in tcIface, now that nested binders can have pragmas · 6104e5eb
      simonpj@microsoft.com authored
      This fix ties the knot for recursive groups properly
      6104e5eb
    • simonpj@microsoft.com's avatar
      Add strictness for raiseIO# primop · 42fe1649
      simonpj@microsoft.com authored
      42fe1649
    • simonpj@microsoft.com's avatar
      Don't worker-wrapper INLINABLE things · 51367fba
      simonpj@microsoft.com authored
      See Note [Don't w/w INLINABLE things] in WorkWrap
      
      This fixes a bug that Milan found.
      51367fba
    • Simon Marlow's avatar
      Refactoring and tidyup of HscMain and related things (also fix #1666) · 94bf0d36
      Simon Marlow authored
      While trying to fix #1666 (-Werror aborts too early) I decided to some
      tidyup in GHC/DriverPipeline/HscMain.
      
       - The GhcMonad overloading is gone from DriverPipeline and HscMain
         now.  GhcMonad is now defined in a module of its own, and only
         used in the top-level GHC layer.  DriverPipeline and HscMain
         use the plain IO monad and take HscEnv as an argument.
      
       - WarnLogMonad is gone.  printExceptionAndWarnings is now called
         printException (the old name is deprecated).  Session no longer
         contains warnings.
      
       - HscMain has its own little monad that collects warnings, and also
         plumbs HscEnv around.  The idea here is that warnings are collected
         while we're in HscMain, but on exit from HscMain (any function) we
         check for warnings and either print them (via log_action, so IDEs
         can still override the printing), or turn them into an error if
         -Werror is on.
      
       - GhcApiCallbacks is gone, along with GHC.loadWithLogger.  Thomas
         Schilling told me he wasn't using these, and I don't see a good
         reason to have them.
      
       - there's a new pure API to the parser (suggestion from Neil Mitchell):
            parser :: String
                   -> DynFlags
                   -> FilePath
                   -> Either ErrorMessages (WarningMessages, 
                                            Located (HsModule RdrName))
      94bf0d36
    • Simon Marlow's avatar
      follow changes in the GHC API · 2493b180
      Simon Marlow authored
      2493b180
  14. 13 Oct, 2010 2 commits
  15. 27 Oct, 2010 1 commit
  16. 26 Oct, 2010 1 commit
  17. 21 Oct, 2010 1 commit
  18. 24 Oct, 2010 1 commit
  19. 26 Oct, 2010 1 commit
    • gwright@antiope.com's avatar
      Fix for #4318 (Linker failure on OS X 10.6) · 73dd6e84
      gwright@antiope.com authored
      This patch fixes two bugs in the Mach-O linker and adds debugging statements
      to the same. The bugs:
      
      1. The test for symbol->n_value == 0 is removed and replaced by a test of the
      flag field.  Checking the n_value field was just wrong; the value of a
      symbol should only be examined when allocating space for a common block,
      in which case the n_value field gives the size of the block.  This bug
      led to an infrequently occuring linker crash.
      
      I believe the behavior of the linker now agrees with the intent of the
      sketchy Apple documentation.
      
      2. Jump islands were being filled with garbage instead of the the location
      of the referenced symbol. This caused relocations of type X86_64_RELOC_GOT and
      X86_64_RELOC_GOT_LOAD to eventually lead to crashes.  The fix is simply to
      look up the symbol.
      
      Enough debug statements have been added to follow the operation of the Mach-O
      linker while it loads modules.  They are not yet as informative and well
      organized as for ELF.  Improving the debug statements will require some
      reorganization of the code -- the Mach-O linker seems basically sound, but
      is crying out for some refactoring and commenting.
          
      73dd6e84