1. 17 Mar, 2017 10 commits
  2. 16 Mar, 2017 1 commit
  3. 15 Mar, 2017 8 commits
  4. 14 Mar, 2017 10 commits
    • David Feuer's avatar
      Reimplement minusList using Set · 5d9378ef
      David Feuer authored and David Feuer's avatar David Feuer committed
      `minusList ms ns` was `O(m*n)`. Now it's `O((m + n) log n)`, which
      should be a bit better.
      Reviewers: austin, bgamari, mpickering
      Reviewed By: mpickering
      Subscribers: mpickering, rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3341
    • David Feuer's avatar
      Shortcut a test in exprIsOk · d357f526
      David Feuer authored and David Feuer's avatar David Feuer committed
      `exprIsOk` didn't shortcut properly when checking `case` (it used
      `foldl` inappropriately). Fix that.
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3343
    • Richard Eisenberg's avatar
      Fix #13337. · e0c433c8
      Richard Eisenberg authored and Ben Gamari's avatar Ben Gamari committed
      The big change is the introduction of solveSomeEqualities. This
      is just like solveEqualities, but it doesn't fail if there are unsolved
      equalities when it's all done. Anything unsolved is re-emitted. This
      is appropriate if we are not kind-generalizing, so this new form
      is used when decideKindGeneralizationPlan says not to.
      We initially thought that any use of solveEqualities would be tied
      to kind generalization, but this isn't true. For example, we need
      to solveEqualities a bunch in the "tc" pass in TcTyClsDecls (which
      is really desugaring). These equalities are all surely going to be
      soluble (if they weren't the "kc" pass would fail), but we still
      need to solve them again. Perhaps if the "kc" pass produced type-
      checked output that is then desugared, solveEqualities really would
      be tied only to kind generalization.
      Updates haddock submodule.
      Test Plan: ./validate, typecheck/should_compile/T13337
      Reviewers: simonpj, bgamari, austin
      Reviewed By: simonpj
      Subscribers: RyanGlScott, rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3315
    • Tamar Christina's avatar
      Fix Windows GCC driver · 4b673e80
      Tamar Christina authored and Ben Gamari's avatar Ben Gamari committed
      In Windows 10 Insiders build 15019+ which will probably be released
      mainstream somewhere this year Microsoft seems to have started being
      stricter with API calls.
      The call to `FreeConsole` just after `CreateProcess` is making Windows
      treat the process
      as an interactive process. In which case it tries to use the `Desktop
      session` but fails resulting
      in the cryptic error reported.
      I don't understand why the call to `FreeConsole` was there and it
      doesn't seem to be needed,
      so removed.
      This fixes #13411
      Test Plan: ./validate, alternative just do anything with ghc which
      requires compilation.
      Reviewers: austin, bgamari, simonmar
      Reviewed By: bgamari
      Subscribers: rwbarton, thomie, #ghc_windows_task_force
      Differential Revision: https://phabricator.haskell.org/D3319
    • Ryan Scott's avatar
      Allow associated types to pattern-match in non-class-bound variables · 67345ccf
      Ryan Scott authored
      After 8136a5cb (#11450), if you have
      a class with an associated type:
      class C a where
        type T a b
      And you try to create an instance of `C` like this:
      instance C Int where
        type T Int Char = Bool
      Then it is rejected, since you're trying to instantiate the variable ``b`` with
      something other than a type variable. But this restriction proves quite
      onerous in practice, as it prevents you from doing things like this:
      class C a where
        type T a (b :: Identity c) :: c
      instance C Int where
        type T Int ('Identity x) = x
      You have to resort to an auxiliary type family in order to define this now,
      which becomes extremely tiring. This lifts this restriction and fixes #13398,
      in which it was discovered that adding this restriction broke code in the wild.
      Test Plan: ./validate
      Reviewers: simonpj, bgamari, austin
      Reviewed By: simonpj
      Subscribers: rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3302
    • Ryan Scott's avatar
      Further document :type +v's role in analyzing -XTypeApplications in GHCi · b335f506
      Ryan Scott authored
      The section on `-XTypeApplications` in the users' guide isn't terribly
      clear on how to view the visibility of a function type signature's type
      variables in GHCi properly (i.e., using the `:type +v` GHCi command). This
      adds some more exposition that demonstrates how to use `:type +v` (and why you
      don't want to use `:type`).
      Fixes #13401.
      Test Plan: Eyeball it
      Reviewers: bgamari, austin, goldfire, crockeea
      Reviewed By: goldfire, crockeea
      Subscribers: rwbarton, thomie, crockeea
      Differential Revision: https://phabricator.haskell.org/D3310
    • Ben Gamari's avatar
      testsuite: Bump allocations for T4029 · 34f9172f
      Ben Gamari authored
      Both the OS X build machine and my local builds have been failing.
      Unfortunately, our x86_64 Linux machine has been succeeding.
    • Ben Gamari's avatar
      Introduce and use mkLetRec, mkLetNonRec · 1217df48
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      Test Plan: Validate
      Reviewers: austin
      Subscribers: rwbarton, thomie
      Differential Revision: https://phabricator.haskell.org/D3303
    • Simon Peyton Jones's avatar
      Fix CaseIdentity optimisation AGAIN · 82b40598
      Simon Peyton Jones authored
      In this commit
          commit 02ac2974
          Author: Simon Peyton Jones <simonpj@microsoft.com>
          Date:   Wed Nov 16 10:37:47 2011 +0000
          Fix CaseIdentity optimisaion
          In fixing one bug I'd introduced another;
             case x of { T -> T; F -> F }
          wasn't getting optmised!  Trivial to fix.
      I introduced yet another!  This line of code in SimplUtils.mkCase1
          check_eq (Var v)    (DataAlt con) []   = v == dataConWorkId con
                                                   -- Optimisation only
      is patently false when arg_tys is non-empty.  Astonishing that it
      has not shown up before now.
      Easily fixed though.  This was all shown up by Trac #13417, which is
      now fixed.
      Merge to 8.0, 8.2.
    • Gabor Greif's avatar
      Typos in manual and comments · 50512c6b
      Gabor Greif authored
  5. 13 Mar, 2017 11 commits