1. 08 Feb, 2016 7 commits
    • Simon Peyton Jones's avatar
      Add comments to TcCoercibleFail · a96c4e7c
      Simon Peyton Jones authored
      Flag up the problem highlighted in Trac #11518 comment:15
      a96c4e7c
    • Simon Peyton Jones's avatar
      6036cb6f
    • Simon Peyton Jones's avatar
      Add Edward Kmett's example as a test case · 4e653012
      Simon Peyton Jones authored
      This is a more stressful example of T11480.
      4e653012
    • Ben Gamari's avatar
      e2b66a0e
    • Simon Peyton Jones's avatar
      Fix SimpleFail12 error output · 20f90ea3
      Simon Peyton Jones authored
      I missed this on my previous commit, somehow
         2cf3ca Allow foralls in instance decls
      Apologies.
      20f90ea3
    • Simon Peyton Jones's avatar
      Allow foralls in instance decls · 2cf3cac6
      Simon Peyton Jones authored
      This patch finally makes it possible to have explicit
      foralls in an instance decl
         instance forall (a :: *). Eq a => Eq [a] where ...
      
      This is useful to allow kind signatures or indeed
      explicicit kind for-alls; see Trac #11519
      
      I thought it would be really easy, because an instance
      declaration already contains an actual HsSigType, so all
      the syntactic baggage is there.  But in fact it turned
      out that instance declarations were kind-checked a
      little differently, because the body kind of the forall
      is 'Constraint' rather than '*'.
      
      So I fixed that.  There a slight kludge
      (see Note [Body kind of a HsQualTy], but it's still a
      significant improvement.
      
      I also did the usual other round of refactoring,
      improved a few error messages, tidied up comments etc.
      The only significant aspect of all that was
      
        * Kill mkNakedSpecSigmaTy, mkNakedPhiTy, mkNakedFunTy
          These function names suggest that they do something
          complicated, but acutally they do nothing. So I
          killed them.
      
        * Swap the arg order of mkNamedBinder, just so that it is
          convenient to say 'map (mkNamedBinder Invisible) tvs'
      
        * I had to improve isPredTy, to deal with (illegal)
          types like
             (Eq a => Eq [a]) => blah
          See Note [isPeredTy complications] in Type.hs
      
      Still to come: user manual documentation for the
      instance-decl change.
      2cf3cac6
    • Simon Peyton Jones's avatar
      Remove unused export from TcUnify · 8263d09e
      Simon Peyton Jones authored
      ..namely buildImplication.
      
      Plus white space in TcDeriv
      8263d09e
  2. 07 Feb, 2016 22 commits
  3. 06 Feb, 2016 3 commits
  4. 05 Feb, 2016 2 commits
  5. 04 Feb, 2016 3 commits
    • Ömer Sinan Ağacan's avatar
      Remove unused LiveVars and SRT fields of StgCase and StgLetNoEscape · 4f9967aa
      Ömer Sinan Ağacan authored
      Also remove the functions and types that became useless after removing
      the fields:
      
      - SRT functions
      - LiveInfo type and functions
      - freeVarsToLiveVars
      - unariseLives and unariseSRT
      
      Reviewers: bgamari, simonpj, austin
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1880
      4f9967aa
    • Ben Gamari's avatar
      Fix a few loose ends from D1795 · bbc0ec57
      Ben Gamari authored
      George updated the Diff but I didn't noticed until it was too late.
      bbc0ec57
    • Georgios Karachalias's avatar
      Overhaul the Overhauled Pattern Match Checker · 28f951ed
      Georgios Karachalias authored
      Overhaul the Overhauled Pattern Match Checker
      
      * Changed the representation of Value Set Abstractions. Instead of
      using a prefix tree, we now use a list of Value Vector Abstractions.
      The set of constraints Delta for every Value Vector Abstraction is the
      oracle state so that we solve everything only once.
      
      * Instead of doing everything lazily, we prune at once (and in general
      everything is much stricter). Hence, an example written with pattern
      guards is checked in almost the same time as the equivalent with
      pattern matching.
      
      * Do not store the covered and the divergent sets at all. Since what we
      only need is a yes/no (does this clause cover anything? Does it force
      any thunk?) We just keep a boolean for each.
      
      * Removed flags `-Wtoo-many-guards` and `-ffull-guard-reasoning`.
      Replaced with `fmax-pmcheck-iterations=n`. Still debatable what should
      the default `n` be.
      
      * When a guard is for sure not going to contribute anything, we treat
      it as such: The oracle is not called and cases `CGuard`, `UGuard` and
      `DGuard` from the paper are not happening at all (the generation of a
      fresh variable, the unfolding of the pattern list etc.). his combined
      with the above seems to be enough to drop the memory increase for test
      T783 down to 18.7%.
      
      * Do not export function `dsPmWarn` (it is now called directly from
      within `checkSingle` and `checkMatches`).
      
      * Make `PmExprVar` hold a `Name` instead of an `Id`. The term oracle
      does not handle type information so using `Id` was a waste of
      time/space.
      
      * Added testcases T11195, T11303b (data families) and T11374
      
      The patch addresses at least the following:
      Trac #11195, #11276, #11303, #11374, #11162
      
      Test Plan: validate
      
      Reviewers: goldfire, bgamari, hvr, austin
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D1795
      28f951ed
  6. 03 Feb, 2016 1 commit
  7. 02 Feb, 2016 2 commits