| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
When we have a dynamic ghc, we need to load the dynamic object files
|
| |
|
|
|
| |
I've put mkSOName in HscTypes for now; I'm not sure what the best place
for it is.
|
| | |
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All the work was done by Dan Winograd-Cort.
The main thing is that arrow comamnds now have their own
data type HsCmd (defined in HsExpr). Previously it was
punned with the HsExpr type, which was jolly confusing,
and made it hard to do anything arrow-specific.
To make this work, we now parameterise
* MatchGroup
* Match
* GRHSs, GRHS
* StmtLR and friends
over the "body", that is the kind of thing they
enclose. This "body" parameter can be instantiated to
either LHsExpr or LHsCmd respectively.
Everything else is really a knock-on effect; there should
be no change (yet!) in behaviour. But it should be a sounder
basis for fixing bugs.
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
See Trac #7287
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
splice, even if -fdefer-type-errors is on
We're going to run this code, so there's no point in deferring type
errors. Worse, TcSplice uses unsafeCoerce (for vevy good reasons),
so splicing a type into a place where an expression is expected would
yield a seg-fault if we plough on regardless.
Fixes Trac #7276
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
This is just a bug that's been around since we introduced
polymorphic kinds. The roots are in Type.cmpTypeX, but
there was a variant in TcRnDriver.checkBootTyCon, which
is where it came up.
Fixes Trac #7272
|
| | |\ |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Get rid of the lookupInInerts stage
* Re-introduce the flat-cache for flattening type-family equations
See Note [Type family equations] in TcSMonad. My previous clever attempt
with organising the work list proved too fragile.
There's a (static) flag -fno-flat-cache to switch if off,
so you can try with and without
* Improve the -ddump-cs-trace output
* The usual round of refactoring
|
| | | |
| | |
| | |
| | |
| | |
| | | |
The constraint solver sometimes goes to a lot of effort that turns
out to be Refl in the end, and avoiding zonking those proofs is a
useful optimisation. (Trac #5030)
|
| | | | |
|
| | | |\
| | | |
| | | |
| | | | |
tc-untouchables
|
| | | | |
| | | |
| | | |
| | | | |
things)
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These variables all have uniformative names like "cobox" or "d".
Make them System Names tells the pretty printer to show their
uniques even without -dppr-debug. That in turn makes the
less-voluminous debug traces *much* more informative.
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This fixes Trac #7278
|
| | | | | |
|
| | | |/ |
|
| | | |\ |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Treat kind-equality constraints as *derived* equalities,
with no evidence. That is really what they are at the moment.
* Get rid of EvKindCast and friends.
* Postpone kind errors properly to the constraint solver
(lots of small knock-on effects)
I moved SwapFlag to BasicTypes as well
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
and refactor canEqLeafTyVarEq along the same lines
as our earlier refactoring of canEqLeafFunEq
|
| | | | | |
|
| | | |\ \ |
|
| | | |\ \ \ |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The main change is that canEqFailure does substitution:
see Note [Make sure that insolubles are fully rewritten] in TcCanonical.
However DV and I also found a way to simplify 'flatten' a bit, by
passing a CtFlavour instead of CtEvidence.
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | | |
See Note [Eta for AppCo] in OptCoercion
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Making Any a type family is the right thing to do, but it messes up
the proxy kind arguments in TypeLits and Singletons, so I'm backing it
out for now.
More thought required!
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* Make Any into a type family (which it should always have been)
This is to support the future introduction of eta rules for
product types (see email on ghc-users title "PolyKind issue"
early Sept 2012)
* Add the *internal* data type support for
(a) closed type families [so that you can't give
type instance for 'Any']
(b) injective type families [because Any is really
injective]
This amounts to two boolean flags on the SynFamilyTyCon
constructor of TyCon.SynTyConRhs.
There is some knock-on effect, but all of a routine nature.
It remains to offer source syntax for either closed or
injective families.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This patch finally adds 'left' and 'right' coercions back into
GHC. Trac #7205 gives the details.
The main change is to add a new constructor to Coercion:
data Coercion
= ...
| NthCo Int Coercion -- OLD, still there
| LRCo LeftOrRight Coercion -- NEW
data LeftOrRight = CLeft | CRight
Plus:
* Similar change to TcCoercion
* Use LRCo when decomposing AppTys
* Coercion optimisation needs to handle left/right
The rest is just knock-on effects.
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | | |
A simple refactoring with no complicated fiddling.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
1. Rejig CtLoc
* CtLoc is now *not* parameterised (much simpler)
* CtLoc includes the "depth" of the constraint
* CtLoc includes the TcLclEnv at the birthplace
That gives (a) the SrcSpan, (b) the [ErrCtxt]
(c) the [TcIdBinder]
* The CtLoc of a constraint is no longer in its CtEvidence
* Where we passed 'depth' before, now we pass CtLoc
2. Some significant refactoring in TcErrors
* Get rid of cec_extra
* Traverse every constraint, so that we can be
sure to generate bindings where necessary.
(This was really a lurking bug before.)
3. Merge zonking into TcCanonical. This turned out to be
almost trivial; just a small change to TcCanonical.flattenTyVar.
The nice consequence is that we don't need to zonk a constraint
before solving it; instead it gets zonked "on the fly" as it were.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
I've totally forgotten what this patch is fixing, but it's all about
getting the right source location for class methods. It's fairly
minor, but annoying that I can't connect it with a Trac ticket
|
| | | | | | | |
|