1. 02 Dec, 2019 3 commits
  2. 30 Nov, 2019 2 commits
    • Roland Senn's avatar
      Improve tests for #17171 · f8cfe81a
      Roland Senn authored
      While backporting MR !1806 to 8.8.2 (!1885) I learnt the following:
      
      * Tests with `expect_fail` do not compare `*.stderr` output files. So a test using `expect_fail` will not detect future regressions on the `stderr` output.
      * To compare the `*.stderr` output files, I have to use the `exit_code(n)` function.
      * When a release is made, tests with `makefile_test` are converted to use `run_command`.
      * For the test `T17171a` the return code is `1` when running `makefile_test`, however it's `2` when running `run_command`.
      
      Therefore I decided:
      
      * To improve my tests for #17171
      * To change test T17171a from `expect_fail` to `exit_code(2)`
      * To change both tests from  `makefile_test` to `run_command`
      f8cfe81a
    • Vladislav Zavialov's avatar
      Remove HasSrcSpan (#17494) · 5aba5d32
      Vladislav Zavialov authored
      Metric Decrease:
          haddock.compiler
      5aba5d32
  3. 28 Nov, 2019 2 commits
    • Vladislav Zavialov's avatar
      Factor out HsSCC/HsCoreAnn/HsTickPragma into HsPragE · 6985e0fc
      Vladislav Zavialov authored
      This is a refactoring with no user-visible changes (except for GHC API
      users). Consider the HsExpr constructors that correspond to user-written
      pragmas:
      
        HsSCC         representing  {-# SCC ... #-}
        HsCoreAnn     representing  {-# CORE ... #-}
        HsTickPragma  representing  {-# GENERATED ... #-}
      
      We can factor them out into a separate datatype, HsPragE. It makes the
      code a bit tidier, especially in the parser.
      
      Before this patch:
      
        hpc_annot :: { Located ( (([AddAnn],SourceText),(StringLiteral,(Int,Int),(Int,Int))),
                                 ((SourceText,SourceText),(SourceText,SourceText))
                               ) }
      
      After this patch:
      
        prag_hpc :: { Located ([AddAnn], HsPragE GhcPs) }
      6985e0fc
    • Brian Wignall's avatar
      3748ba3a
  4. 27 Nov, 2019 2 commits
    • Vladislav Zavialov's avatar
      Whitespace-sensitive bang patterns (#1087, #17162) · 8168b42a
      Vladislav Zavialov authored
      This patch implements a part of GHC Proposal #229 that covers five
      operators:
      
      * the bang operator (!)
      * the tilde operator (~)
      * the at operator (@)
      * the dollar operator ($)
      * the double dollar operator ($$)
      
      Based on surrounding whitespace, these operators are disambiguated into
      bang patterns, lazy patterns, strictness annotations, type
      applications, splices, and typed splices.
      
      This patch doesn't cover the (-) operator or the -Woperator-whitespace
      warning, which are left as future work.
      8168b42a
    • Sebastian Graf's avatar
      Make warnings for TH splices opt-in · 5a08f7d4
      Sebastian Graf authored
      In #17270 we have the pattern-match checker emit incorrect warnings. The
      reason for that behavior is ultimately an inconsistency in whether we
      treat TH splices as written by the user (`FromSource :: Origin`) or as
      generated code (`Generated`). This was first reported in #14838.
      
      The current solution is to TH splices as `Generated` by default and only
      treat them as `FromSource` when the user requests so
      (-fenable-th-splice-warnings). There are multiple reasons for opt-in
      rather than opt-out:
      
        * It's not clear that the user that compiles a splice is the author of the code
          that produces the warning. Think of the situation where she just splices in
          code from a third-party library that produces incomplete pattern matches.
          In this scenario, the user isn't even able to fix that warning.
        * Gathering information for producing the warnings (pattern-match check
          warnings in particular) is costly. There's no point in doing so if the user
          is not interested in those warnings.
      
      Fixes #17270, but not #14838, because the proper solution needs a GHC
      proposal extending the TH AST syntax.
      5a08f7d4
  5. 25 Nov, 2019 1 commit
  6. 24 Nov, 2019 1 commit
  7. 23 Nov, 2019 4 commits
    • Sebastian Graf's avatar
      Stricten functions ins GHC.Natural · 5747ebe9
      Sebastian Graf authored
      This brings `Natural` on par with `Integer` and fixes #17499.
      Also does some manual CSE for 0 and 1 literals.
      5747ebe9
    • Ryan Scott's avatar
      Prevent -optc arguments from being duplicated in reverse order (#17471) · 15f1dc33
      Ryan Scott authored
      This reverts a part of commit
      7bc5d6c6 that causes all arguments
      to `-optc` (and `-optcxx`) to be passed twice to the C/C++ compiler,
      once in reverse order and then again in the correct order. While
      passing duplicate arguments is usually harmless it can cause breakage
      in this pattern, which is employed by Hackage libraries in the wild:
      
      ```
      ghc Foo.hs foo.c -optc-D -optcFOO
      ```
      
      As `FOO -D -D FOO` will cause compilers to error.
      
      Fixes #17471.
      15f1dc33
    • Abigail's avatar
      Take care to not eta-reduce jumps in CorePrep · de6bbdf2
      Abigail authored
      CorePrep already had a check to prevent it from eta-reducing Ids that
      respond true to hasNoBinding (foreign calls, constructors for unboxed
      sums and products, and Ids with compulsory unfoldings). It did not,
      however, consider join points as ids that 'must be saturated'.
      
      Checking whether the Id responds True to 'isJoinId' should prevent
      CorePrep from turning saturated jumps like the following (from #17429)
      into undersaturated ones:
      
            (\ eta_XP ->
               join { mapped_s1vo _ = lvl_s1vs } in jump mapped_s1vo eta_XP)
      de6bbdf2
    • Ben Gamari's avatar
      rts: Expose interface for configuring EventLogWriters · e43e6ece
      Ben Gamari authored
      This exposes a set of interfaces from the GHC API for configuring
      EventLogWriters. These can be used by consumers like
      [ghc-eventlog-socket](https://github.com/bgamari/ghc-eventlog-socket).
      e43e6ece
  8. 20 Nov, 2019 2 commits
  9. 19 Nov, 2019 2 commits
    • Ben Gamari's avatar
      testsuite: Increase width of stack003 test · a7571a74
      Ben Gamari authored
      Previously the returned tuple seemed to fit in registers on amd64. This
      meant that non-moving collector bug would cause the test to fail on i386
      yet not amd64.
      a7571a74
    • Ben Gamari's avatar
      Give seq a more precise type and remove magic · 08d595c0
      Ben Gamari authored
      `GHC.Prim.seq` previously had the rather plain type:
      
          seq :: forall a b. a -> b -> b
      
      However, it also had a special typing rule to applications
      where `b` is not of kind `Type`.
      
      Issue #17440 noted that levity polymorphism allows us to rather give
      it the more precise type:
      
          seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b
      
      This allows us to remove the special typing rule that we previously
      required to allow applications on unlifted arguments. T9404 contains a
      non-Type application of `seq` which should verify that this works as
      expected.
      
      Closes #17440.
      08d595c0
  10. 17 Nov, 2019 2 commits
  11. 15 Nov, 2019 1 commit
  12. 14 Nov, 2019 1 commit
  13. 13 Nov, 2019 2 commits
  14. 11 Nov, 2019 3 commits
  15. 10 Nov, 2019 2 commits
  16. 09 Nov, 2019 10 commits
    • Simon Peyton Jones's avatar
      Use the right type in :force · 1f98e47d
      Simon Peyton Jones authored
      A missing prime meant that we were considering the wrong
      type in the GHCi debugger, when doing :force on multiple
      arguments (issue #17431).
      
      The fix is trivial.
      1f98e47d
    • Ben Gamari's avatar
      testsuite: Mark T16219 as fragile on Windows · 011f3121
      Ben Gamari authored
      As noted in #17452, this test produces very long file paths which
      exceed the Windows MAX_PATH limitation. Mark the test as fragile for not
      until we can come up with a better solution.
      011f3121
    • Ben Gamari's avatar
      testsuite: Drop T7995 · b62ca659
      Ben Gamari authored
      This test is quite sensitive to the build configuration as it requires that ghc
      have unfoldings, which isn't true in the quick build flavours. I considered
      various options to make the test more robust but none of them seemed
      particularly appealing. Moreover, Simon PJ was a bit skeptical of the value of
      the test to begin with and I strongly suspect that any regression in #7995
      would be accompanied by failures in our other compiler performance tests.
      
      Closes #17399.
      b62ca659
    • Ben Gamari's avatar
      testsuite: Fix putStrLn in saks028 · a9b14790
      Ben Gamari authored
      Bizarrely, `saks028` previously failed reliably, but only on Windows
      (#17450). The test would exit with a zero exit code but simply didn't
      emit the expected text to stderr.
      
      I believe this was due to the fact that the test used `putStrLn`,
      resulting in the output ending up on stdout. This worked on other
      platforms since (apparently) we redirect stdout to stderr when
      evaluating splices. However, on Windows it seems that the redirected
      output wasn't flushed as it was on other platforms.
      
      Anyways, it seems like the right thing to do here is to be explicit
      about our desire for the output to end up on stderr.
      
      Closes #17450.
      a9b14790
    • Ben Gamari's avatar
      testsuite: Ignore stderr in PartialDownsweep · f73fbd2d
      Ben Gamari authored
      As described in #17449, PartialDownsweep is currently fragile due to its
      dependence on the error messages produced by the C preprocessor. To eliminate
      this dependence we simply ignore stderr output, instead relying on the fact
      that the test will exit with a non-zero exit code on failure.
      
      Fixes #17449.
      f73fbd2d
    • Ben Gamari's avatar
      testsuite: Remove redundant cleaning logic from T16511 · 1f871e70
      Ben Gamari authored
      The GHCi script for T16511 had some `rm` commands to clean up output
      from previous runs. This should be harmless since stderr was redirected
      to /dev/null; however, it seems that this redirection doesn't work on
      Windows (perhaps because GHCi uses `cmd` to execute the command-line;
      I'm not sure). I tried to fix it but was unable to find a sensible
      solution.
      
      Regardless, the cleaning logic is quite redundant now that we run each
      test in a hermetic environment. Let's just remove it.
      1f871e70
    • Ben Gamari's avatar
      testsuite: Mark T16219 as unbroken · c1f1f3f9
      Ben Gamari authored
      This was previously broken due to #16386 yet it passes for me locally.
      c1f1f3f9
    • Ben Gamari's avatar
      testsuite: Mark T11627b as fragile · 411ba7ba
      Ben Gamari authored
      It was previously marked as broken due to #12236 however it passes for
      me locally while failing on CI.
      411ba7ba
    • Ben Gamari's avatar
      dcb23ec9
    • Ben Gamari's avatar
      testsuite: Fix header #include order on Windows · a50ecda6
      Ben Gamari authored
      <Rts.h> must always come first.
      a50ecda6