[commit: ghc] master: Refactor tuple constraints (ffc2150)
git at git.haskell.org
git at git.haskell.org
Mon May 18 12:45:35 UTC 2015
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/ffc21506894c7887d3620423aaf86bc6113a1071/ghc
>---------------------------------------------------------------
commit ffc21506894c7887d3620423aaf86bc6113a1071
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Mon May 11 23:19:14 2015 +0100
Refactor tuple constraints
Make tuple constraints be handled by a perfectly ordinary
type class, with the component constraints being the
superclasses:
class (c1, c2) => (c2, c2)
This change was provoked by
#10359 inability to re-use a given tuple
constraint as a whole
#9858 confusion between term tuples
and constraint tuples
but it's generally a very nice simplification. We get rid of
- In Type, the TuplePred constructor of PredTree,
and all the code that dealt with TuplePreds
- In TcEvidence, the constructors EvTupleMk, EvTupleSel
See Note [How tuples work] in TysWiredIn.
Of course, nothing is ever entirely simple. This one
proved quite fiddly.
- I did quite a bit of renaming, which makes this patch
touch a lot of modules. In partiuclar tupleCon -> tupleDataCon.
- I made constraint tuples known-key rather than wired-in.
This is different to boxed/unboxed tuples, but it proved
awkward to have all the superclass selectors wired-in.
Easier just to use the standard mechanims.
- While I was fiddling with known-key names, I split the TH Name
definitions out of DsMeta into a new module THNames. That meant
that the known-key names can all be gathered in PrelInfo, without
causing module loops.
- I found that the parser was parsing an import item like
T( .. )
as a *data constructor* T, and then using setRdrNameSpace to
fix it. Stupid! So I changed the parser to parse a *type
constructor* T, which means less use of setRdrNameSpace.
I also improved setRdrNameSpace to behave better on Exact Names.
Largely on priciple; I don't think it matters a lot.
- When compiling a data type declaration for a wired-in thing like
tuples (,), or lists, we don't really need to look at the
declaration. We have the wired-in thing! And not doing so avoids
having to line up the uniques for data constructor workers etc.
See Note [Declarations for wired-in things]
- I found that FunDeps.oclose wasn't taking superclasses into
account; easily fixed.
- Some error message refactoring for invalid constraints in TcValidity
- Haddock needs to absorb the change too; so there is a submodule update
>---------------------------------------------------------------
ffc21506894c7887d3620423aaf86bc6113a1071
compiler/basicTypes/BasicTypes.hs | 21 +-
compiler/basicTypes/DataCon.hs | 1 -
compiler/basicTypes/RdrName.hs | 28 +-
compiler/basicTypes/Unique.hs | 28 +-
compiler/basicTypes/VarSet.hs | 23 +-
compiler/coreSyn/CoreLint.hs | 2 +-
compiler/coreSyn/MkCore.hs | 7 +-
compiler/coreSyn/PprCore.hs | 4 +-
compiler/deSugar/Check.hs | 2 +-
compiler/deSugar/DsArrows.hs | 2 +-
compiler/deSugar/DsBinds.hs | 25 +-
compiler/deSugar/DsCCall.hs | 6 +-
compiler/deSugar/DsExpr.hs | 5 +-
compiler/deSugar/DsMeta.hs | 840 +--------------------
compiler/deSugar/Match.hs | 4 +-
compiler/ghc.cabal.in | 3 +-
compiler/ghci/RtClosureInspect.hs | 7 +-
compiler/hsSyn/Convert.hs | 4 +-
compiler/hsSyn/HsExpr.hs | 3 +-
compiler/hsSyn/HsPat.hs | 35 +-
compiler/hsSyn/HsTypes.hs | 2 +-
compiler/iface/BinIface.hs | 14 +-
compiler/iface/BuildTyCl.hs | 4 +
compiler/iface/IfaceSyn.hs | 9 +-
compiler/iface/IfaceType.hs | 154 ++--
compiler/iface/TcIface.hs | 84 ++-
compiler/main/Constants.hs | 3 +
compiler/main/HscMain.hs | 11 +-
compiler/parser/Parser.y | 20 +-
compiler/parser/RdrHsSyn.hs | 164 +++-
compiler/prelude/PrelInfo.hs | 28 +-
compiler/prelude/PrelNames.hs | 17 -
compiler/prelude/PrelRules.hs | 6 +-
compiler/prelude/PrimOp.hs | 2 +-
compiler/prelude/THNames.hs | 836 ++++++++++++++++++++
compiler/prelude/TysWiredIn.hs | 269 ++++---
compiler/rename/RnEnv.hs | 1 +
compiler/rename/RnNames.hs | 42 +-
compiler/rename/RnSplice.hs | 6 +-
compiler/simplStg/UnariseStg.hs | 10 +-
compiler/specialise/Specialise.hs | 3 +-
compiler/stranal/WwLib.hs | 6 +-
compiler/typecheck/FunDeps.hs | 32 +-
compiler/typecheck/TcBinds.hs | 52 +-
compiler/typecheck/TcCanonical.hs | 32 -
compiler/typecheck/TcErrors.hs | 2 -
compiler/typecheck/TcEvidence.hs | 15 +-
compiler/typecheck/TcExpr.hs | 10 +-
compiler/typecheck/TcGenDeriv.hs | 15 +-
compiler/typecheck/TcHsSyn.hs | 5 +-
compiler/typecheck/TcHsType.hs | 15 +-
compiler/typecheck/TcInstDcls.hs | 4 +-
compiler/typecheck/TcInteract.hs | 11 +-
compiler/typecheck/TcMType.hs | 1 -
compiler/typecheck/TcPat.hs | 2 +-
compiler/typecheck/TcRnMonad.hs | 4 +
compiler/typecheck/TcSimplify.hs | 1 -
compiler/typecheck/TcSplice.hs | 2 +-
compiler/typecheck/TcTyClsDecls.hs | 20 +-
compiler/typecheck/TcType.hs | 3 -
compiler/typecheck/TcValidity.hs | 186 +++--
compiler/types/TyCon.hs | 34 +-
compiler/types/Type.hs | 7 +-
compiler/types/TypeRep.hs | 11 +-
compiler/vectorise/Vectorise/Builtins/Base.hs | 2 +-
.../vectorise/Vectorise/Builtins/Initialise.hs | 2 +-
compiler/vectorise/Vectorise/Utils/Closure.hs | 4 +-
libraries/ghc-prim/GHC/Classes.hs | 44 +-
libraries/ghc-prim/GHC/Tuple.hs | 242 +++---
libraries/ghc-prim/GHC/Types.hs | 2 +-
.../should_fail/NotRelaxedExamples.stderr | 17 +-
.../indexed-types/should_fail/TyFamUndec.stderr | 17 +-
testsuite/tests/module/all.T | 2 +-
testsuite/tests/module/mod89.hs | 2 +
testsuite/tests/module/mod89.stderr | 10 +-
.../tests/typecheck/should_fail/T9858a.stderr | 2 +-
.../tests/typecheck/should_fail/fd-loop.stderr | 12 +-
.../tests/typecheck/should_fail/tcfail108.stderr | 4 +-
.../tests/typecheck/should_fail/tcfail154.stderr | 6 +-
.../tests/typecheck/should_fail/tcfail157.stderr | 12 +-
.../tests/typecheck/should_fail/tcfail213.stderr | 4 +-
.../tests/typecheck/should_fail/tcfail214.stderr | 8 +-
.../tests/typecheck/should_fail/tcfail220.hsig | 1 -
.../tests/typecheck/should_fail/tcfail220.stderr | 8 -
utils/genprimopcode/Main.hs | 49 +-
utils/haddock | 2 +-
86 files changed, 1985 insertions(+), 1672 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 ffc21506894c7887d3620423aaf86bc6113a1071
More information about the ghc-commits
mailing list