- 14 Dec, 2012 3 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
-
Simon Peyton Jones authored
The situation was pretty dire. The way in which data constructors were handled, notably the mapping between their *source* argument types and their *representation* argument types (after seq'ing and unpacking) was scattered in three different places, and hard to keep in sync. Now it is all in one place: * The dcRep field of a DataCon gives its representation, specified by a DataConRep * As well as having the wrapper, the DataConRep has a "boxer" of type DataConBoxer (defined in MkId for loopy reasons). The boxer used at a pattern match to reconstruct the source-level arguments from the rep-level bindings in the pattern match. * The unboxing in the wrapper and the boxing in the boxer are dual, and are now constructed together, by MkId.mkDataConRep. This is the key function of this change. * All the computeBoxingStrategy code in TcTyClsDcls disappears. Much nicer. There is a little bit of refactoring left to do; the strange deepSplitProductType functions are now called only in WwLib, so I moved them there, and I think they could be tidied up further.
-
- 06 Nov, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 02 Nov, 2012 3 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
These names end up in the ABI, and hence part of the ABI hash. We don't want uniques in them so that we don't get spurious ABI hash changes.
-
ian@well-typed.com authored
The wrapper functions can end up in interface files, and thus are part of the ABI hash. But uniqs easily change for no good reason when recompiling, which can lead to an ABI hash needlessly changing.
-
- 18 Oct, 2012 2 commits
-
-
Simon Peyton Jones authored
We weren't doing the binders right, and were creating NameLs rather than NameUs for the binders of the Rule. That gave very funny output for T7064.
-
ian@well-typed.com authored
We were being inconsistent about how we tested whether dump flags were enabled; in particular, sometimes we also checked the verbosity, and sometimes we didn't. This lead to oddities such as "ghc -v4" printing an "Asm code" section which didn't contain any code, and "-v4" enabled some parts of "-ddump-deriv" but not others. Now all the tests use dopt, which also takes the verbosity into account as appropriate.
-
- 16 Oct, 2012 1 commit
-
-
ian@well-typed.com authored
Mostly d -> g (matching DynFlag -> GeneralFlag). Also renamed if* to when*, matching the Haskell if/when names
-
- 09 Oct, 2012 2 commits
-
-
ian@well-typed.com authored
-
ian@well-typed.com authored
I also removed the default values from the "Discounts and thresholds" note: most of them were no longer up-to-date. Along the way I added FloatSuffix to the argument parser, analogous to IntSuffix.
-
- 04 Oct, 2012 1 commit
-
-
Simon Peyton Jones authored
-
- 03 Oct, 2012 1 commit
-
-
Simon Peyton Jones authored
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.
-
- 28 Sep, 2012 1 commit
-
-
Simon Peyton Jones authored
* 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
-
- 17 Sep, 2012 4 commits
-
-
ian@well-typed.com authored
-
Simon Peyton Jones authored
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.
-
Simon Peyton Jones authored
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
-
Simon Peyton Jones authored
This single commit combines a lot of work done by Thijs Alkemade <thijsalkemade@gmail.com>, plus a slew of subsequent refactoring by Simon PJ. The basic idea is * Add a new expression form "_", a hole, standing for a not-yet-written expression * Give a useful error message that (a) gives the type of the hole (b) gives the types of some enclosing value bindings that mention the hole Driven by this goal I did a LOT of refactoring in TcErrors, which in turn allows us to report enclosing value bindings for other errors, not just holes. (Thijs rightly did not attempt this!) The major data type change is a new form of constraint data Ct = ... | CHoleCan { cc_ev :: CtEvidence, cc_hole_ty :: TcTauType, cc_depth :: SubGoalDepth } I'm still in two minds about whether this is the best plan. Another possibility would be to have a predicate type for holes, somthing like class Hole a where holeValue :: a It works the way it is, but there are some annoying special cases for CHoleCan (just grep for "CHoleCan").
-
- 16 Sep, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 12 Sep, 2012 1 commit
-
-
ian@well-typed.com authored
I've switched to passing DynFlags rather than Platform, as (a) it's simpler to not have to extract targetPlatform in so many places, and (b) it may be useful to have DynFlags around in future.
-
- 03 Sep, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 31 Aug, 2012 1 commit
-
-
Simon Peyton Jones authored
-
- 29 Aug, 2012 1 commit
-
-
Simon Peyton Jones authored
Pls merge to 7.6
-
- 21 Aug, 2012 2 commits
-
-
Simon Marlow authored
-
Peter Wortmann authored
I suppose this was a good idea for HPC, as it assumed that source code annotations coming from a source file could only talk about the same source file (by how Mix files are saved). I don't see a reason why cost-centres or source annotations would want that kind of behaviour. I introduced a flag for toggling the behaviour per tickish. (plus some minor refactoring, as well as making sure that the same check applies to binary tick boxes, where they had apparently been forgotten.)
-
- 15 Aug, 2012 1 commit
-
-
mikhail.vorozhtsov authored
Also adds RULES and 'SPECIALIZE instance' support.
-
- 05 Aug, 2012 1 commit
-
-
ian@well-typed.com authored
-
- 26 Jul, 2012 1 commit
-
-
pcapriotti authored
-
- 24 Jul, 2012 2 commits
-
-
Ian Lynagh authored
All the flags that 'ways' imply are now dynamic
-
pcapriotti authored
Also, temporarely disable that warning for validate builds, until we finish fixing them all.
-
- 23 Jul, 2012 3 commits
-
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
This warning was suggested by Trac #6082, where we had a library RULE that failed to fire because its function was inlined too soon.
-
- 16 Jul, 2012 3 commits
-
-
Simon Marlow authored
-
mikhail.vorozhtsov authored
-
mikhail.vorozhtsov authored
-
- 14 Jul, 2012 3 commits
-
-
Ian Lynagh authored
FastStrings are now always UTF8-encoded. There's no StringTable for FastZString, but I don't think one is needed. We only ever make a FastZString by running zEncodeFS on a FastString, and the FastStrings are shared via the FastString StringTable, so we get the same FastZString from the IORef.
-
Ian Lynagh authored
-
Ian Lynagh authored
This is a first step on the way to refactoring the FastString type. FastBytes currently has no unique, mainly because there isn't currently a nice way to produce them in Binary. Also, we don't currently do the "Dictionary" thing with FastBytes in Binary. I'm not sure whether this is important. We can change both decisions later, but in the meantime this gets the refactoring underway.
-