1. 18 Feb, 2019 3 commits
  2. 17 Feb, 2019 2 commits
    • Alec Theriault's avatar
      Run some of Haddock's tests in the testsuite · 4a09d30b
      Alec Theriault authored
      The 4 main testsuites in Haddock don't have many dependencies, but are
      regularly broken in small ways by changes to the GHC AST or the GHC API.
      The main gotcha is that we'll have to make sure that `haddock-test` and
      the test suite don't add modules without modifying this test. Then again,
      if that happens, the test will fail and someone will noticed.
      4a09d30b
    • Peter Trommler's avatar
      Cmm: Promote stack arguments to word size · af7b0fdb
      Peter Trommler authored
      Smaller than word size integers must be promoted to word size
      when passed on the stack. While on little endian systems we can
      get away with writing a small integer to a word size stack slot
      and read it as a word ignoring the upper bits, on big endian
      systems a small integer write ends up in the most significant
      bits and a word size read that ignores the upper bits delivers
      a random value.
      
      On little endian systems a smaller than word size write to
      the stack might be more efficient but that decision is
      system specific and should be done as an optimization in the
      respective backends.
      
      Fixes #16258
      af7b0fdb
  3. 16 Feb, 2019 6 commits
  4. 15 Feb, 2019 4 commits
  5. 14 Feb, 2019 7 commits
    • Simon Peyton Jones's avatar
      Fail fast in solveLocalEqualities · 5c1f268e
      Simon Peyton Jones authored
      This patch makes us fail fast in TcSimplify.solveLocalEqualities,
      and in TcHsType.tc_hs_sig_type, if there are insoluble constraints.
      
      Previously we ploughed on even if there were insoluble constraints,
      leading to a cascade of hard-to-understand type errors. Failing
      eagerly is much better; hence a lot of testsuite error message
      changes.  Eg if we have
                f :: [Maybe] -> blah
                f xs = e
      then trying typecheck 'f x = e' with an utterly bogus type
      is just asking for trouble.
      
      I can't quite remember what provoked me to make this change,
      but I think the error messages are notably improved, by
      removing confusing clutter and focusing on the real error.
      5c1f268e
    • Simon Peyton Jones's avatar
      Make a smart mkAppTyM · 68278382
      Simon Peyton Jones authored
      This patch finally delivers on Trac #15952.  Specifically
      
      * Completely remove Note [The tcType invariant], along with
        its complicated consequences (IT1-IT6).
      
      * Replace Note [The well-kinded type invariant] with:
      
            Note [The Purely Kinded Type Invariant (PKTI)]
      
      * Instead, establish the (PKTI) in TcHsType.tcInferApps,
        by using a new function mkAppTyM when building a type
        application.  See Note [mkAppTyM].
      
      * As a result we can remove the delicate mkNakedXX functions
        entirely.  Specifically, mkNakedCastTy retained lots of
        extremly delicate Refl coercions which just cluttered
        everything up, and(worse) were very vulnerable to being
        silently eliminated by (say) substTy. This led to a
        succession of bug reports.
      
      The result is noticeably simpler to explain, simpler
      to code, and Richard and I are much more confident that
      it is correct.
      
      It does not actually fix any bugs, but it brings us closer.
      E.g. I hoped it'd fix #15918 and #15799, but it doesn't quite
      do so.  However, it makes it much easier to fix.
      
      I also did a raft of other minor refactorings:
      
      * Use tcTypeKind consistently in the type checker
      
      * Rename tcInstTyBinders to tcInvisibleTyBinders,
        and refactor it a bit
      
      * Refactor tcEqType, pickyEqType, tcEqTypeVis
        Simpler, probably more efficient.
      
      * Make zonkTcType zonk TcTyCons, at least if they have
        any free unification variables -- see zonk_tc_tycon
        in TcMType.zonkTcTypeMapper.
      
        Not zonking these TcTyCons was actually a bug before.
      
      * Simplify try_to_reduce_no_cache in TcFlatten (a lot)
      
      * Combine checkExpectedKind and checkExpectedKindX.
        And then combine the invisible-binder instantation code
        Much simpler now.
      
      * Fix a little bug in TcMType.skolemiseQuantifiedTyVar.
        I'm not sure how I came across this originally.
      
      * Fix a little bug in TyCoRep.isUnliftedRuntimeRep
        (the ASSERT was over-zealous).  Again I'm not certain
        how I encountered this.
      
      * Add a missing solveLocalEqualities in
        TcHsType.tcHsPartialSigType.
        I came across this when trying to get level numbers
        right.
      68278382
    • Matthew Pickering's avatar
      Implement -Wredundant-record-wildcards and -Wunused-record-wildcards · 19626218
      Matthew Pickering authored
      -Wredundant-record-wildcards warns when a .. pattern binds no variables.
      
      -Wunused-record-wildcards warns when none of the variables bound by a ..
      pattern are used.
      
      These flags are enabled by `-Wall`.
      19626218
    • Sylvain Henry's avatar
      NCG: fast compilation of very large strings (#16190) · 1d9a1d9f
      Sylvain Henry authored
      This patch adds an optimization into the NCG: for large strings
      (threshold configurable via -fbinary-blob-threshold=NNN flag), instead
      of printing `.asciz "..."` in the generated ASM source, we print
      `.incbin "tmpXXX.dat"` and we dump the contents of the string into a
      temporary "tmpXXX.dat" file.
      
      See the note for more details.
      1d9a1d9f
    • Sylvain Henry's avatar
      Add perf test for #16190 · 0f1eb88c
      Sylvain Henry authored
      0f1eb88c
    • Alec Theriault's avatar
      Add `liftedTyped` to `Lift` class · 7f26b74e
      Alec Theriault authored
      Implements GHC proposal 43, adding a `liftTyped` method to the `Lift` typeclass.
      This also adds some documentation to `TExp`, describing typed splices and their
      advantages over their untyped counterparts.
      
      Resolves #14671.
      7f26b74e
    • Alexandre Esteves's avatar
      Fix typos [skip ci] · e40f00dc
      Alexandre Esteves authored
      e40f00dc
  6. 13 Feb, 2019 4 commits
  7. 12 Feb, 2019 5 commits
    • Ryan Scott's avatar
      Fix #16299 by deleting incorrect code from IfaceSyn · 8b476d82
      Ryan Scott authored
      GHCi's `:info` command was pretty-printing Haskell98-style data types
      with explicit return kinds if the return kind wasn't `Type`. This
      leads to bizarre output like this:
      
      ```
      λ> :i (##)
      data (##) :: TYPE ('GHC.Types.TupleRep '[]) = (##)
              -- Defined in ‘GHC.Prim’
      ```
      
      Or, with unlifted newtypes:
      
      ```
      λ> newtype T = MkT Int#
      λ> :i T
      newtype T :: TYPE 'IntRep = MkT Int#
              -- Defined at <interactive>:5:1
      ```
      
      The solution is simple: just delete one part from `IfaceSyn` where
      GHC mistakenly pretty-prints the return kinds for non-GADTs.
      8b476d82
    • Richard Eisenberg's avatar
      Fix #16188 · 4a4ae70f
      Richard Eisenberg authored
      There was an awful lot of zipping going on in
      canDecomposableTyConAppOK, and one of the lists being zipped
      was too short, causing the result to be too short. Easily
      fixed.
      
      Also fixes #16204 and #16225
      
      test case: typecheck/should_compile/T16188
                 typecheck/should_compile/T16204[ab]
                 typecheck/should_fail/T16204c
                 typecheck/should_compile/T16225
      4a4ae70f
    • Ryan Scott's avatar
      Fix #16293 by cleaning up Proxy# infelicities · 012257c1
      Ryan Scott authored
      This bug fixes three problems related to `Proxy#`/`proxy#`:
      
      1. Reifying it with TH claims that the `Proxy#` type constructor has
         two arguments, but that ought to be one for consistency with
         TH's treatment for other primitive type constructors like `(->)`.
         This was fixed by just returning the number of
         `tyConVisibleTyVars` instead of using `tyConArity` (which includes
         invisible arguments).
      2. The role of `Proxy#`'s visible argument was hard-coded as nominal.
         Easily fixed by changing it to phantom.
      3. The visibility of `proxy#`'s kind argument was specified, which
         is different from the `Proxy` constructor (which treats it as
         inferred). Some minor refactoring in `proxyHashId` fixed ths up.
      
         Along the way, I had to introduce a `mkSpecForAllTy` function, so
         I did some related Haddock cleanup in `Type`, where that function
         lives.
      012257c1
    • Matthew Pickering's avatar
      6399965d
    • Herbert Valerio Riedel's avatar
      Update array submodule · 093fa2ff
      Herbert Valerio Riedel authored
      093fa2ff
  8. 11 Feb, 2019 1 commit
  9. 10 Feb, 2019 8 commits
    • Alec Theriault's avatar
      Hadrian: add LLVM flavours · b1662e81
      Alec Theriault authored
      This adds a handful of LLVM flavours and the accompanying
      documentation. These flavours are mostly uninteresting, but
      exist in the Make system.
      b1662e81
    • Peter Trommler's avatar
      Fix Int overflow on 32 bit platform · 07f5cbc8
      Peter Trommler authored
      07f5cbc8
    • Ben Gamari's avatar
      testsuite: Always skip T15897 · f53ef1a7
      Ben Gamari authored
      See #16193.
      f53ef1a7
    • Ben Gamari's avatar
      testsuite: Report stdout and stderr in JUnit output · 224fec69
      Ben Gamari authored
      This patch makes the JUnit output more useful as now we also report the
      stdout/stderr in the message which can be used to quickly identify why a
      test is failing without downloading the log.
      
      This also introduces TestResult,
      previously we were simply passing around tuples, making things the
      implementation rather difficult to follow and harder to extend.
      224fec69
    • Matthew Pickering's avatar
      Capture and simplify constraints arising from running typed splices · a48753bd
      Matthew Pickering authored
      This fixes a regression caused by #15471 where splicing in a trivial
      program such as `[|| return () ||]` would fail as the dictionary for
      `return` would never get bound in the module containing the splice.
      
      Arguably this is symptomatic of a major problem affecting TTH where we
      serialise renamed asts and then retype check them. The reference to the
      dictionary should be fully determined at the quote site so that splicing
      doesn't have to solve any implicits at all. It's a coincidence this
      works due to coherence but see #15863 and #15865 for examples where
      things do go very wrong.
      
      Fixes #16195
      a48753bd
    • Sylvain Henry's avatar
      Remove ghctags (#16274) · 027017fb
      Sylvain Henry authored
      027017fb
    • Alec Theriault's avatar
      Make CI via Hadrian build docs · 53a870f4
      Alec Theriault authored
      53a870f4
    • Alec Theriault's avatar
      Fix invalid doc comment · e67384f4
      Alec Theriault authored
      The invalid doc comments were exposed by 24b39ce5.
      The fix is to properly escaped the `{-` and `-}` in the doc comments.
      Some other miscallaneous markup issues are also fixed.
      e67384f4