1. 03 Jun, 2021 3 commits
    • Xia Li-yao's avatar
      460cc187
    • Shayne Fletcher's avatar
      CountDeps: print graph of module dependencies in dot format · 79d12d34
      Shayne Fletcher authored and  Marge Bot's avatar Marge Bot committed
      The tests `CountParserDeps.hs` and `CountAstDeps.hs` are implemented
      by calling `CountDeps`. In this MR, `CountDeps.printDeps` is updated
      such tat by uncommenting a line, you can print a module's dependency
      graph showing what includes what. The output is in a format suitable
      for use with graphviz.
      79d12d34
    • Sebastian Graf's avatar
      WW: Mark absent errors as diverging again · b585aff0
      Sebastian Graf authored and  Marge Bot's avatar Marge Bot committed
      As the now historic part of `NOTE [aBSENT_ERROR_ID]` explains, we used to have
      `exprIsHNF` respond True to `absentError` and give it a non-bottoming demand
      signature, in order to perform case-to-let on certain `case`s we used to emit
      that scrutinised `absentError` (Urgh).
      
      What changed, why don't we emit these questionable absent errors anymore?
      The absent errors in question filled in for binders that would end up in
      strict fields after being seq'd. Apparently, the old strictness analyser would
      give these binders an absent demand, but today we give them head-strict demand
      `1A` and thus don't replace with absent errors at all.
      
      This fixes items (1) and (2) of #19853.
      b585aff0
  2. 02 Jun, 2021 9 commits
    • Matthew Pickering's avatar
      Fix infinite looping in hptSomeModulesBelow · b66cf8ad
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      When compiling Agda we entered into an infinite loop as the stopping
      condition was a bit wrong in hptSomeModulesBelow.
      
      The bad situation was something like
      
      * We would see module A (NotBoot) and follow it dependencies
      * Later on we would encounter A (Boot) and follow it's dependencies,
        because the lookup would not match A (NotBoot) and A (IsBoot)
      * Somewhere in A (Boot)s dependencies, A (Boot) would appear again and
        lead us into an infinite loop.
      
      Now the state marks whether we have been both variants (IsBoot and
      NotBoot) so we don't follow dependencies for A (Boot) many times.
      b66cf8ad
    • Matthew Pickering's avatar
      CI: Don't explicitly build hadrian before using run_hadrian · 852a12c8
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      This causes hadrian to be built twice because the second time uses a
      different index state.
      852a12c8
    • Matthew Pickering's avatar
      Run both lint jobs together · de33143c
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      de33143c
    • Matthew Pickering's avatar
      hadrian: Speed up lint:base rule · 437a6ccd
      Matthew Pickering authored and  Marge Bot's avatar Marge Bot committed
      The rule before decided to build the whole stage1 compiler, but this was
      unecessary as we were just missing one header file which can be
      generated directly by calling configure.
      
      Before: 18 minutes
      After: 54s
      437a6ccd
    • Vladislav Zavialov's avatar
      Disallow linear arrows in GADT records (#19928) · 7d8e1549
      Vladislav Zavialov authored and  Marge Bot's avatar Marge Bot committed
      Before this patch, GHC used to silently accept programs such as the
      following:
      
      	data R where
      	  D1 :: { d1 :: Int } %1 -> R
      
      The %1 annotation was completely ignored. Now it is a proper error.
      
      One remaining issue is that in the error message (⊸) turns
      into (%1 ->). This is to be corrected with upcoming exactprint updates.
      7d8e1549
    • Divam Narula's avatar
      Specify the reason for import for the backpack's extra imports · c5a9e32e
      Divam Narula authored and  Marge Bot's avatar Marge Bot committed
      c5a9e32e
    • Zubin's avatar
      Fail before checking instances in checkHsigIface if exports don't match (#19244) · adddf248
      Zubin authored and  Marge Bot's avatar Marge Bot committed
      adddf248
    • Roland Senn's avatar
      Allow primops in a :print (and friends) command. Fix #19394 · fcd124d5
      Roland Senn authored and  Marge Bot's avatar Marge Bot committed
      * For primops from `GHC.Prim` lookup the HValues in `GHC.PrimopWrappers`.
      * Add short error messages if a user tries to use a *Non-Id* value or a
        `pseudoop` in a `:print`, `:sprint` or `force`command.
      * Add additional test cases for `Magic Ids`.
      fcd124d5
    • vdukhovni's avatar
      Improve wording of fold[lr]M documentation. · 6b6c4b9a
      vdukhovni authored and  Marge Bot's avatar Marge Bot committed
      The sequencing of monadic effects in foldlM and foldrM was described as
      respectively right-associative and left-associative, but this could be
      confusing, as in essence we're just composing Kleisli arrows, whose
      composition is simply associative.
      
      What matters therefore is the order of sequencing of effects, which
      can be described more clearly without dragging in associativity as
      such.
      
      This avoids describing these folds as being both left-to-right and
      right-to-left depending on whether we're tracking effects or operator
      application.  The new text should be easier to understand.
      6b6c4b9a
  3. 29 May, 2021 14 commits
  4. 28 May, 2021 2 commits
  5. 27 May, 2021 4 commits
    • Alan Zimmerman's avatar
      [EPA] exact print linear arrows. · 6de8ac89
      Alan Zimmerman authored
      Closes #19903
      
      Note: the normal ppr does not reproduce unicode linear arrows, so that
      part of the normal printing test is ommented out in the Makefile for
      this test. See #18846
      6de8ac89
    • Andreas Klebinger's avatar
      Improve deriveConstants error message. · ce1b8f42
      Andreas Klebinger authored and  Marge Bot's avatar Marge Bot committed
      This fixes #19823
      ce1b8f42
    • Shayne Fletcher's avatar
      Change representation of HsGetField and HsProjection · 9935e99c
      Shayne Fletcher authored and  Marge Bot's avatar Marge Bot committed
      Another change in a series improving record syntax in the AST. The key
      change in this commit is the renaming of `HsFieldLabel` to `DotFieldOcc`.
      9935e99c
    • Andreas Klebinger's avatar
      Enable strict dicts by default at -O2. · 03d69e4b
      Andreas Klebinger authored and  Marge Bot's avatar Marge Bot committed
      In the common case this is a straight performance win
      at a compile time cost so we enable it at -O2.
      
      In rare cases it can lead to compile time regressions
      because of changed inlining behaviour. Which can very
      rarely also affect runtime performance.
      
      Increasing the inlining threshold can help to avoid this
      which is documented in the user guide.
      
      In terms of measured results this reduced instructions executed
      for nofib by 1%.
      However for some cases (e.g. Cabal) enabling this
      by default increases compile time by 2-3% so we enable it only
      at -O2 where it's clear that a user is willing to trade compile
      time for runtime.
      
      Most of the testsuite runs without -O2 so there are few
      perf changes.
      
      Increases:
      T12545/T18698: We perform more WW work because dicts are now treated strict.
      T9198: Also some more work because functions are now subject to W/W
      
      Decreases:
      T14697: Compiling empty modules. Probably because of changes inside ghc.
      T9203:  I can't reproduce this improvement locally. Might be spurious.
      
      -------------------------
      Metric Decrease:
           T12227
           T14697
           T9203
      Metric Increase:
           T9198
           T12545
           T18698a
           T18698b
      -------------------------
      03d69e4b
  6. 26 May, 2021 2 commits
    • Pepe Iborra's avatar
      Avoid fingerprinting the absolute path to the source file · 9faafb0a
      Pepe Iborra authored and  Marge Bot's avatar Marge Bot committed
      This change aims to make source files relocatable w.r.t. to the interface files produced by the compiler.
      This is so that we can download interface files produced by a cloud build system and then reuse them in a local ghcide session
      
      catch another case of implicit includes
      
      actually use the implicit quote includes
      
      add another missing case
      
      recomp020
      
      test that .hi files are reused even if .hs files are moved to a new location
      
      Added recomp021 to record behaviour with non implicit includes
      
      add a note
      
      additional pointer to the note
      
      Mention  #16956 in Note
      9faafb0a
    • Alfredo Di Napoli's avatar
      Support new parser types in GHC · cdbce8fc
      Alfredo Di Napoli authored and  Marge Bot's avatar Marge Bot committed
      This commit converts the lexers and all the parser machinery to use the
      new parser types and diagnostics infrastructure. Furthermore, it cleans
      up the way the parser code was emitting hints.
      
      As a result of this systematic approach, the test output of the
      `InfixAppPatErr` and `T984` tests have been changed. Previously they
      would emit a `SuggestMissingDo` hint, but this was not at all helpful in
      resolving the error, and it was even confusing by just looking at the
      original program that triggered the errors.
      
      Update haddock submodule
      cdbce8fc
  7. 25 May, 2021 6 commits