1. 21 Nov, 2013 7 commits
  2. 20 Nov, 2013 3 commits
  3. 19 Nov, 2013 2 commits
  4. 18 Nov, 2013 5 commits
  5. 17 Nov, 2013 2 commits
  6. 15 Nov, 2013 7 commits
    • Simon Peyton Jones's avatar
      Include funTyCon in oprhNamesOfType (fixes Trac #8535) · 26c9d591
      Simon Peyton Jones authored
      Thanks to parcs for identifying both the bug and the right solution.
      26c9d591
    • Simon Peyton Jones's avatar
      Fix canIrredPred again · 1e0ef826
      Simon Peyton Jones authored
      This follows up the earlier patch to Trac #6068, which I
      obviously hadn't validated properly.
      1e0ef826
    • Simon Peyton Jones's avatar
      Improve orientation · a836b69c
      Simon Peyton Jones authored
      I came across some stupid re-orientation, when debugging something else.
      For example, we were re-orienting
      
          t ~ fsk
      to
         fsk ~ t
      where fsk is a flatten *skolem* and t is a meta type varaible.
      The logic was just wrong.
      a836b69c
    • Simon Peyton Jones's avatar
      Fix a subtle bug in kind-mis-matched equalities (Trac #6068) · dff0e99d
      Simon Peyton Jones authored
      When we have an equality constraint where the LHS and RHS
      have ill-matched kinds, it get turned into a CIrredEvCan
      because a CTyEqCan/CFunEqCan are guaranteed kind-compatible.
      
      But that in turn led to a bug because in the constraint
          c  =  (a:k1) ~ (b:k2)
      the kind variables k1 and k2 don't show up in tyVarsOfType c.
      Why not?  Because it looks like
          (~) k1 (a:k1) (b:k2)
      Maybe (~) should have two kind arguments?  That seemed
      like too big a change for not (we wait for NoKinds), so
      this patch fixes the bug for now.
      dff0e99d
    • Simon Peyton Jones's avatar
      Improve error message · 434d7836
      Simon Peyton Jones authored
      Accommodating Simon M's suggestion (Trac #4268, comment 17)
      434d7836
    • Simon Peyton Jones's avatar
      Fix the unlit path in count_lines · 699dc540
      Simon Peyton Jones authored
      699dc540
    • parcs's avatar
      Simplify and improve coverage of ":info" instance lookup · eb8fb434
      parcs authored
      During instance lookup, we can treat classes and data families like any
      other TyCon instead of special-casing them.  This approach, aside from
      being simpler, has the benefit of returning extra relevant instances for
      classes and data families.  For example, given
      
      class A a
      instance B (a :: Constraint)
      instance A B
      
      ":info B" will now also print "instance A B" where previously it didn't
      due to the special casing of class TyCons in lookupInsts.
      
      This improves upon the existing patch for Trac #4175
      eb8fb434
  7. 14 Nov, 2013 9 commits
    • Iavor S. Diatchki's avatar
      Change the representation and move TcBuiltInSynFamily. · 19b8809c
      Iavor S. Diatchki authored
      The changes in more detail:
      
        * `TcBuiltInSynFamily` is now known as `BuiltinSynFamily` and
           lives in `CoAxiom`
      
        * `sfMatchFam` returns (CoAxiomRule, [Type], Type),
           which is enough to make Coersion or TcCoercion,
           depending on what what we need.
      
        * The rest of the compiler is updated to reflect these changes,
          most notably we can eliminate the cludge (XXX) in FamInstEnv
          and remove the lhs-boot file.
      19b8809c
    • Duncan Coutts's avatar
      Don translate UserInterrupt into ExitFailure 1, let it propagate · 12cdd6da
      Duncan Coutts authored
      It is important that if a program recieved ^C from the user, and the
      program terminates as a result, that it exit with SIGINT so that the
      parent process knows that was the case. For example cabal calling ghc
      will then be able to tell the difference between it failing and the user
      interrupting with ^C and report (or not) appropriately.
      
      So we should just let the UserInterrupt exception propagate to the top
      level error handler which will do the right thing.
      
      See http://www.cons.org/cracauer/sigint.html
      12cdd6da
    • Duncan Coutts's avatar
      Improve the shutdownHaskellAndSignal and add fast exit · a987b800
      Duncan Coutts authored
      This is the RTS part of a patch to base's topHandler to handle exiting
      by a signal.
      
      The intended behaviour is that on Unix, throwing ExitFailure (-sig)
      results in the process terminating with that signal. Previously
      shutdownHaskellAndSignal was only used for exiting with SIGINT due to
      the UserInterrupt exception.
      
      Improve shutdownHaskellAndSignal to do the signal part more carefully.
      In particular, it (should) now reliably terminates the process one way
      or another. Previusly if the signal was blocked, ignored or handled then
      shutdownHaskellAndSignal would actually return!
      
      Also, the topHandler code has two paths a careful shutdown and a "fast
      exit" where it does not give finalisers a chance to run. We want to
      support that mode also when we want to exit by signal. So rather than
      the base code directly calling stg_exit as it did before, we have a
      fastExit bool paramater for both shutdownHaskellAnd{Exit,Signal}.
      a987b800
    • Simon Marlow's avatar
    • Simon Marlow's avatar
      simplify processNurseryForDead · 5b0b83be
      Simon Marlow authored
      It wasn't actually broken, but it wasn't obviously right either.
      5b0b83be
    • Simon Marlow's avatar
      comments · 35c05d71
      Simon Marlow authored
      35c05d71
    • Simon Marlow's avatar
      fix a small memory leak with +RTS -hb · 334545e0
      Simon Marlow authored
      334545e0
    • Herbert Valerio Riedel's avatar
      Update `Cabal` to 1.18.1.2 (again) · 69559a42
      Herbert Valerio Riedel authored
      Cabal was already updated to 1.18.1.2. last month, but then got reverted
      by accident by 06aac68d
      
      Signed-off-by: Herbert Valerio Riedel's avatarHerbert Valerio Riedel <hvr@gnu.org>
      69559a42
    • benl's avatar
      Fix bug in LLVM code generator · cb8935d2
      benl authored
      The bitcast operation always needs a type for the source.
      cb8935d2
  8. 13 Nov, 2013 5 commits
    • parcs's avatar
      Make the fields in NameCache strict · bed118a4
      parcs authored
      We've already been making sure to strictly modify the global name cache
      in order to avoid space leaks.  However, that does us little good if the
      fields of the name cache are not made strict as well.
      bed118a4
    • parcs's avatar
      Turn NameCacheUpdater into a newtype · 54957b6e
      parcs authored
      54957b6e
    • parcs's avatar
      Remove unnecessary and deprecated inclusions of Typeable.h · 117b6b8d
      parcs authored
      The build system would've complained loudly about these inclusions if it
      weren't for #8527.
      117b6b8d
    • parcs's avatar
      Remove old workaround for containers <= 0.3 · 9156be56
      parcs authored
      9156be56
    • Iavor S. Diatchki's avatar
      Make type-level evaluation work with :kind! · b2fa2d41
      Iavor S. Diatchki authored
      The main change is to add a case to `reduceTyFamApp_maybe` to evaluate
      built-in type constructors (e.g., (+), (*), and friends).
      
      To avoid problems with recursive modules, I moved the definition of
      TcBuiltInSynFamily from `FamInst` to `FamInstEnv`.  I am still not sure if
      this is the right place.
      
      There is also a wibble that it'd be nice to fix:
      
      when we evaluate a built-in type function, using`sfMatchFam`, we get
      a `TcCoercion`.  However, `reduceTyFamApp_maybe` needs a `Corecion`.
      I couldn't find a nice way to convert between the two, so I resorted to
      a bit of hack (marked with `XXX`).
      
      The hack is that we happen to know that the built-in constructors for
      the type-nat functions always return coercions of shape `TcAxiomRuleCo`,
      with no assumptions, so it easy to convert `TcCoercion` to `Coercion`
      in this one case.  This is enough to make things work, but it is clearly
      a cludge.
      b2fa2d41