1. 22 Sep, 2019 31 commits
  2. 21 Sep, 2019 3 commits
    • Sebastian Graf's avatar
      Get rid of PmFake · a7867c79
      Sebastian Graf authored
      The pattern match oracle can now cope with the abundance of information
      that ViewPatterns, NPlusKPats, overloaded lists, etc. provide.
      No need to have PmFake anymore!
      Also got rid of a spurious call to `allCompleteMatches`, which we used to call
      *for every constructor* match. Naturally this blows up quadratically for
      programs like `ManyAlternatives`.
      Metric Decrease:
      Metric Increase:
    • Ömer Sinan Ağacan's avatar
      Document MIN_PAYLOAD_SIZE and mark-compact GC mark bits · ded96fb3
      Ömer Sinan Ağacan authored
      This updates the documentation of the MIN_PAYLOAD_SIZE constant and adds
      a new Note [Mark bits in mark-compact collector] explaning why the
      mark-compact collector uses two bits per objet and why we need
    • Sebastian Graf's avatar
      PredType for type constraints in the pattern match checker instead of EvVar · 1ea8c451
      Sebastian Graf authored
      Using EvVars for capturing type constraints implied side-effects in DsM
      when we just wanted to *construct* type constraints.
      But giving names to type constraints is only necessary when passing
      Givens to the type checker, of which the majority of the pattern match
      checker should be unaware.
      Thus, we simply generate `newtype TyCt = TyCt PredType`, which are
      nicely stateless. But at the same time this means we have to allocate
      EvVars when we want to query the type oracle! So we keep the type oracle
      state as `newtype TyState = TySt (Bag EvVar)`, which nicely makes a
      distinction between new, unchecked `TyCt`s and the inert set in
  3. 20 Sep, 2019 6 commits
    • Simon Peyton Jones's avatar
      Fix bogus type of case expression · 0dad81ca
      Simon Peyton Jones authored
      Issue #17056 revealed that we were sometimes building a case
      expression whose type field (in the Case constructor) was bogus.
      Consider a phantom type synonym
         type S a = Int
      and we want to form the case expression
         case x of K (a::*) -> (e :: S a)
      We must not make the type field of the Case constructor be (S a)
      because 'a' isn't in scope.  We must instead expand the synonym.
      Changes in this patch:
      * Expand synonyms in the new function CoreUtils.mkSingleAltCase.
      * Use mkSingleAltCase in MkCore.wrapFloat, which was the proximate
        source of the bug (when called by exprIsConApp_maybe)
      * Use mkSingleAltCase elsewhere
      * Documentation
          CoreSyn   new invariant (6) in Note [Case expression invariants]
          CoreSyn   Note [Why does Case have a 'Type' field?]
          CoreUtils Note [Care with the type of a case expression]
      * I improved Core Lint's error reporting, which was pretty
        confusing in this case, because it didn't mention that the offending
        type was the return type of a case expression.
      * A little bit of cosmetic refactoring in CoreUtils
    • Simon Peyton Jones's avatar
      Fix PmOracle.addVarCoreCt in-scope set · 17554248
      Simon Peyton Jones authored
      PmOracle.addVarCoreCt was giving a bogus (empty) in-scope set to
      exprIsConApp_maybe, which resulted in a substitution-invariant
      failure (see MR !1647 discussion).
      This patch fixes it, by taking the free vars of the expression.
    • John Ericson's avatar
      Remove pointless partiality in `Parser.ajs` · 1b7e1d31
      John Ericson authored
    • Matthew Pickering's avatar
      Pass -j to ghc-in-ghci CI job · 5390b553
      Matthew Pickering authored
    • Matthew Pickering's avatar
      Remove trailing whitespace · 070f7b85
      Matthew Pickering authored
    • Matthew Pickering's avatar