1. 15 Dec, 2014 12 commits
  2. 14 Dec, 2014 10 commits
  3. 13 Dec, 2014 2 commits
    • Sergei Trofimovich's avatar
      Parser: remove unused rule (copy/paste error) · 288c7c6a
      Sergei Trofimovich authored
      Summary:
      Found out when tracking down conflicts reported by happy.
      It was accidentally introduced in large Api Annotations
      patch: 803fc5db
      
      Before:
        unused rules: 1
        shift/reduce conflicts:  60
        reduce/reduce conflicts: 16
      After:
        shift/reduce conflicts:  60
        reduce/reduce conflicts: 12
      
      Unused rule is seen in happy's --info= output as:
          rule 180 is unused
          ...
          decl_cls -> 'default' infixexp '::' sigtypedoc     (180)
          decl_cls -> 'default' infixexp '::' sigtypedoc     (181)
      
      While at it removed 'q' typo in parser conflict log :)
      Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
      
      Reviewers: simonmar, austin, alanz
      
      Reviewed By: alanz
      
      Subscribers: carter, thomie
      
      Differential Revision: https://phabricator.haskell.org/D569
      288c7c6a
    • eir@cis.upenn.edu's avatar
      reduceTyFamApp_maybe should *not* normalise arguments first. · 3ec93917
      eir@cis.upenn.edu authored
      Doing so made the solver gobble up tons of memory, now that matchFam
      calls reduceTyFamApp_maybe. But, I don't know why, yet! Will
      look more closely at this soon.
      3ec93917
  4. 12 Dec, 2014 2 commits
    • eir@cis.upenn.edu's avatar
      Flat constraint --> Simple constraint · 8a0de692
      eir@cis.upenn.edu authored
      8a0de692
    • eir@cis.upenn.edu's avatar
      Rewrite `Coercible` solver · 0cc47eb9
      eir@cis.upenn.edu authored
      Summary:
      This is a rewrite of the algorithm to solve for Coercible "instances".
      
      A preliminary form of these ideas is at
      https://ghc.haskell.org/trac/ghc/wiki/Design/NewCoercibleSolver
      
      The basic idea here is that the `EqPred` constructor of `PredTree`
      now is parameterised by a new type `EqRel` (where
      `data EqRel = NomEq | ReprEq`). Thus, every equality constraint can
      now talk about nominal equality (the usual case) or representational
      equality (the `Coercible` case).
      
      This is a change from the previous
      behavior where `Coercible` was just considered a regular class with
      a special case in `matchClassInst`.
      
      Because of this change, representational equalities are now
      canonicalized just like nominal ones, allowing more equalities
      to be solved -- in particular, the case at the top of #9117.
      
      A knock-on effect is that the flattener must be aware of the
      choice of equality relation, because the inert set now stores
      both representational inert equalities alongside the nominal
      inert equalities. Of course, we can use representational equalities
      to rewrite only within another representational equality --
      thus the parameterization of the flattener.
      
      A nice side effect of this change is that I've introduced a new
      type `CtFlavour`, which tracks G vs. W vs. D, removing some ugliness
      in the flattener.
      
      This commit includes some refactoring as discussed on D546.
      It also removes the ability of Deriveds to rewrite Deriveds.
      
      This fixes bugs #9117 and #8984.
      
      Reviewers: simonpj, austin, nomeata
      
      Subscribers: carter, thomie
      
      Differential Revision: https://phabricator.haskell.org/D546
      
      GHC Trac Issues: #9117, #8984
      0cc47eb9
  5. 11 Dec, 2014 5 commits
  6. 10 Dec, 2014 9 commits