Skip to content
Snippets Groups Projects
  1. Jul 23, 2020
  2. Jul 21, 2020
    • Vladislav Zavialov's avatar
      Accumulate Haddock comments in P (#17544, #17561, #8944) · 19e80b9a
      Vladislav Zavialov authored and Ben Gamari's avatar Ben Gamari committed
      Haddock comments are, first and foremost, comments. It's very annoying
      to incorporate them into the grammar. We can take advantage of an
      important property: adding a Haddock comment does not change the parse
      tree in any way other than wrapping some nodes in HsDocTy and the like
      (and if it does, that's a bug).
      
      This patch implements the following:
      
      * Accumulate Haddock comments with their locations in the P monad.
        This is handled in the lexer.
      
      * After parsing, do a pass over the AST to associate Haddock comments
        with AST nodes using location info.
      
      * Report the leftover comments to the user as a warning (-Winvalid-haddock).
      19e80b9a
    • Ben Gamari's avatar
      users-guide: Fix :rts-flag:`--copying-gc` documentation · 58235d46
      Ben Gamari authored
      It was missing a newline.
      58235d46
    • Matthew Pickering's avatar
      Use a newtype `Code` for the return type of typed quotations (Proposal #195) · a6257192
      Matthew Pickering authored and Ben Gamari's avatar Ben Gamari committed
      There are three problems with the current API:
      
      1. It is hard to properly write instances for ``Quote m => m (TExp a)`` as the type is the composition
         of two type constructors. Doing so in your program involves making your own newtype and
         doing a lot of wrapping/unwrapping.
      
         For example, if I want to create a language which I can either run immediately or
         generate code from I could write the following with the new API. ::
      
            class Lang r where
              _int :: Int -> r Int
              _if  :: r Bool -> r a -> r a -> r a
      
            instance Lang Identity where
              _int = Identity
              _if (Identity b) (Identity t) (Identity f) = Identity (if b then t else f)
      
            instance Quote m => Lang (Code m) where
              _int = liftTyped
              _if cb ct cf = [|| if $$cb then $$ct else $$cf ||]
      
      2. When doing code generation it is common to want to store code fragments in
         a map. When doing typed code generation, these code fragments contain a
         type index so it is desirable to store them in one of the parameterised
         map data types such as ``DMap`` from ``dependent-map`` or ``MapF`` from
         ``parameterized-utils``.
      
         ::
      
            compiler :: Env -> AST a -> Code Q a
      
            data AST a where ...
            data Ident a = ...
      
            type Env = MapF Ident (Code Q)
      
            newtype Code m a = Code (m (TExp a))
      
         In this example, the ``MapF`` maps an ``Ident String`` directly to a ``Code Q String``.
         Using one of these map types currently requires creating your own newtype and constantly
         wrapping every quotation and unwrapping it when using a splice. Achievable, but
         it creates even more syntactic noise than normal metaprogramming.
      
      3. ``m (TExp a)`` is ugly to read and write, understanding ``Code m a`` is
         easier. This is a weak reason but one everyone
         can surely agree with.
      
      Updates text submodule.
      a6257192
    • Krzysztof Gogolewski's avatar
      Add release notes entry for #17816 · 05910be1
      Krzysztof Gogolewski authored and Ben Gamari's avatar Ben Gamari committed
      [skip ci]
      05910be1
    • Mark Zaidelman's avatar
      Fix a typo in existential_quantification.rst · 863c544c
      Mark Zaidelman authored and Marge Bot's avatar Marge Bot committed
      863c544c
    • Sylvain Henry's avatar
      DynFlags: remove use of sdocWithDynFlags from GHC.Stg.* (#17957) · 30caeee7
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      * add StgPprOpts datatype
      * remove Outputable instances for types that need `StgPprOpts` to be
        pretty-printed and explicitly call type specific ppr functions
      * add default `panicStgPprOpts` for panic messages (when it's not
        convenient to thread StgPprOpts or DynFlags down to the ppr function
        call)
      30caeee7
  3. Jul 20, 2020
  4. Jul 18, 2020
    • Ben Gamari's avatar
      testsuite: Mark ghci tests as fragile under unreg compiler · c26e81d1
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      In particular I have seen T16012 fail repeatedly under the
      unregisterised compiler.
      c26e81d1
    • Stefan Schulze Frielinghaus's avatar
      GHCi: Fix isLittleEndian · 8d59aed6
      Stefan Schulze Frielinghaus authored and Marge Bot's avatar Marge Bot committed
      8d59aed6
    • Chaitanya Koparkar's avatar
      Fix minor typos in a Core.hs note · 49b265f0
      Chaitanya Koparkar authored and Marge Bot's avatar Marge Bot committed
      49b265f0
    • Simon Peyton Jones's avatar
      Refactor the simplification of join binders · e504c913
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This MR (for #18449) refactors the Simplifier's treatment
      of join-point binders.
      
      Specifically, it puts together, into
           GHC.Core.Opt.Simplify.Env.adjustJoinPointType
      two currently-separate ways in which we adjust the type of
      a join point. As the comment says:
      
      -- (adjustJoinPointType mult new_res_ty join_id) does two things:
      --
      --   1. Set the return type of the join_id to new_res_ty
      --      See Note [Return type for join points]
      --
      --   2. Adjust the multiplicity of arrows in join_id's type, as
      --      directed by 'mult'. See Note [Scaling join point arguments]
      
      I think this actually fixes a latent bug, by ensuring that the
      seIdSubst and seInScope have the right multiplicity on the type
      of join points.
      
      I did some tidying up while I was at it.  No more
      setJoinResTy, or modifyJoinResTy: instead it's done locally in
      Simplify.Env.adjustJoinPointType
      e504c913
    • Krzysztof Gogolewski's avatar
      Remove {-# CORE #-} pragma (part of #18048) · 12f90352
      Krzysztof Gogolewski authored and Marge Bot's avatar Marge Bot committed
      This pragma has no effect since 2011.
      It was introduced for External Core, which no longer exists.
      
      Updates haddock submodule.
      12f90352
    • Simon Peyton Jones's avatar
      Improve typechecking of NPlusK patterns · e5525a51
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      This patch (due to Richard Eisenberg) improves
      documentation of the wrapper returned by tcSubMult
      (see Note [Wrapper returned from tcSubMult] in
       GHC.Tc.Utils.Unify).
      
      And, more substantially, it cleans up the multiplicity
      handling in the typechecking of NPlusKPat
      e5525a51
    • Simon Peyton Jones's avatar
      Allow multiple case branches to have a higher rank type · bcb177dd
      Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
      As #18412 points out, it should be OK for multiple case alternatives
      to have a higher rank type, provided they are all the same.
      
      This patch implements that change.  It sweeps away
      GHC.Tc.Gen.Match.tauifyMultipleBranches, and friends, replacing it
      with an enhanced version of fillInferResult.
      
      The basic change to fillInferResult is to permit the case in which
      another case alternative has already filled in the result; and in
      that case simply unify.  It's very simple actually.
      
      See the new Note [fillInferResult] in TcMType
      
      Other refactoring:
      
      - Move all the InferResult code to one place, in GHC.Tc.Utils.TcMType
        (previously some of it was in Unify)
      
      - Move tcInstType and friends from TcMType to Instantiate, where it
        more properly belongs.  (TCMType was getting very long.)
      bcb177dd
    • Hécate Kleidukos's avatar
      Add a Lint hadrian rule and an .hlint.yaml file in base/ · e6cf27df
      Hécate Kleidukos authored and Marge Bot's avatar Marge Bot committed
      e6cf27df
    • Hécate Kleidukos's avatar
      Implement `fullCompilerVersion` · 6ba6a881
      Hécate Kleidukos authored and Marge Bot's avatar Marge Bot committed
      Follow-up of #18403
      
      This MR adds `fullCompilerVersion`, a function that shares the same
      backend as the `--numeric-version` GHC flag, exposing a full,
      three-digit version datatype.
      6ba6a881
    • Ben Gamari's avatar
      rts: Add --copying-gc flag to reverse effect of --nonmoving-gc · 750a1595
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Fixes #18281.
      750a1595
  5. Jul 16, 2020
  6. Jul 15, 2020
Loading