6 years agoUpdate "stolen syntax" section (#8575)
Krzysztof Gogolewski [Fri, 29 Nov 2013 21:41:31 +0000 (22:41 +0100)] 
Update "stolen syntax" section (#8575)

Thanks to aavogt

6 years agoMinor fix to example GHC plugin in the documentation
Joachim Breitner [Fri, 29 Nov 2013 18:44:31 +0000 (18:44 +0000)] 
Minor fix to example GHC plugin in the documentation

6 years agoUpdate Notes for Coercible
Joachim Breitner [Fri, 29 Nov 2013 09:28:53 +0000 (09:28 +0000)] 
Update Notes for Coercible

6 years agoRemove whitespace between macro identifiers and `(`
Herbert Valerio Riedel [Fri, 29 Nov 2013 08:00:57 +0000 (09:00 +0100)] 
Remove whitespace between macro identifiers and `(`

This is a kludge to workaround Clang's CPP lacking traditional-mode CPP

(This was reported by Kazu Yamamoto)

Signed-off-by: Herbert Valerio Riedel <>
6 years agoFail (rather than addErr) if you use a bogus field in a pattern
Simon Peyton Jones [Thu, 28 Nov 2013 17:56:53 +0000 (17:56 +0000)] 
Fail (rather than addErr) if you use a bogus field in a pattern

This fixes Trac #8570

6 years agoMore faff to get GHCi's top-level environment right
Simon Peyton Jones [Tue, 26 Nov 2013 10:47:16 +0000 (10:47 +0000)] 
More faff to get GHCi's top-level environment right

This fixes #8540 (again), and simplifies matters a bit more. In
particular, I got rid of ic_sys_vars altogether.  Mostly they can just
go in ic_tythings, apart from dfuns, which are readily gettable from
the instances anyway.

See documentation in Note [Initialising the type environment for GHCi]
in TcEnv.

6 years agoFix the deugger (fixing Trac #8557)
Simon Peyton Jones [Mon, 25 Nov 2013 15:07:25 +0000 (15:07 +0000)] 
Fix the deugger (fixing Trac #8557)

The runtime debugger (which has not received any love from anyone
for many years) looks wrong to me; it was failing to instantiate the
outer foralls of a variable when called from :force, which calls
cvObtainTermFromId, which calls cvObtainTerm

I simplified the code too.  But I'm flaky on how this debugger stuff
is really supposed to work, so I'm partly guessing.  Tests pass though.

6 years agoRefactor handleRunStatus some more, add comments and tidy up formatting
Simon Marlow [Thu, 28 Nov 2013 12:03:26 +0000 (12:03 +0000)] 
Refactor handleRunStatus some more, add comments and tidy up formatting

I liked the idea of combining traceRunStatus and handleRunStatus, but
I think we lost a bit of clarity where traceRunStatus wants to fall
back to handleRunStatus when the breakpoint is enabled.  So I
refactored it a bit more.

6 years ago-ddump-cmm: don't dump the proc point stage if we didn't do anything
Simon Marlow [Thu, 28 Nov 2013 10:55:48 +0000 (10:55 +0000)] 
-ddump-cmm: don't dump the proc point stage if we didn't do anything

6 years agoComments on slow-call-shortcutting
Simon Marlow [Thu, 28 Nov 2013 10:55:26 +0000 (10:55 +0000)] 
Comments on slow-call-shortcutting

6 years agoFix up shortcut for slow calls
Patrick Palka [Wed, 27 Nov 2013 14:04:25 +0000 (09:04 -0500)] 
Fix up shortcut for slow calls

6 years agoImplement shortcuts for slow calls (#6084)
Simon Marlow [Thu, 28 Nov 2013 09:43:58 +0000 (09:43 +0000)] 
Implement shortcuts for slow calls (#6084)

6 years agoEvCast needs to take a representational coercion
Joachim Breitner [Thu, 28 Nov 2013 12:07:14 +0000 (12:07 +0000)] 
EvCast needs to take a representational coercion

as the coercions for type literals are of that role.

6 years agoComments only
Simon Peyton Jones [Thu, 28 Nov 2013 11:58:35 +0000 (11:58 +0000)] 
Comments only

6 years agoCoercible for impredicative types
Joachim Breitner [Wed, 27 Nov 2013 17:19:20 +0000 (17:19 +0000)] 
Coercible for impredicative types

using deferTcSForAllEq, just like for ~ types, during canonicalization

6 years agoGet rid of EvCoercible
Joachim Breitner [Wed, 27 Nov 2013 16:15:46 +0000 (16:15 +0000)] 
Get rid of EvCoercible

and use EvCoercion to describe the evidence for Coercible instances.

6 years agoBeginnings of removing EvCoercible
Joachim Breitner [Wed, 27 Nov 2013 14:21:43 +0000 (14:21 +0000)] 
Beginnings of removing EvCoercible

6 years agoRoleify TcCoercion
Joachim Breitner [Wed, 27 Nov 2013 14:21:39 +0000 (14:21 +0000)] 
Roleify TcCoercion

Previously, TcCoercion were only used to represent boxed Nominal
coercions. In order to also talk about boxed Representational coercions
in the type checker, we add Roles to TcCoercion. Again, we closely
mirror Coercion.

The roles are verified by a few assertions, and at the latest after
conversion to Coercion. I have put my trust in the comprehensiveness of
the testsuite here, but any role error after desugaring popping up now
might be caused by this refactoring.

6 years agoRemove unused liftTcCoSubstWith
Joachim Breitner [Wed, 27 Nov 2013 14:26:33 +0000 (14:26 +0000)] 
Remove unused liftTcCoSubstWith

6 years agoAdd role-checking ASSERT to mkCast
Joachim Breitner [Wed, 27 Nov 2013 10:33:56 +0000 (10:33 +0000)] 
Add role-checking ASSERT to mkCast

6 years agoComment only
Gabor Greif [Wed, 27 Nov 2013 12:43:35 +0000 (13:43 +0100)] 
Comment only

6 years agoComment only
Gabor Greif [Tue, 26 Nov 2013 14:11:39 +0000 (15:11 +0100)] 
Comment only

6 years agoRejigger flushExec implementation (#8562, #8561)
Austin Seipp [Tue, 26 Nov 2013 09:31:30 +0000 (03:31 -0600)] 
Rejigger flushExec implementation (#8562, #8561)

Instead, just don't do anything on x86/amd64, and on !x86, use either A)
__clear_cache from libgcc, or B) sys_icache_invalidate for OS X (and

Signed-off-by: Austin Seipp <>
6 years one module name per line
Dr. ERDI Gergo [Thu, 21 Nov 2013 05:20:53 +0000 (13:20 +0800)] one module name per line

Signed-off-by: Austin Seipp <>
6 years agoTypos in comments
Gabor Greif [Tue, 26 Nov 2013 22:18:07 +0000 (23:18 +0100)] 
Typos in comments

6 years agoTypos in comments in TcEvidence
Joachim Breitner [Tue, 26 Nov 2013 16:43:28 +0000 (16:43 +0000)] 
Typos in comments in TcEvidence

6 years agoIn toHsType, filter out kind variables
Joachim Breitner [Mon, 25 Nov 2013 18:16:29 +0000 (18:16 +0000)] 
In toHsType, filter out kind variables

(This fixes #8563)

6 years agoAnother raft of Template Haskell clean-up
Simon Peyton Jones [Mon, 25 Nov 2013 16:58:28 +0000 (16:58 +0000)] 
Another raft of Template Haskell clean-up

The handling of typed and untyped brackets was extremely convoluted,
partly because of the evolutionary history.  I've tidied it all up.

See Note [How brackets and nested splices are handled] in TcSplice
for the full story

Main changes:

 * Untyped brackets: after the renamer, HsRnBracketOut carries
   PendingRnSplices for splices in untyped brackets.  In the
   typechecker, these pending splices are typechecked quite
   straigtforwardly, with no ps_var nonsense.

 * Typed brackets: after the renamer typed brackest still look
   like HsBracket. The type checker does the ps_var thing.

 * In TcRnTypes.ThStage, the Brack constructor, we distinguish
   the renaming from typehecking pending-stuff.  Much more

 * The "typed" flag is in HsSpliceE, not in HsSplice, because
   only expressions can be typed.  Patterns, types, declarations

There is further improvement to be done to make the handling of
declaration splices more uniform.

6 years agoUpdate to core-spec documentation.
Richard Eisenberg [Fri, 22 Nov 2013 22:27:32 +0000 (17:27 -0500)] 
Update to core-spec documentation.

This update includes some wibbles to make Co_TyConAppCo clearer,
as well as the introduction of forms for AxiomRuleCo.

6 years agoMention that the user has to import GHC.Exts for Constraint
Joachim Breitner [Sun, 24 Nov 2013 19:38:08 +0000 (19:38 +0000)] 
Mention that the user has to import GHC.Exts for Constraint

(required judging from confusion on #haskell right now.)

6 years agoReplace (State# RealWorld) with Void# where we just want a 0-bit value
Simon Peyton Jones [Fri, 22 Nov 2013 15:23:22 +0000 (15:23 +0000)] 
Replace (State# RealWorld) with Void# where we just want a 0-bit value

We were re-using the super-magical "state token" type (which has
VoidRep and is zero bits wide) for situations in which we simply want
to lambda-abstract over a zero-bit argument. For example, join points:

   case (case x of { True -> e1; False -> e2 }) of
      Red  -> f1
      Blue -> True


  let $j1 = \voidArg::Void# -> f1
  case x of
    True -> case e1 of
              Red -> $j1 void
              Blue -> True
    False -> case e2 of
              Red -> $j1 void
              Blue -> True

This patch introduces

   * The new primitive type GHC.Prim.Void#, with PrimRep = VoidRep

   * A new global Id GHC.Prim.voidPrimId :: Void#.
     This has no binding because the code generator drops it,
     but is used as an argument (eg in the call of $j1)

   * A new local Id, MkId.voidArgId, which can be lambda-bound
     when you need to lambda-abstract over it.

and uses them throughout.

Now the State# thing is used only when we need state!

6 years agoMove isVoidRep, isGcPtrRep to TyCon to join primRepSizeW etc
Simon Peyton Jones [Fri, 22 Nov 2013 15:05:39 +0000 (15:05 +0000)] 
Move isVoidRep, isGcPtrRep to TyCon to join primRepSizeW etc

This is just a modest refactoring

6 years agoUntabify and trailing white space
Simon Peyton Jones [Fri, 22 Nov 2013 15:04:19 +0000 (15:04 +0000)] 
Untabify and trailing white space

6 years agoAdd a missing case to Lint's understanding of empty cases
Simon Peyton Jones [Fri, 22 Nov 2013 15:03:15 +0000 (15:03 +0000)] 
Add a missing case to Lint's understanding of empty cases

   case x:Int# of {}

is OK

6 years agoUse bindLocalNamesFV in rn_inst_info
Joachim Breitner [Fri, 22 Nov 2013 13:40:34 +0000 (13:40 +0000)] 
Use bindLocalNamesFV in rn_inst_info

6 years agoUse newTyConInstRhs in coerce’d GND
Joachim Breitner [Fri, 22 Nov 2013 11:16:55 +0000 (11:16 +0000)] 
Use newTyConInstRhs in coerce’d GND

6 years agoImplement GeneralizedNewtypeDeriving in terms of `coerce`.
Richard Eisenberg [Mon, 11 Nov 2013 18:40:44 +0000 (13:40 -0500)] 
Implement GeneralizedNewtypeDeriving in terms of `coerce`.

6 years agoExtend Coercible to newtype instances
Joachim Breitner [Fri, 22 Nov 2013 10:15:01 +0000 (10:15 +0000)] 
Extend Coercible to newtype instances

This fixes: #8548

6 years agoPrevent recursive Coercible dictionaries
Joachim Breitner [Wed, 20 Nov 2013 14:09:08 +0000 (14:09 +0000)] 
Prevent recursive Coercible dictionaries

6 years agoAdd ctLoc = ctev_loc . cc_ev
Joachim Breitner [Fri, 22 Nov 2013 08:38:10 +0000 (08:38 +0000)] 
Add ctLoc = ctev_loc . cc_ev

6 years agoLarge refactor: Move CtLoc field from Ct to CtEvidence
Joachim Breitner [Thu, 21 Nov 2013 16:40:42 +0000 (16:40 +0000)] 
Large refactor: Move CtLoc field from Ct to CtEvidence

6 years agoAdd -ftype-function-stack to set type function stack depth
Joachim Breitner [Wed, 20 Nov 2013 10:24:52 +0000 (10:24 +0000)] 
Add -ftype-function-stack to set type function stack depth

6 years agoSeparate SubGoalDepthCounters (constraints and typ fun applications)
Joachim Breitner [Wed, 20 Nov 2013 10:04:15 +0000 (10:04 +0000)] 
Separate SubGoalDepthCounters (constraints and typ fun applications)

6 years agoMake SubGoalDepth a type of its own
Joachim Breitner [Wed, 20 Nov 2013 09:24:27 +0000 (09:24 +0000)] 
Make SubGoalDepth a type of its own

In preparation of counting type function applications and constraint
resolving separately.

6 years agoWibble to RnSplice (really belongs with b7f35733)
Simon Peyton Jones [Fri, 22 Nov 2013 09:58:42 +0000 (09:58 +0000)] 
Wibble to RnSplice (really belongs with b7f35733)

6 years agoRefactor TcSplice.tcBracket a bit
Simon Peyton Jones [Fri, 22 Nov 2013 09:41:02 +0000 (09:41 +0000)] 
Refactor TcSplice.tcBracket a bit

The way that untyped brackets are typechecked is still grotesquely
indirect, but I'll sort that out in a subsequent patch

6 years agoClarify what is in ic_tythings, and refactor TcRnDriver.setInteractiveContext
Simon Peyton Jones [Fri, 22 Nov 2013 09:40:10 +0000 (09:40 +0000)] 
Clarify what is in ic_tythings, and refactor TcRnDriver.setInteractiveContext

Previously there was a ton of cruft to do wtih "visible ids" in
setInteractiveContext, but I made it all a lot simpler by providing
a way to add to the typecheckers list of "global type variables",
via TcEnv.tcExtendGlobalTyVars.  This is much nicer.

6 years agoA raft of changes driven by Trac #8540
Simon Peyton Jones [Fri, 22 Nov 2013 09:24:54 +0000 (09:24 +0000)] 
A raft of changes driven by Trac #8540

The root cause of #8450 is that the new Template Haskell story, with
the renamer doing more of the work of Template Haskell, wasn't dealing
correctly with the keepAlive problem.  Consider
    g = ..blah...
    f = [| g |]
Then f's RHS refers to g's name but not to g, so g was being discarded
as dead code.

Fixing this sucked me into a deep swamp of understanding how all the moving
parts of hte new Template Haskell fit together, leading to a large collection
of related changes and better documentation.  Specifically:

* Instead of putting the TH level of a binder in the LocalRdrEnv, there
  is now a separate field
      tcl_th_bndrs :: NameEnv (TopLevelFlag, ThLevel)
  in the TcLclEnv, which records for each binder
     a) whether it is syntactically a top-level binder or not
     b) its TH level
  This deals uniformly with top-level and non-top-level binders, which was
  previously dealt with via greviously-delicate meddling with Internal and
  External Names.  Much better.

* As a result I could remove the tct_level field of ATcId.

* There are consequential changes in TcEnv too, which must also extend the
  level bindings.  Again, more clarity.

  I renamed TcEnv.tcExtendTcTyThingEnv to tcExtendKindEnv2, since it's only used
  during kind inference, for (AThing kind) and APromotionErr; and that is
  relevant to whether we want to extend the tcl_th_bndrs field (no).

* I de-crufted the code in RnEnv.extendGlobalRdrEnv, by getting rid of the
  qual_gre code which said "Seems like 5 times as much work as it deserves!".
  Instead, RdrName.pickGREs makes the Internal names shadow External ones.

* I moved the checkThLocalName cross-stage test to finishHsVar; previously
  we weren't doing the test at all in the OpApp case!

* Quite a few changes (shortening the code) in the cross-stage checking code
  in TcExpr and RnSplice, notably to move the keepAlive call to the renamer

One leftover piece:

* In TcEnv I removed tcExtendGhciEnv and refactored
  tcExtendGlobalTyVars; this is really related to the next commit, but
  it was too hard to disentangle.

6 years agoRefactor traceRunStatus/handleRunStatus
Simon Peyton Jones [Fri, 22 Nov 2013 08:30:41 +0000 (08:30 +0000)] 
Refactor traceRunStatus/handleRunStatus

No change in behaviour, but I combined these two functions, and I think
the result is a good deal clearer

6 years agoImprove pretty-printing of pending splices
Simon Peyton Jones [Fri, 22 Nov 2013 07:54:18 +0000 (07:54 +0000)] 
Improve pretty-printing of pending splices

6 years agoFix type-equality in the type checker (fixes Trac #8553)
Simon Peyton Jones [Fri, 22 Nov 2013 15:48:02 +0000 (15:48 +0000)] 
Fix type-equality in the type checker (fixes Trac #8553)

For horrible reasons (Note [Comparison with OpenTypeKind] in Type), the
function Type.eqType currently equates OOpenKind with *.  This may or may
not be a good idea (it's certainly a revolting one) but it DOES NOT WORK
in the type checker, which *does* need to distinguish OpenKind and *.

Rather than solve the underlying problem (I have some ideas) I just
introduced a new, and very short, simple, straightforward function
TcType.tcEqType to do the job.

6 years agoPrint the correct name when complaining about SPECIALISE pragmas
Simon Peyton Jones [Fri, 22 Nov 2013 15:30:30 +0000 (15:30 +0000)] 
Print the correct name when complaining about SPECIALISE pragmas

Fixes Trac #8537

6 years agoAdd suggestion of -XNegativeLiterals
Simon Peyton Jones [Fri, 22 Nov 2013 10:32:24 +0000 (10:32 +0000)] 
Add suggestion of -XNegativeLiterals

Based on a draft from Krzysztof Gogolewski.
Fixes Trac #8542

6 years agoBetter constraint-solver tracing
Simon Peyton Jones [Thu, 21 Nov 2013 10:28:56 +0000 (10:28 +0000)] 
Better constraint-solver tracing

6 years agoAlways re-summarise modules when -fforce-recomp is set
Patrick Palka [Thu, 14 Nov 2013 00:08:24 +0000 (19:08 -0500)] 
Always re-summarise modules when -fforce-recomp is set

Fixes #8526

6 years agoUntabify buffer.
Austin Seipp [Fri, 22 Nov 2013 14:20:42 +0000 (08:20 -0600)] 
Untabify buffer.

Signed-off-by: Austin Seipp <>
6 years agoExtend getPhysicalMemorySize to iOS (#8533)
Austin Seipp [Thu, 21 Nov 2013 22:48:24 +0000 (16:48 -0600)] 
Extend getPhysicalMemorySize to iOS (#8533)

Authored-by: Authored-by: Luke Iannini <>
Signed-off-by: Austin Seipp <>
6 years agoTemporarily lower unfolding threshold on Windows
Austin Seipp [Thu, 21 Nov 2013 22:39:41 +0000 (16:39 -0600)] 
Temporarily lower unfolding threshold on Windows

This is a very temporary, very unsatisfactory hack to fix #5987
(for now.)

The included comments essentially say it all: we lower the unfolding
threshold to minimize some amount of exported symbols from the GHC
stage2 DLL. I unfortunately had to lower it quite substantially for the
dynamic stage2 build to pass.

As of this writing, the DLL split between ghc.dll and ghc-0.dll is
something like 26,000 vs 63,000 exported symbols, respectively. So we're
still quite in danger of tripping it, but I think we will be OK at this
exact moment.

Signed-off-by: Austin Seipp <>
6 years agoComment on StgArrWords vs StgArrBytes
Arash Rouhani [Thu, 21 Nov 2013 13:17:45 +0000 (14:17 +0100)] 
Comment on StgArrWords vs StgArrBytes

See #8552

Signed-off-by: Arash Rouhani <>
Reviewed-by: Austin Seipp <>
6 years agoFix formatting (fixes #8551)
Arash Rouhani [Wed, 20 Nov 2013 01:40:26 +0000 (02:40 +0100)] 
Fix formatting (fixes #8551)

Signed-off-by: Arash Rouhani <>
Reviewed-by: Austin Seipp <>
6 years agoM-x delete-trailing-whitespace
Austin Seipp [Tue, 12 Nov 2013 22:46:03 +0000 (16:46 -0600)] 
M-x delete-trailing-whitespace

Signed-off-by: Austin Seipp <>
6 years agoFix make binary-dist on OS X (#8122)
Austin Seipp [Tue, 12 Nov 2013 22:43:50 +0000 (16:43 -0600)] 
Fix make binary-dist on OS X (#8122)

Authored-by: Christiaan Baaj <>
Signed-off-by: Austin Seipp <>
6 years agoGHCi: Properly generate jump code for ARM (#8380)
Austin Seipp [Mon, 11 Nov 2013 16:26:03 +0000 (10:26 -0600)] 
GHCi: Properly generate jump code for ARM (#8380)

This adds code for jumping to given addresses for ARM, written by Ben

However, when allocating new infotables for bytecode (which is where
this jump code occurs), we need to be sure to flush the cache on the
execute pointer returned from allocateExec() - on systems like ARM, the
processor won't reliably read back code or automatically cache flush,
where x86 will.

So we add a new flushExec primitive to call out to GCC's
__builtin___clear_cache primitive, which will properly generate the
correct code (nothing on x86, and a call to libgcc's __clear_cache on
ARM) and make sure we use it after writing the code out.

Authored-by: Ben Gamari <>
Authored-by: Austin Seipp <>
Signed-off-by: Austin Seipp <>
6 years agoIgnore untracked contents in submodules
Joachim Breitner [Fri, 22 Nov 2013 11:22:15 +0000 (11:22 +0000)] 
Ignore untracked contents in submodules

The GHC build creates files there that are not part of the project’s
.gitignore, and clutter up "git status" in ghc/. With this patch, these
changes are ignored; modifications to existing files in the submodule
repositories are still reported.

6 years agoWhen removing unreachable code, remove unreachable info tables too
Simon Peyton Jones [Fri, 22 Nov 2013 10:12:55 +0000 (10:12 +0000)] 
When removing unreachable code, remove unreachable info tables too

This bug only shows up when you are using proc-point splitting.
What was happening was:
  * We generate a proc-point for the stack check
  * And an info table
  * We eliminate the stack check because it's redundant
  * And the dangling info table caused a panic in

6 years agoImprove panic printout
Simon Peyton Jones [Fri, 22 Nov 2013 10:10:13 +0000 (10:10 +0000)] 
Improve panic printout

6 years agoAdd debug dump of the list of Cmm proc points
Simon Peyton Jones [Thu, 21 Nov 2013 22:48:26 +0000 (22:48 +0000)] 
Add debug dump of the list of Cmm proc points

6 years agoDon't complain about rules overlapping functions with no unfolding
Simon Peyton Jones [Thu, 21 Nov 2013 22:47:01 +0000 (22:47 +0000)] 
Don't complain about rules overlapping functions with no unfolding

This showed up when importing a module that was compiled
without -O, so there were no unfoldings in the interface file

6 years agoGrammar in comments
Gabor Greif [Fri, 22 Nov 2013 08:09:45 +0000 (09:09 +0100)] 
Grammar in comments

6 years agoAllow the linker to be used without retaining CAFs unconditionally
Simon Marlow [Thu, 21 Nov 2013 12:27:27 +0000 (12:27 +0000)] 
Allow the linker to be used without retaining CAFs unconditionally

This creates a new C API:

   initLinker_ (int retain_cafs)

The old initLinker() was left as-is for backwards compatibility.  See
documentation in Linker.h.

6 years agoCheckUnload needs to look at revertible_caf_list
Simon Marlow [Thu, 21 Nov 2013 12:25:30 +0000 (12:25 +0000)] 
CheckUnload needs to look at revertible_caf_list

Retained CAFs must keep an object file alive.

6 years agoIn the DEBUG rts, track when CAFs are GC'd
Simon Marlow [Thu, 21 Nov 2013 11:28:13 +0000 (11:28 +0000)] 
In the DEBUG rts, track when CAFs are GC'd

This resurrects some old code and makes it work again.  The idea is
that we want to get an error message if we ever enter a CAF that has
been GC'd, rather than following its indirection which will likely
cause a segfault.  Without this patch, these bugs are hard to track
down in gdb, because the IND_STATIC code overwrites R1 (the pointer to
the CAF) with its indirectee before jumping into bad memory, so we've
lost the address of the CAF that got GC'd.

Some associated refactoring while I was here.

6 years ago80 columns
Simon Marlow [Thu, 21 Nov 2013 09:50:34 +0000 (09:50 +0000)] 
80 columns

6 years agoComment
Simon Marlow [Thu, 21 Nov 2013 09:47:24 +0000 (09:47 +0000)] 

6 years ago80 columns
Simon Marlow [Tue, 22 Oct 2013 19:49:33 +0000 (20:49 +0100)] 
80 columns

6 years ago80 columns
Simon Marlow [Tue, 22 Oct 2013 19:49:25 +0000 (20:49 +0100)] 
80 columns

6 years agorefactor tick handling a little
Simon Marlow [Thu, 21 Nov 2013 09:59:40 +0000 (09:59 +0000)] 
refactor tick handling a little

6 years agotickishCanSplit should be False for HpcTick
Simon Marlow [Thu, 21 Nov 2013 09:52:24 +0000 (09:52 +0000)] 
tickishCanSplit should be False for HpcTick

(no functional changes I hope)

6 years agomkNoScope: expand the default case
Simon Marlow [Thu, 21 Nov 2013 09:51:33 +0000 (09:51 +0000)] 
mkNoScope: expand the default case

6 years agoRename mkNoTick to mkNoCount
Simon Marlow [Thu, 21 Nov 2013 09:45:57 +0000 (09:45 +0000)] 
Rename mkNoTick to mkNoCount

6 years agoFix branch name check regex in sync-all
Joachim Breitner [Thu, 21 Nov 2013 13:14:56 +0000 (13:14 +0000)] 
Fix branch name check regex in sync-all

6 years agoExplain higher-kinded Coerctions in Note [Coercible Instances]
Joachim Breitner [Tue, 19 Nov 2013 17:11:08 +0000 (17:11 +0000)] 
Explain higher-kinded Coerctions in Note [Coercible Instances]

(although there is not really a lot to explain, it seems.)

6 years agoCoercible: Do not try to unwrap undersaturated newtypes
Joachim Breitner [Tue, 19 Nov 2013 12:09:40 +0000 (12:09 +0000)] 
Coercible: Do not try to unwrap undersaturated newtypes

otherwise we get a panic.

6 years agoMake Coercible higher-kinded
Joachim Breitner [Tue, 19 Nov 2013 11:46:25 +0000 (11:46 +0000)] 
Make Coercible higher-kinded

This implements #8541. The changes are fully straight forward and work
nicely for the examples from the ticket; this is mostly due to the
existing code not checking for saturation and kindness.

6 years agoUpdate `primitive` to upstream's current HEAD
Herbert Valerio Riedel [Tue, 19 Nov 2013 21:34:14 +0000 (22:34 +0100)] 
Update `primitive` to upstream's current HEAD

This includes a fix to silence a GCC warning which causes validate failures
on OSX (see haskell/primitive#4 for more details)

6 years agoTypos in [CPR for sum types]
Joachim Breitner [Tue, 19 Nov 2013 08:14:54 +0000 (08:14 +0000)] 
Typos in [CPR for sum types]

6 years agoImprove the 'deriving' code for polykinded data types
Simon Peyton Jones [Mon, 18 Nov 2013 18:11:43 +0000 (18:11 +0000)] 
Improve the 'deriving' code for polykinded data types

Fixes Trac #8534.  See Note [Match kinds in deriving] in TcDeriv.

6 years agoFix typo in a836b6, 'Improve orientation'
Simon Peyton Jones [Mon, 18 Nov 2013 18:09:28 +0000 (18:09 +0000)] 
Fix typo in a836b6, 'Improve orientation'

Just a straightforward error, now fixed.

6 years agoGeneric1 cannot yet be derived for datatypes with tuples with a parameter not in...
Jose Pedro Magalhaes [Mon, 18 Nov 2013 14:26:25 +0000 (14:26 +0000)] 
Generic1 cannot yet be derived for datatypes with tuples with a parameter not in the last position

6 years agofixing canDoGenerics1 (fixes #8468) (fixes #8479)
Nicolas Frisby [Sat, 9 Nov 2013 22:08:46 +0000 (16:08 -0600)] 
fixing canDoGenerics1 (fixes #8468) (fixes #8479)

Signed-off-by: Jose Pedro Magalhaes <>
6 years agoTypo
Krzysztof Gogolewski [Mon, 18 Nov 2013 12:26:44 +0000 (13:26 +0100)] 

6 years agoMinor change to error message wording
Krzysztof Gogolewski [Sun, 17 Nov 2013 12:56:24 +0000 (13:56 +0100)] 
Minor change to error message wording

One flag is deprecated, other removed

6 years agoTypo: s/LlVM/LlVM/
Joachim Breitner [Sun, 17 Nov 2013 10:13:42 +0000 (10:13 +0000)] 
Typo: s/LlVM/LlVM/

6 years agoInclude funTyCon in oprhNamesOfType (fixes Trac #8535)
Simon Peyton Jones [Fri, 15 Nov 2013 18:49:07 +0000 (18:49 +0000)] 
Include funTyCon in oprhNamesOfType (fixes Trac #8535)

Thanks to parcs for identifying both the bug and the right solution.

6 years agoFix canIrredPred again
Simon Peyton Jones [Fri, 15 Nov 2013 18:47:38 +0000 (18:47 +0000)] 
Fix canIrredPred again

This follows up the earlier patch to Trac #6068, which I
obviously hadn't validated properly.

6 years agoImprove orientation
Simon Peyton Jones [Fri, 15 Nov 2013 18:46:57 +0000 (18:46 +0000)] 
Improve orientation

I came across some stupid re-orientation, when debugging something else.
For example, we were re-orienting

    t ~ fsk
   fsk ~ t
where fsk is a flatten *skolem* and t is a meta type varaible.
The logic was just wrong.

6 years agoFix a subtle bug in kind-mis-matched equalities (Trac #6068)
Simon Peyton Jones [Fri, 15 Nov 2013 11:50:19 +0000 (11:50 +0000)] 
Fix a subtle bug in kind-mis-matched equalities (Trac #6068)

When we have an equality constraint where the LHS and RHS
have ill-matched kinds, it get turned into a CIrredEvCan
because a CTyEqCan/CFunEqCan are guaranteed kind-compatible.

But that in turn led to a bug because in the constraint
    c  =  (a:k1) ~ (b:k2)
the kind variables k1 and k2 don't show up in tyVarsOfType c.
Why not?  Because it looks like
    (~) k1 (a:k1) (b:k2)
Maybe (~) should have two kind arguments?  That seemed
like too big a change for not (we wait for NoKinds), so
this patch fixes the bug for now.

6 years agoImprove error message
Simon Peyton Jones [Fri, 15 Nov 2013 11:25:48 +0000 (11:25 +0000)] 
Improve error message

Accommodating Simon M's suggestion (Trac #4268, comment 17)

6 years agoFix the unlit path in count_lines
Simon Peyton Jones [Fri, 15 Nov 2013 11:24:46 +0000 (11:24 +0000)] 
Fix the unlit path in count_lines

6 years agoSimplify and improve coverage of ":info" instance lookup
Patrick Palka [Thu, 14 Nov 2013 22:40:55 +0000 (17:40 -0500)] 
Simplify and improve coverage of ":info" instance lookup

During instance lookup, we can treat classes and data families like any
other TyCon instead of special-casing them.  This approach, aside from
being simpler, has the benefit of returning extra relevant instances for
classes and data families.  For example, given

class A a
instance B (a :: Constraint)
instance A B

":info B" will now also print "instance A B" where previously it didn't
due to the special casing of class TyCons in lookupInsts.

This improves upon the existing patch for Trac #4175