1. 07 Sep, 2017 4 commits
  2. 06 Sep, 2017 4 commits
    • Herbert Valerio Riedel's avatar
      Update xhtml submodule · a04cfcfb
      Herbert Valerio Riedel authored
      This fixes a minor thinko about future module exports
      related to Semigroup/Monoid
      a04cfcfb
    • Gabor Greif's avatar
      Cleanups, remove commented-out code · c6726d6a
      Gabor Greif authored
      and join type signatures
      c6726d6a
    • Moritz Angermann's avatar
      Clean up opt and llc · 22733532
      Moritz Angermann authored
      The LLVM backend shells out to LLVMs `opt` and `llc` tools. This clean
      up introduces a shared data structure to carry the arguments we pass to
      each tool so that corresponding flags are next to each other. It drops
      the hard coded data layouts in favor of using `-mtriple` and have LLVM
      infer them. Furthermore we add `clang` as a proper tool, so we don't
      rely on assuming that `clang` is called `clang` on the `PATH` when using
      `clang` as the assembler.  Finally this diff also changes the type of
      `optLevel` from `Int` to `Word`, as we do not have negative optimization
      levels.
      
      Reviewers: erikd, hvr, austin, rwbarton, bgamari, kavon
      
      Reviewed By: kavon
      
      Subscribers: michalt, Ericson2314, ryantrinkle, dfeuer, carter, simonpj,
      kavon, simonmar, thomie, erikd, snowleopard
      
      Differential Revision: https://phabricator.haskell.org/D3352
      22733532
    • Ben Gamari's avatar
      rts: Fix use of #if · 0cd467b2
      Ben Gamari authored
      0cd467b2
  3. 05 Sep, 2017 13 commits
  4. 04 Sep, 2017 1 commit
  5. 02 Sep, 2017 5 commits
    • Ryan Scott's avatar
      Document the Generic(1) laws · 0ec43769
      Ryan Scott authored
      Summary:
      Some code that @dfeuer was writing implicitly depended on these laws,
      but they didn't appear to be enshrined in the Haddocks. Let's do so.
      
      Test Plan: Read it
      
      Reviewers: austin, hvr, bgamari, dfeuer
      
      Reviewed By: dfeuer
      
      Subscribers: rwbarton, thomie, dfeuer
      
      Differential Revision: https://phabricator.haskell.org/D3908
      0ec43769
    • Ryan Scott's avatar
      Fix #14167 by using isGadtSyntaxTyCon in more places · 8e4229ab
      Ryan Scott authored
      Summary:
      Two places in GHC effectively attempt to //guess// whether a data type
      was declared using GADT syntax:
      
      1. When reifying a data type in Template Haskell
      2. When pretty-printing a data type (e.g., via `:info` in GHCi)
      
      But there's no need for heuristics here, since we have a 100% accurate way to
      determine whether a data type was declared using GADT syntax: the
      `isGadtSyntaxTyCon` function! By simply using that as the metric, we obtain
      far more accurate TH reification and pretty-printing results.
      
      This is technically a breaking change, since Template Haskell reification will
      now reify some data type constructors as `(Rec)GadtC` that it didn't before,
      and some data type constructors that were previously reified as `(Rec)GadtC`
      will no longer be reified as such. But it's a very understandable breaking
      change, since the previous behavior was simply incorrect.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, goldfire, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14167
      
      Differential Revision: https://phabricator.haskell.org/D3901
      8e4229ab
    • Ryan Scott's avatar
      Disallow bang/lazy patterns in the RHSes of implicitly bidirectional patsyns · 5dd6b13c
      Ryan Scott authored
      Summary:
      GHC was allowing implicitly bidirectional pattern synonyms with bang
      patterns and irrefutable patterns in the RHS, like so:
      
      ```lang=haskell
      pattern StrictJust a = Just !a
      ```
      
      This has multiple problems:
      
      1. `Just !a` isn't a valid expression, so it feels strange to allow it in an
         implicitly bidirectional pattern synonym.
      2. `StrictJust` doesn't provide the strictness properties one would expect
         from a strict constructor. (One could imagine a design where the
         `StrictJust` builder infers a bang pattern for its pattern variable, but
         accomplishing this inference in a way that accounts for all possible
         patterns on the RHS, including other pattern synonyms, is somewhat
         awkward, so we do not pursue this design.)
      
      We nip these issues in the bud by simply disallowing bang/irrefutable patterns
      on the RHS.
      
      Test Plan: make test TEST="T14112 unidir"
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14112
      
      Differential Revision: https://phabricator.haskell.org/D3896
      5dd6b13c
    • Ryan Scott's avatar
      Document the intricacies of ForallC variable quantification better · 6330b0b0
      Ryan Scott authored
      Summary:
      I recently (re-)discovered that `ForallC` quantifies different type variables
      depending on whether `GadtC` is present or not. This is an important
      enough gotcha where I feel like this fact should also be advertised in the
      `template-haskell` documentation itself, so this patch does just that.
      
      Test Plan: Read it
      
      Reviewers: goldfire, austin, bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13885
      
      Differential Revision: https://phabricator.haskell.org/D3880
      6330b0b0
    • Herbert Valerio Riedel's avatar
      Update transformers submodule · 590e7376
      Herbert Valerio Riedel authored
      This updates `transformers` from the v0.5.2 release to the
      v0.5.4 release + unreleased changes
      
      This is a pre-requisite for the Semigroup=>Monoid implementation
      590e7376
  6. 01 Sep, 2017 4 commits
  7. 31 Aug, 2017 5 commits
    • Herbert Valerio Riedel's avatar
      Add missing Semigroup instances in utils/{hpc,runghc} · b2c2e3e8
      Herbert Valerio Riedel authored
      This is a follow-up to c0feee90
      b2c2e3e8
    • Herbert Valerio Riedel's avatar
      Add missing Semigroup instances to compiler · c0feee90
      Herbert Valerio Riedel authored
      This is a pre-requisite for implementing the Semigroup/Monoid proposal.
      The instances have been introduced in a way to minimise warnings.
      c0feee90
    • Simon Peyton Jones's avatar
      Really fix Trac #14158 · 2c133b67
      Simon Peyton Jones authored
      I dug more into how #14158 started working. I temporarily reverted the
      patch that "fixed" it, namely
      
          commit a6c448b4
          Author: Simon Peyton Jones <simonpj@microsoft.com>
          Date:   Mon Aug 28 17:33:59 2017 +0100
      
          Small refactor of getRuntimeRep
      
      Sure enough, there was a real bug, described in the new
      TcExpr Note [Visible type application zonk]
      
      In general, syntactic substituion should be kind-preserving!
      Maybe we should check that invariant...
      2c133b67
    • Simon Peyton Jones's avatar
      Small changes to ddump-tc tracing · 3790ea90
      Simon Peyton Jones authored
      3790ea90
    • Simon Peyton Jones's avatar
      Add debugPprType · 805b29bb
      Simon Peyton Jones authored
      We pretty-print a type by converting it to an IfaceType and
      pretty-printing that.  But
       (a) that's a bit indirect, and
       (b) delibrately loses information about (e.g.) the kind
            on the /occurrences/ of a type variable
      
      So this patch implements debugPprType, which pretty prints
      the type directly, with no fancy formatting.  It's just used
      for debugging.
      
      I took the opportunity to refactor the debug-pretty-printing
      machinery a little.  In particular, define these functions
      and use them:
      
        ifPprDeubug :: SDoc -> SDOc -> SDoc
          -- Says what to do with and without -dppr-debug
        whenPprDebug :: SDoc -> SDoc
          -- Says what to do with  -dppr-debug; without is empty
        getPprDebug :: (Bool -> SDoc) -> SDoc
      
      getPprDebug used to be called sdocPprDebugWith
      whenPprDebug used to be called ifPprDebug
      
      So a lot of files get touched in a very mechanical way
      805b29bb
  8. 30 Aug, 2017 3 commits
    • Simon Peyton Jones's avatar
      Define and use HsArg · fca19628
      Simon Peyton Jones authored
      All this Left/Right business was making my head spin, so I defined
      
      data HsArg tm ty
        = HsValArg tm   -- Argument is an ordinary expression     (f arg)
        | HsTypeArg  ty -- Argument is a visible type application (f @ty)
      
      and used it.  This is just simple refactor; no change in behaviour.
      fca19628
    • Simon Peyton Jones's avatar
      Add comments to RnTypes · 628b6669
      Simon Peyton Jones authored
      These comments clarify the details of:
      
        commit 0257dacf
        Author: Simon Peyton Jones <simonpj@microsoft.com>
        Date:   Mon Aug 28 14:20:02 2017 +0100
      
            Refactor bindHsQTyVars and friends
      628b6669
    • Simon Peyton Jones's avatar
      Add some traceRn and (Outputable StmtTree) · 567dca6e
      Simon Peyton Jones authored
      I added these when investigating Trac #14163, but they'll be
      useful anyway.
      567dca6e
  9. 29 Aug, 2017 1 commit