Heads up: this commit means you need to blow away all your .hi files. Simon
| -----Original Message----- | From: ghc-commits [mailto:ghc-commits-boun...@haskell.org] On Behalf | Of g...@git.haskell.org | Sent: 21 November 2014 13:03 | To: ghc-comm...@haskell.org | Subject: [commit: ghc] master: Rejig builders for pattern synonyms, | especially unlifted ones (e876208) | | Repository : ssh://g...@git.haskell.org/ghc | | On branch : master | Link : | http://ghc.haskell.org/trac/ghc/changeset/e876208117a34fb58f7f1e470de2 | f954b3ca303d/ghc | | >--------------------------------------------------------------- | | commit e876208117a34fb58f7f1e470de2f954b3ca303d | Author: Simon Peyton Jones <simo...@microsoft.com> | Date: Fri Nov 21 10:04:09 2014 +0000 | | Rejig builders for pattern synonyms, especially unlifted ones | | When a pattern synonym is for an unlifted pattern, its "builder" | would | naturally be a top-level unlifted binding, which isn't allowed. | So we | give it an extra Void# argument. | | Our Plan A involved then making *two* Ids for these builders, with | some consequential fuss in the desugarer. This was more pain than | I | liked, so I've re-jigged it. | | * There is just one builder for a pattern synonym. | | * It may have an extra Void# arg, but this decision is signalled | by the Bool in the psBuilder field. | | I did the same for the psMatcher field. | | Both Bools are serialised into interface files, so there is | absolutely no doubt whether that extra Void# argument is | required. | | * I renamed "wrapper" to "builder". We have too may "wrappers" | | * In order to deal with typecchecking occurrences of P in | expressions, | I refactored the tcInferId code in TcExpr. | | All of this allowed me to revert 5fe872 | "Apply compulsory unfoldings during desugaring, except for | `seq` which is special." | which turned out to be a rather messy hack in DsBinds | | | >--------------------------------------------------------------- | | e876208117a34fb58f7f1e470de2f954b3ca303d | compiler/basicTypes/PatSyn.lhs | 207 +++++++++++++++----------- | ---- | compiler/deSugar/DsExpr.lhs | 22 +--- | compiler/deSugar/DsUtils.lhs | 10 +- | compiler/iface/BuildTyCl.lhs | 8 +- | compiler/iface/IfaceSyn.lhs | 12 +- | compiler/iface/MkIface.lhs | 9 +- | compiler/iface/TcIface.lhs | 65 ++-------- | compiler/typecheck/TcBinds.lhs | 14 +-- | compiler/typecheck/TcExpr.lhs | 162 ++++++++---------------- | compiler/typecheck/TcPatSyn.lhs | 237 +++++++++++++++++++++----- | --------- | compiler/typecheck/TcPatSyn.lhs-boot | 4 +- | compiler/typecheck/TcRnMonad.lhs | 5 + | 12 files changed, 338 insertions(+), 417 deletions(-) | | Diff suppressed because of size. To see it, use: | | git diff-tree --root --patch-with-stat --no-color --find-copies- | harder --ignore-space-at-eol --cc | e876208117a34fb58f7f1e470de2f954b3ca303d | _______________________________________________ | ghc-commits mailing list | ghc-comm...@haskell.org | http://www.haskell.org/mailman/listinfo/ghc-commits _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs