1. 06 May, 2020 1 commit
  2. 05 May, 2020 5 commits
  3. 04 May, 2020 4 commits
  4. 03 May, 2020 4 commits
  5. 01 May, 2020 11 commits
    • Sebastian Graf's avatar
      PmCheck: Pick up `EvVar`s bound in `HsWrapper`s for long-distance info · fd7ea0fe
      Sebastian Graf authored
      `HsWrapper`s introduce evidence bindings through `WpEvLam` which the
      pattern-match coverage checker should be made aware of.
      
      Failing to do so caused #18049, where the resulting impreciseness of
      imcompleteness warnings seemingly contradicted with
      `-Winaccessible-code`.
      
      The solution is simple: Collect all the evidence binders of an
      `HsWrapper` and add it to the ambient `Deltas` before desugaring
      the wrapped expression.
      
      But that means we pick up many more evidence bindings, even when they
      wrap around code without a single pattern match to check! That regressed
      `T3064` by over 300%, so now we are adding long-distance info lazily
      through judicious use of `unsafeInterleaveIO`.
      
      Fixes #18049.
      fd7ea0fe
    • Sebastian Graf's avatar
    • Sylvain Henry's avatar
      Fully remove PprDebug · de9fc995
      Sylvain Henry authored
      PprDebug was a pain to deal with consistently as it is implied by
      `-dppr-debug` but it isn't really a PprStyle. We remove it completely
      and query the appropriate SDoc flag instead (`sdocPprDebug`) via
      helpers (`getPprDebug` and its friends).
      de9fc995
    • Sylvain Henry's avatar
      Remove PprStyle param of logging actions · b3df9e78
      Sylvain Henry authored
      Use `withPprStyle` instead to apply a specific style to a SDoc.
      b3df9e78
    • Sylvain Henry's avatar
      Refactor PprDebug handling · f8386c7b
      Sylvain Henry authored
      If `-dppr-debug` is set, then PprUser and PprDump styles are silently
      replaced with PprDebug style. This was done in `mkUserStyle` and
      `mkDumpStyle` smart constructors. As a consequence they needed a
      DynFlags parameter.
      
      Now we keep the original PprUser and PprDump styles until they are used
      to create an `SDocContext`. I.e. the substitution is only performed in
      `initSDocContext`.
      f8386c7b
    • Sylvain Henry's avatar
      Use platform in Iface Binary · 780de9e1
      Sylvain Henry authored
      780de9e1
    • Ömer Sinan Ağacan's avatar
      a43620c6
    • Ömer Sinan Ağacan's avatar
      Remove OneShotInfo field of LFReEntrant, document OneShotInfo · 05b0a9fd
      Ömer Sinan Ağacan authored
      The field is only used in withNewTickyCounterFun and it's easier to
      directly pass a parameter for one-shot info to withNewTickyCounterFun
      instead of passing it via LFReEntrant. This also makes !2842 simpler.
      
      Other changes:
      
      - New Note (by SPJ) [OneShotInfo overview] added.
      - Arity argument of thunkCode removed as it's always 0.
      05b0a9fd
    • Ben Gamari's avatar
      nonmoving: Eagerly flush all capabilities' update remembered sets · 99ff8145
      Ben Gamari authored
      (cherry picked from commit 2fa79119570b358a4db61446396889b8260d7957)
      99ff8145
    • Ben Gamari's avatar
      nonmoving: Explicitly memoize block count · 54dad3cf
      Ben Gamari authored
      A profile cast doubt on whether the compiler hoisted the bound out the
      loop as I would have expected here. It turns out it did but nevertheless
      it seems clearer to just do this manually.
      54dad3cf
    • Ben Gamari's avatar
      nonmoving: Clear bitmap after initializing block size · 2aa67611
      Ben Gamari authored
      Previously nonmovingInitSegment would clear the bitmap before
      initializing the segment's block size. This is broken since
      nonmovingClearBitmap looks at the segment's block size to determine how
      much bitmap to clear.
      2aa67611
  6. 30 Apr, 2020 13 commits
    • Matthew Pickering's avatar
      Hadrian: Improve tool-args command to support more components · 014ef4a3
      Matthew Pickering authored
      There is a new command to hadrian, tool:path/to/file.hs, which returns
      the options needed to compile that file in GHCi.
      
      This is now used in the ghci script with argument `ghc/Main.hs` but its
      main purpose is to support the new multi-component branch of ghcide.
      014ef4a3
    • Simon Peyton Jones's avatar
      Mark rule args as non-tail-called · 19b701c2
      Simon Peyton Jones authored
      This was just an omission...b I'd failed to call markAllNonTailCall on
      rule args.  I think this bug has been here a long time, but it's quite
      hard to trigger.
      
      Fixes #18098
      19b701c2
    • Simon Peyton Jones's avatar
      Add tests for #17873 · 5bdfdd13
      Simon Peyton Jones authored
      5bdfdd13
    • Alexis King's avatar
    • Alexis King's avatar
      a48cd2a0
    • Alexis King's avatar
      Allow block arguments in arrow control operators · 71484b09
      Alexis King authored
      Arrow control operators have their own entries in the grammar, so they
      did not cooperate with BlockArguments. This was just a minor oversight,
      so this patch adjusts the grammar to add the desired behavior.
      
      fixes #18050
      71484b09
    • Sylvain Henry's avatar
      Unit: split and rename modules · 8bfb0219
      Sylvain Henry authored
      Introduce GHC.Unit.* hierarchy for everything concerning units, packages
      and modules.
      
      Update Haddock submodule
      8bfb0219
    • Sylvain Henry's avatar
      Refactoring unit management code · 10d15f1e
      Sylvain Henry authored
      Over the years the unit management code has been modified a lot to keep
      up with changes in Cabal (e.g. support for several library components in
      the same package), to integrate BackPack, etc. I found it very hard to
      understand as the terminology wasn't consistent, was referring to past
      concepts, etc.
      
      The terminology is now explained as clearly as I could in the Note
      "About Units" and the code is refactored to reflect it.
      
      -------------------
      
      Many names were misleading: UnitId is not an Id but could be a virtual
      unit (an indefinite one instantiated on the fly), IndefUnitId
      constructor may contain a definite instantiated unit, etc.
      
         * Rename IndefUnitId into InstantiatedUnit
         * Rename IndefModule into InstantiatedModule
         * Rename UnitId type into Unit
         * Rename IndefiniteUnitId constructor into VirtUnit
         * Rename DefiniteUnitId constructor into RealUnit
         * Rename packageConfigId into mkUnit
         * Rename getPackageDetails into unsafeGetUnitInfo
         * Rename InstalledUnitId into UnitId
      
      Remove references to misleading ComponentId: a ComponentId is just an
      indefinite unit-id to be instantiated.
      
         * Rename ComponentId into IndefUnitId
         * Rename ComponentDetails into UnitPprInfo
         * Fix display of UnitPprInfo with empty version: this is now used for
           units dynamically generated by BackPack
      
      Generalize several types (Module, Unit, etc.) so that they can be used
      with different unit identifier types: UnitKey, UnitId, Unit, etc.
      
         * GenModule: Module, InstantiatedModule and InstalledModule are now
           instances of this type
         * Generalize DefUnitId, IndefUnitId, Unit, InstantiatedUnit,
           PackageDatabase
      
      Replace BackPack fake "hole" UnitId by a proper HoleUnit constructor.
      
      Add basic support for UnitKey. They should be used more in the future to
      avoid mixing them up with UnitId as we do now.
      
      Add many comments.
      
      Update Haddock submodule
      10d15f1e
    • Sylvain Henry's avatar
      Factorize mungePackagePaths code · ea717aa4
      Sylvain Henry authored
      This patch factorizes the duplicated code used in ghc-pkg and in GHC to
      munge package paths/urls.
      
      It also fixes haddock-html munging in GHC (allowed to be either a file
      or a url) to mimic ghc-pkg behavior.
      ea717aa4
    • Sylvain Henry's avatar
      Refactor UnitInfo load/store from databases · 9e2c8e0e
      Sylvain Henry authored
      Converting between UnitInfo stored in package databases and UnitInfo as
      they are used in ghc-pkg and ghc was done in a very convoluted way (via
      BinaryStringRep and DbUnitModuleRep type classes using fun deps, etc.).
      It was difficult to understand and even more to modify (I wanted to
      try to use a GADT for UnitId but fun deps got in the way).
      
      The new code uses much more straightforward functions to convert between
      the different representations. Much simpler.
      9e2c8e0e
    • Sylvain Henry's avatar
      Remove unused `emptyGenericUnitInfo` · 69562e34
      Sylvain Henry authored
      69562e34
    • Sylvain Henry's avatar
      Refactor UnitInfo · 10a2ba90
      Sylvain Henry authored
      * Rename InstalledPackageInfo into GenericUnitInfo
      
      The name InstalledPackageInfo is only kept for alleged backward
      compatibility reason in Cabal. ghc-boot has its own stripped down copy
      of this datatype but it doesn't need to keep the name. Internally we
      already use type aliases (UnitInfo in GHC, PackageCacheFormat in
      ghc-pkg).
      
      * Rename UnitInfo fields: add "unit" prefix and fix misleading names
      
      * Add comments on every UnitInfo field
      
      * Rename SourcePackageId into PackageId
      
      "Package" already indicates that it's a "source package". Installed
      package components are called units.
      
      Update Haddock submodule
      10a2ba90
    • Sylvain Henry's avatar
      Document backpack fields in DynFlags · 2cfc4ab9
      Sylvain Henry authored
      2cfc4ab9
  7. 28 Apr, 2020 2 commits
    • Ryan Scott's avatar
      Make boxed 1-tuples have known keys · 518a63d4
      Ryan Scott authored
      Unlike other tuples, which use special syntax and are "known" by way
      of a special `isBuiltInOcc_maybe` code path, boxed 1-tuples do not
      use special syntax. Therefore, in order to make sure that the
      internals of GHC are aware of the `data Unit a = Unit a` definition
      in `GHC.Tuple`, we give `Unit` known keys. For the full details, see
      `Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys)`
      in `GHC.Builtin.Types`.
      
      Fixes #18097.
      518a63d4
    • Ryan Scott's avatar
      Define a Quote IO instance · 4b9764db
      Ryan Scott authored
      Fixes #18103.
      4b9764db