[commit: ghc] master: Rejig builders for pattern synonyms, especially unlifted ones (e876208)
Simon Peyton Jones
simonpj at microsoft.com
Fri Nov 21 13:06:21 UTC 2014
Heads up: this commit means you need to blow away all your .hi files.
Simon
| -----Original Message-----
| From: ghc-commits [mailto:ghc-commits-bounces at haskell.org] On Behalf
| Of git at git.haskell.org
| Sent: 21 November 2014 13:03
| To: ghc-commits at haskell.org
| Subject: [commit: ghc] master: Rejig builders for pattern synonyms,
| especially unlifted ones (e876208)
|
| Repository : ssh://git@git.haskell.org/ghc
|
| On branch : master
| Link :
| http://ghc.haskell.org/trac/ghc/changeset/e876208117a34fb58f7f1e470de2
| f954b3ca303d/ghc
|
| >---------------------------------------------------------------
|
| commit e876208117a34fb58f7f1e470de2f954b3ca303d
| Author: Simon Peyton Jones <simonpj at 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-commits at haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-commits
More information about the ghc-devs
mailing list