ghc.git
3 years agoWibbles in TH wip/T10832-generalised-injectivity
Simon Peyton Jones [Thu, 24 Dec 2015 15:10:35 +0000 (15:10 +0000)] 
Wibbles in TH

3 years agoMerge remote-tracking branch 'origin/master' into wip/T10832-generalised-injectivity
Simon Peyton Jones [Thu, 24 Dec 2015 15:03:32 +0000 (15:03 +0000)] 
Merge remote-tracking branch 'origin/master' into wip/T10832-generalised-injectivity

3 years agoFix scoping of result tyvar in tcInjectivity
Simon Peyton Jones [Thu, 24 Dec 2015 15:01:17 +0000 (15:01 +0000)] 
Fix scoping of result tyvar in tcInjectivity

3 years agoRefactoring only
Simon Peyton Jones [Thu, 24 Dec 2015 14:55:35 +0000 (14:55 +0000)] 
Refactoring only

This moves code around to more sensible places.

- Construction for CoAxiom is localised in FamInstEnv

- orphNamesOfxx moves to CoreFVs

- roughMatchTcs, instanceCantMatch moves to Unify

- mkNewTypeCo moves from Coercion to FamInstEnv, and is
  renamed mkNewTypeCoAxiom, which makes more sense

3 years agoImprove tracing a bit in CoreSubst
Simon Peyton Jones [Thu, 24 Dec 2015 14:44:16 +0000 (14:44 +0000)] 
Improve tracing a bit in CoreSubst

3 years agoImprove the runRW magic in CorePrep
Simon Peyton Jones [Thu, 24 Dec 2015 14:42:34 +0000 (14:42 +0000)] 
Improve the runRW magic in CorePrep

Instead of substituting, just augment the environment.
Less code, more efficient.

And the previous version had a bogus in-scope set which
triggered a WARNING

3 years agoImprove SimplUtils.interestingArg
Simon Peyton Jones [Thu, 24 Dec 2015 14:40:08 +0000 (14:40 +0000)] 
Improve SimplUtils.interestingArg

There were two problems here:
 - We were looking under a lambda without extending
   the in-scope env, which triggered a WARNING
   But there's no need to look under a lambda.

 - We were looking under a letrec without extending
   the in-scope env, which triggered the same WARNING
   Solution: extend the in-scope env

3 years agoBig wad of refactoring
Simon Peyton Jones [Thu, 24 Dec 2015 14:21:20 +0000 (14:21 +0000)] 
Big wad of refactoring

The main starting point is the representation of injectivity
in TyCon.  See Note [Injecivity information] in TyCon

3 years agoghc-cabal: Bring back TRANSITIVE_DEP_NAMES
Ben Gamari [Thu, 24 Dec 2015 12:39:28 +0000 (13:39 +0100)] 
ghc-cabal: Bring back TRANSITIVE_DEP_NAMES

This is still needed by the Shake build system until things have been
reworked to use Cabal directly.

3 years agoconfig.mk.in: Disable stripping by default on ARM
Ben Gamari [Wed, 23 Dec 2015 22:51:02 +0000 (23:51 +0100)] 
config.mk.in: Disable stripping by default on ARM

The Cortex A8 hardware apparently has a bug which ld.gold will try to
correct; however in order to do so it must have unstripped executables
lest we see warnings of the form (see #10376, #10464),

    /usr/bin/ld.gold: warning: cannot scan executable section 1 of ...
    for Cortex-A8 erratum because it has no mapping symbols.

Consequently we disabling stripping by default on this architecture.

A bit more discussion about this issue can be found in this [Android
issue](http://code.google.com/p/android/issues/detail?id=40794).

Test Plan: Try validating on ARM

Reviewers: erikd, austin, thomie

Reviewed By: austin, thomie

Differential Revision: https://phabricator.haskell.org/D1599

GHC Trac Issues: #10376, #10464

3 years agoMake testsuite work again with Py3
Herbert Valerio Riedel [Wed, 23 Dec 2015 21:37:42 +0000 (22:37 +0100)] 
Make testsuite work again with Py3

Python 3 support seems to have mildly bitrotten since #9184 was closed.
Luckily, only some minor tweaks seem necessary.

3 years agoDocs: -interactive-print should reside in registered package
Thomas Miedema [Wed, 23 Dec 2015 21:14:57 +0000 (22:14 +0100)] 
Docs: -interactive-print should reside in registered package

Since commit 03c4893e355948fe865bc52c744359c42e4b06d7, ic_int_print is
retained from registered packages after `:reload`.

Fixes #11159.

3 years agoGeneralized injective type families
Jan Stolarek [Wed, 23 Dec 2015 10:18:44 +0000 (10:18 +0000)] 
Generalized injective type families

(As modified onto HEAD, 23 Dec 15)

Summary:
Generalization of injective type families to match the expressiveness of
functional dependencies, as briefly outlined in Section 7 of "Injective type
families for Haskell" Haskell Symposium 2015 paper.  See also injectivity of
type C described on the wiki page
https://ghc.haskell.org/trac/ghc/wiki/InjectiveTypeFamilies

Test Plan: ./validate

Reviewers: simonpj, austin, goldfire, bgamari

Subscribers: thomie, mpickering

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D1287

GHC Trac Issues: #10832

3 years agoTest #10432
Jan Stolarek [Wed, 23 Dec 2015 08:35:36 +0000 (09:35 +0100)] 
Test #10432

Summary: A regression test for #10432, which seems to already be fixed.

Test Plan: ./validate

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1691

GHC Trac Issues: #10432

3 years agoUpdate tests for Trac #11039
Simon Peyton Jones [Wed, 23 Dec 2015 12:09:32 +0000 (12:09 +0000)] 
Update tests for Trac #11039

3 years agoAPI Annotaions:add name in PatBind Match
Alan Zimmerman [Wed, 23 Dec 2015 10:44:23 +0000 (12:44 +0200)] 
API Annotaions:add name in PatBind Match

A PatBind operates similarly to a FunBind, and so the RdrName and
infix/prefix state needs to be captured for use in API Annotations.

3 years agoAllow CallStacks to be frozen
Eric Seidel [Wed, 23 Dec 2015 09:10:04 +0000 (10:10 +0100)] 
Allow CallStacks to be frozen

This introduces "freezing," an operation which prevents further
locations from being appended to a CallStack.  Library authors may want
to prevent CallStacks from exposing implementation details, as a matter
of hygiene. For example, in

```
head [] = error "head: empty list"

ghci> head []
*** Exception: head: empty list
CallStack (from implicit params):
  error, called at ...
```

including the call-site of `error` in `head` is not strictly necessary
as the error message already specifies clearly where the error came
from.

So we add a function `freezeCallStack` that wraps an existing CallStack,
preventing further call-sites from being pushed onto it. In other words,

```
pushCallStack callSite (freezeCallStack callStack) = freezeCallStack callStack
```

Now we can define `head` to not produce a CallStack at all

```
head [] =
  let ?callStack = freezeCallStack emptyCallStack
  in error "head: empty list"

ghci> head []
*** Exception: head: empty list
CallStack (from implicit params):
  error, called at ...
```

---

1. We add the `freezeCallStack` and `emptyCallStack` and update the
   definition of `CallStack` to support this functionality.

2. We add `errorWithoutStackTrace`, a variant of `error` that does not
   produce a stack trace, using this feature. I think this is a sensible
   wrapper function to provide in case users want it.

3. We replace uses of `error` in base with `errorWithoutStackTrace`. The
   rationale is that base does not export any functions that use CallStacks
   (except for `error` and `undefined`) so there's no way for the stack
   traces (from Implicit CallStacks) to include user-defined functions.
   They'll only contain the call to `error` itself. As base already has a
   good habit of providing useful error messages that name the triggering
   function, the stack trace really just adds noise to the error. (I don't
   have a strong opinion on whether we should include this third commit,
   but the change was very mechanical so I thought I'd include it anyway in
   case there's interest)

4. Updates tests in `array` and `stm` submodules

Test Plan: ./validate, new test is T11049

Reviewers: simonpj, nomeata, goldfire, austin, hvr, bgamari

Reviewed By: simonpj

Subscribers: thomie

Projects: #ghc

Differential Revision: https://phabricator.haskell.org/D1628

GHC Trac Issues: #11049

3 years agoFix ASSERT in buildPatSyn, and T10897 test
Simon Peyton Jones [Wed, 23 Dec 2015 10:13:26 +0000 (10:13 +0000)] 
Fix ASSERT in buildPatSyn, and T10897 test

This closes Trac #10897

3 years agoComments only
Simon Peyton Jones [Wed, 23 Dec 2015 10:11:56 +0000 (10:11 +0000)] 
Comments only

3 years agoFix super-class cycle check
Simon Peyton Jones [Wed, 23 Dec 2015 10:11:11 +0000 (10:11 +0000)] 
Fix super-class cycle check

Fixes Trac #11278

3 years ago- fix gc_thread related compilation failure on Solaris/i386 platform
Karel Gardas [Tue, 22 Dec 2015 21:53:00 +0000 (22:53 +0100)] 
- fix gc_thread related compilation failure on Solaris/i386 platform

Summary:
This patch fixes gc_thread related compilation failure
on Solaris/i386 platform. It uses Linux way of __thread declared
gc_thread variable for register starving i386 from now.

Reviewers: bgamari, austin, erikd

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1688

3 years agoDelete incorrect *-ws-32 expected test output
Erik de Castro Lopo [Wed, 23 Dec 2015 09:23:24 +0000 (20:23 +1100)] 
Delete incorrect *-ws-32 expected test output

Summary:
The *-ws-32 file were too difficult to keep up-to-date so @bgamari
updated the test outut normalization code in commit 786d528e8f949d
to make these files un-necessary.

Test Plan: test on PowerPC

Reviewers: hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, bgamari

Differential Revision: https://phabricator.haskell.org/D1690

3 years agoModify Nmax to maxN Trac #10728
MarcelineVQ [Wed, 23 Dec 2015 00:23:33 +0000 (01:23 +0100)] 
Modify Nmax to maxN Trac #10728

Added test and changed -Nmax to -maxN, -n was taken

Noticed strange -m behavoir and fixed -m from quietly
ignoring being passed invalid opts, e.g. "-msasd"

Reviewers: simonmar, hvr, austin, thomie, bgamari

Reviewed By: hvr, thomie, bgamari

Subscribers: bgamari, hvr, thomie, simonmar

Differential Revision: https://phabricator.haskell.org/D1677

GHC Trac Issues: #10728

3 years agoTest Trac #11274
Simon Peyton Jones [Tue, 22 Dec 2015 15:49:24 +0000 (15:49 +0000)] 
Test Trac #11274

3 years agoTidy up and comment wildcards in family instances
Simon Peyton Jones [Tue, 22 Dec 2015 09:08:28 +0000 (09:08 +0000)] 
Tidy up and comment wildcards in family instances

I found it was possible to do this a bit more nicely
See Note [Family instance declaration binders] in HsDecls, and
    Note [Wildcards in family instances] in RnSource

3 years agoComments only
Simon Peyton Jones [Tue, 22 Dec 2015 09:06:47 +0000 (09:06 +0000)] 
Comments only

3 years agoAdd a pattern-syn form of PromotionErr
Simon Peyton Jones [Mon, 21 Dec 2015 14:18:32 +0000 (14:18 +0000)] 
Add a pattern-syn form of PromotionErr

The main change is to add PatSynPE to PromotionErr, so that
when we get an ill-staged use of a pattern synonym we get a
civilised error message.

We were already doing this in half-baked form in tcValBinds, but
this patch tidies up the impl (which previously used a hack rather
than APromotionErr), and does it in tcTyClsInstDecls too.

3 years agoComments and white space
Simon Peyton Jones [Mon, 21 Dec 2015 14:17:31 +0000 (14:17 +0000)] 
Comments and white space

3 years agoWibble to error message in Trac #10426
Simon Peyton Jones [Mon, 21 Dec 2015 14:15:09 +0000 (14:15 +0000)] 
Wibble to error message in Trac #10426

3 years agoRevert "Allow as-patterns in pattern synonym declarations."
Simon Peyton Jones [Mon, 21 Dec 2015 10:34:41 +0000 (10:34 +0000)] 
Revert "Allow as-patterns in pattern synonym declarations."

I'm reverting this until we agree a design.
See comment:5 in Trac #9793.

Incidentally the reference to Trac #9739 in the reverted
patch is bogus; it shold have said #9793.

This reverts commit 44640af7afa1a01ff2e2357f7c1436b4804866fc.

3 years ago- fix tests on OpenBSD which requires _DYNAMIC symbol
Karel Gardas [Tue, 22 Dec 2015 22:00:24 +0000 (23:00 +0100)] 
- fix tests on OpenBSD which requires _DYNAMIC symbol

Summary:
This patch adds _DYNAMIC symbol to the list of OpenBSD symbols.
The patch fixes unknown _DYNAMIC symbol runtime linker error caused
by recent update of unix library.

Reviewers: bgamari, austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1689

3 years agoUpdate filepath submodule to latest snapshot
Herbert Valerio Riedel [Tue, 22 Dec 2015 22:49:39 +0000 (23:49 +0100)] 
Update filepath submodule to latest snapshot

3 years agoImplement -hide-all-plugin-packages and -plugin-package(-id), fixing #11244
Edward Z. Yang [Sat, 19 Dec 2015 02:29:52 +0000 (18:29 -0800)] 
Implement -hide-all-plugin-packages and -plugin-package(-id), fixing #11244

Summary:
The basic idea is that we have a new set of "exposed modules"
which are /only/ used for plugins, i.e. -fplugin Foo and
--frontend Foo.  You can interact with this namespace
using the flags -plugin-package-id and -plugin-package.
By default, this namespace contains all modules in the
user namespace (as before), but you can toggle that using
-hide-all-plugin-packages.

There is one nasty hack: GhcMake respects -fplugin in
GHC_OPTIONS to make local plugins work correctly.  It also
bails out of you have an import of a module which doesn't
exist locally or in the package database.  The upshot is
that we need to be sure to check in the plugin modules
too, so we don't give a spurious failure when a plugin
is in the plugin namespace but not the main namespace.
A better way to fix this would be to distinguish between
plugin and normal dependencies in ModSummary.

I cheated a little and tweaked a few existing plugins
tests to exercise the new code paths.

TODO: Documentation

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: bgamari, austin, simonpj, duncan

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1661

GHC Trac Issues: #11244

3 years agoRefactor package flags into several distinct types.
Edward Z. Yang [Fri, 18 Dec 2015 20:09:36 +0000 (12:09 -0800)] 
Refactor package flags into several distinct types.

Summary:
Previously, all package flags (-package, -trust-package,
-ignore-package) were bundled up into a single packageFlags
field in DynFlags, under a single type.  This commit separates
them based on what they do.

This is a nice improvement, because it means that Packages can
then be refactored so that a number of functions are "tighter":

    - We know longer have to partition PackageFlags into
      the ignore flag and other flags; ignore flags are just
      put into their own field.

    - Trust flags modify the package database, but exposed
      flags do not (they modify the visibility map); now
      applyPackageFlag and applyTrustFlag have tighter signatures
      which reflect this.

This patch was motivated by the need to have a separate visibility
map for plugin packages, which will be in a companion patch.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: austin, bgamari, duncan

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1659

3 years agoCoercionN is not in scope in TyCoRep
Richard Eisenberg [Tue, 22 Dec 2015 20:29:57 +0000 (15:29 -0500)] 
CoercionN is not in scope in TyCoRep

3 years agoTweak comments around UnivCos.
Richard Eisenberg [Tue, 22 Dec 2015 20:08:04 +0000 (15:08 -0500)] 
Tweak comments around UnivCos.

3 years agoAPIAnnotations:AnnComma in wrong place in qcnames1
Alan Zimmerman [Tue, 22 Dec 2015 19:03:58 +0000 (21:03 +0200)] 
APIAnnotations:AnnComma in wrong place in qcnames1

The list is reversed when it is used, so the comma must be added to the
item at the front of it, to be following it when used.

3 years agoRefactor named wildcards (again)
Simon Peyton Jones [Tue, 22 Dec 2015 16:28:50 +0000 (16:28 +0000)] 
Refactor named wildcards (again)

Michal's work on #10982, #11098, refactored the handling of named
wildcards by making them more like ordinary type variables.

This patch takes the same idea to its logical conclusion, resulting
in a much tidier, tighter implementation.

Read Note [The wildcard story for types] in HsTypes.

Changes:

 * Named wildcards are ordinary type variables, throughout

 * HsType no longer has a data constructor for named wildcards
   (was NamedWildCard in HsWildCardInfo).  Named wildcards are
   simply HsTyVars

 * Similarly named wildcards disappear from Template Haskell

 * I refactored RnTypes to avoid polluting LocalRdrEnv with something
   as narrow as named wildcards.  Instead the named wildcard set is
   carried in RnTyKiEnv.

There is a submodule update for Haddock.

3 years agoRemove another duplicate test
Ben Gamari [Tue, 22 Dec 2015 16:23:31 +0000 (17:23 +0100)] 
Remove another duplicate test

3 years agoLocalize API Annotation in LInjectivtyAnn
Alan Zimmerman [Tue, 22 Dec 2015 13:12:41 +0000 (15:12 +0200)] 
Localize API Annotation in LInjectivtyAnn

The injectivity_cond production in Parser.y returns the annotation for
the '->' to the calling production, rather than applying it directly.

Rather apply it directly, so LInjectivityAnn can be rendered as a unit
from the API Annotations.

3 years agoRemove duplicate T11224 test definition
Ben Gamari [Tue, 22 Dec 2015 14:18:31 +0000 (09:18 -0500)] 
Remove duplicate T11224 test definition

3 years agoFix typechecking for pattern synonym signatures
Simon Peyton Jones [Tue, 22 Dec 2015 13:33:35 +0000 (14:33 +0100)] 
Fix typechecking for pattern synonym signatures

Various tickets have revealed bad shortcomings in the typechecking of
pattern type synonyms.  Discussed a lot in (the latter part of)
Trac #11224.

This patch fixes the most complex issues:

- Both parser and renamer now treat pattern synonyms as an
  ordinary LHsSigType.  Nothing special.  Hooray.

- tcPatSynSig (now in TcPatSyn) typechecks the signature, and
  decomposes it into its pieces.
  See Note [Pattern synonym signatures]

- tcCheckPatSyn has had a lot of refactoring.
  See Note [Checking against a pattern signature]

The result is a lot tidier and more comprehensible.
Plus, it actually works!

NB: this patch doesn't actually address the precise
    target of #11224, namely "inlining pattern synonym
    does not preserve semantics".  That's an unrelated
    bug, with a separate patch.

ToDo: better documentation in the user manual

Test Plan: Validate

Reviewers: austin, hvr, goldfire

Subscribers: goldfire, mpickering, thomie, simonpj

Differential Revision: https://phabricator.haskell.org/D1685

GHC Trac Issues: #11224

3 years agoFix grouping for pattern synonyms
Simon Peyton Jones [Tue, 22 Dec 2015 13:33:23 +0000 (14:33 +0100)] 
Fix grouping for pattern synonyms

When grouping pattern synonyms in the desugarer, to find when a single
match will work for the whole group, we use `Match.sameGroup`.  But this
function was declaring two pattern-synonym matches equal to often.
Result: Lint errors and broken semantics.

The fix is easy.  See Note [Pattern synonym groups].

Re-do typechecking for pattern synonym signatures

Test Plan: Validate

Reviewers: austin

Subscribers: thomie, mpickering, simonpj

Differential Revision: https://phabricator.haskell.org/D1684

3 years agoUpdate stm submodule to v2.4.4.1 release
Herbert Valerio Riedel [Tue, 22 Dec 2015 12:59:36 +0000 (13:59 +0100)] 
Update stm submodule to v2.4.4.1 release

This `stm` release also addresses #10967

3 years agoRework Template Haskell's handling of strictness
RyanGlScott [Tue, 22 Dec 2015 10:25:59 +0000 (11:25 +0100)] 
Rework Template Haskell's handling of strictness

Currently, Template Haskell's treatment of strictness is not enough to
cover all possible combinations of unpackedness and strictness. In
addition, it isn't equipped to deal with new features (such as
`-XStrictData`) which can change a datatype's fields' strictness during
compilation.

To address this, I replaced TH's `Strict` datatype with
`SourceUnpackedness` and `SourceStrictness` (which give the programmer a
more complete toolkit to configure a datatype field's strictness than
just `IsStrict`, `IsLazy`, and `Unpack`). I also added the ability to
reify a constructor fields' strictness post-compilation through the
`reifyConStrictness` function.

Fixes #10697.

Test Plan: ./validate

Reviewers: simonpj, goldfire, bgamari, austin

Reviewed By: goldfire, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1603

GHC Trac Issues: #10697

3 years agoRetain AnnTilde in splitTildeApps
Alan Zimmerman [Tue, 22 Dec 2015 10:35:22 +0000 (12:35 +0200)] 
Retain AnnTilde in splitTildeApps

splitTildeApps can introduce a new HsAppInfix for a tilde, with a fresh
SrcSpan, disconnecting its existing AnnTilde API Annotation.

A tilde needs AnnTilde to render properly, this patch adds a new one on
the fresh SrcSpan

3 years agoComments only, about coercion holes
Simon Peyton Jones [Tue, 22 Dec 2015 10:03:14 +0000 (10:03 +0000)] 
Comments only, about coercion holes

Richard, pls take a look

3 years agoUpdate Cabal submodule to latest snapshot
Herbert Valerio Riedel [Tue, 22 Dec 2015 08:16:12 +0000 (09:16 +0100)] 
Update Cabal submodule to latest snapshot

The addition of several new Semigroup instances caused
a Haddock allocation increase.

3 years agoMake HsAppsType contents Located
Alan Zimmerman [Mon, 21 Dec 2015 20:30:45 +0000 (22:30 +0200)] 
Make HsAppsType contents Located

An HsAppInfix can carry a qconop/varop preceded by a SIMPLEQUOTE as a
Located RdrName.

In this case AnnSimpleQuote is attached to the Located HsAppType.

    | SIMPLEQUOTE qconop            {% ams (sLL $1 $> $ HsAppInfix $2)
                                           [mj AnnSimpleQuote $1] }
    | SIMPLEQUOTE varop             {% ams (sLL $1 $> $ HsAppInfix $2)
                                           [mj AnnSimpleQuote $1] }

This patch changes

    data HsType name
      ...
      | HsAppsTy [HsAppType name]

to

    data HsType name
      ...
      | HsAppsTy [LHsAppType name]

so that the annotation is not discarded when it reaches the ParsedSource

3 years agoFix GHCi segfault in Windows 32bit
Tamar Christina [Mon, 21 Dec 2015 20:02:46 +0000 (21:02 +0100)] 
Fix GHCi segfault in Windows 32bit

Summary:
Add missing calling convention to function pointer,
incorrect `cdecl` calling convention which should be `stdcall`
on x86 was causing the stack to be corrupted. When it tried to
return from the function the return pointer would be invalid.

Test Plan: ./validate

Reviewers: austin, erikd, bgamari, thomie

Reviewed By: bgamari, thomie

Differential Revision: https://phabricator.haskell.org/D1683

GHC Trac Issues: #11234

3 years agoUpdate hoopl submodule to final 3.10.2.1 release
Herbert Valerio Riedel [Mon, 21 Dec 2015 22:14:19 +0000 (23:14 +0100)] 
Update hoopl submodule to final 3.10.2.1 release

This is the designated release to go with GHC 8.0.1

/cc @mlite

3 years agousers_guide: Synchronize relnotes with base changelog
Ben Gamari [Mon, 21 Dec 2015 20:13:34 +0000 (21:13 +0100)] 
users_guide: Synchronize relnotes with base changelog

3 years agobase: Add sections to changelog
Ben Gamari [Mon, 21 Dec 2015 20:12:30 +0000 (21:12 +0100)] 
base: Add sections to changelog

3 years agotestsuite/ClassOperator: Mark as compile_fail instead of should_fail
Ben Gamari [Mon, 21 Dec 2015 19:34:40 +0000 (20:34 +0100)] 
testsuite/ClassOperator: Mark as compile_fail instead of should_fail

3 years agoAdded missing instances for Identity and Const (#11210)
Shane O'Brien [Mon, 21 Dec 2015 19:25:19 +0000 (20:25 +0100)] 
Added missing instances for Identity and Const (#11210)

The following instances are added

    instance Bounded a => Bounded (Const a b)
    instance Enum a => Enum (Const a b)
    instance Ix a => Ix (Const a b)
    instance Storable a => Storable (Const a b)

    instance Bounded a => Bounded (Identity a)
    instance Enum a => Enum (Identity a)
    instance Ix a => Ix (Identity a)
    instance Semigroup a => Semigroup (Identity a)
    instance Storable a => Storable (Identity a)

Reviewers: ekmett, RyanGlScott, rwbarton, hvr, austin, bgamari

Reviewed By: RyanGlScott, hvr

Subscribers: rwbarton, RyanGlScott, thomie

Differential Revision: https://phabricator.haskell.org/D1626

GHC Trac Issues: #11210

3 years agoFix #11256 by not immediately erroring if we can't find a module.
Edward Z. Yang [Mon, 21 Dec 2015 19:25:08 +0000 (20:25 +0100)] 
Fix #11256 by not immediately erroring if we can't find a module.

Test Plan: validate

Reviewers: austin, bgamari, thomie

Reviewed By: bgamari, thomie

Differential Revision: https://phabricator.haskell.org/D1669

GHC Trac Issues: #11256

3 years agoRename GHCi's UI modules into GHCi.UI(.*)
Herbert Valerio Riedel [Mon, 21 Dec 2015 14:17:42 +0000 (15:17 +0100)] 
Rename GHCi's UI modules into GHCi.UI(.*)

Further work refactoring and enhancing GHCi will make it desirable to
split up GHCi's code-base into multiple modules with specific functions,
and rather than have several top-level 'Ghci*' modules, it's nicer to
have a common namespace. This commit is provides the basis for that.

Note that the remaining GHCi.* namespace belongs to the new `ghci`
package.

Differential Revision: https://phabricator.haskell.org/D1593

3 years agoAdd proper GADTs support to Template Haskell
Jan Stolarek [Wed, 11 Nov 2015 09:49:22 +0000 (10:49 +0100)] 
Add proper GADTs support to Template Haskell

Until now GADTs were supported in Template Haskell by encoding them using
normal data types.  This patch adds proper support for representing GADTs
in TH.

Test Plan: T10828

Reviewers: goldfire, austin, bgamari

Subscribers: thomie, mpickering

Differential Revision: https://phabricator.haskell.org/D1465

GHC Trac Issues: #10828

3 years agotestsuite: Add testcase for #8316
Ben Gamari [Mon, 21 Dec 2015 19:22:49 +0000 (20:22 +0100)] 
testsuite: Add testcase for #8316

This is still broken but really out to be fixed. At least know we'll
know if someone fixes it inadvertently.

Test Plan: validate

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1682

GHC Trac Issues: #8316

3 years agotestsuite/ClassOperator: This actually should_fail
Ben Gamari [Mon, 21 Dec 2015 18:13:17 +0000 (19:13 +0100)] 
testsuite/ClassOperator: This actually should_fail

See #11264 for details.

3 years agoTcTyClsDecls: Remove invalid comments about list monads
Ömer Sinan Ağacan [Mon, 21 Dec 2015 19:03:26 +0000 (14:03 -0500)] 
TcTyClsDecls: Remove invalid comments about list monads

3 years agoMaintain cost-centre stacks in the interpreter
Simon Marlow [Sat, 31 Oct 2015 17:38:34 +0000 (17:38 +0000)] 
Maintain cost-centre stacks in the interpreter

Summary:
Breakpoints become SCCs, so we have detailed call-stack info for
interpreted code.  Currently this only works when GHC is compiled with
-prof, but D1562 (Remote GHCi) removes this constraint so that in the
future call stacks will be available without building your own GHCi.

How can you get a stack trace?

* programmatically: GHC.Stack.currentCallStack
* I've added an experimental :where command that shows the stack when
  stopped at a breakpoint
* `error` attaches a call stack automatically, although since calls to
  `error` are often lifted out to the top level, this is less useful
  than it might be (ImplicitParams still works though).
* Later we might attach call stacks to all exceptions

Other related changes in this diff:

* I reduced the number of places that get ticks attached for
  breakpoints.  In particular there was a breakpoint around the whole
  declaration, which was often redundant because it bound no variables.
  This reduces clutter in the stack traces and speeds up compilation.

* I tidied up some RealSrcSpan stuff in InteractiveUI, and made a few
  other small cleanups

Test Plan: validate

Reviewers: ezyang, bgamari, austin, hvr

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1595

GHC Trac Issues: #11047

3 years agoEncode strictness in GHC generics metadata
RyanGlScott [Mon, 21 Dec 2015 15:11:25 +0000 (16:11 +0100)] 
Encode strictness in GHC generics metadata

This augments `MetaSel` with a `Bang` field, which gives generic
programmers access to the following information about each field
selector:

* `SourceUnpackedness`: whether a field was marked `{-# NOUNPACK #-}`,
  `{-# UNPACK #-}`, or not
* `SourceStrictness`: whether a field was given a strictness (`!`) or
  laziness (`~`) annotation
* `DecidedStrictness`: what strictness GHC infers for a field during
  compilation, which may be influenced by optimization levels,
  `-XStrictData`, `-funbox-strict-fields`, etc.

Unlike in Phab:D1603, generics does not grant a programmer the ability
to "splice" in metadata, so there is no issue including
`DecidedStrictness` with `Bang` (whereas in Template Haskell, it had to
be split off).

One consequence of this is that `MetaNoSel` had to be removed, since it
became redundant. The `NoSelector` empty data type was also removed for
similar reasons.

Fixes #10716.

Test Plan: ./validate

Reviewers: dreixel, goldfire, kosmikus, austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1646

GHC Trac Issues: #10716

3 years agoFix-up GHC 7.12 artifacts
Herbert Valerio Riedel [Mon, 21 Dec 2015 17:37:37 +0000 (18:37 +0100)] 
Fix-up GHC 7.12 artifacts

The haddock submodule also still assumed that GHC 7.12 would be the next
major release (rather than GHC 8.0)

3 years agoFix AnnDotDot in module export
Alan Zimmerman [Mon, 21 Dec 2015 09:33:57 +0000 (11:33 +0200)] 
Fix AnnDotDot in module export

The annotation for the ".." in

    module GADTRecords2 (H1(..)) where

was in the wrong place

3 years agoMinor clean-up to ghc-bin.cabal.in
Herbert Valerio Riedel [Mon, 21 Dec 2015 13:38:27 +0000 (14:38 +0100)] 
Minor clean-up to ghc-bin.cabal.in

This has been factored out of D1673

3 years agotestsuite: Add ClassOperator testcase
Ben Gamari [Sun, 20 Dec 2015 14:21:10 +0000 (15:21 +0100)] 
testsuite: Add ClassOperator testcase

This is derived from Haddock's `Operators` `html-test`, which appears to
fail with GHC master yet compiles with 7.10.2

Reviewers: simonpj, austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1667

GHC Trac Issues: #11264

3 years agoImplement phase 1 of expanded Floating
Dan Doel [Sun, 20 Dec 2015 14:19:52 +0000 (15:19 +0100)] 
Implement phase 1 of expanded Floating

- This part of the proposal is to add log1p, expm1, log1pexp and
  log1mexp to the Floating class, and export the full Floating class
  from Numeric

Reviewers: ekmett, #core_libraries_committee, bgamari, hvr, austin

Reviewed By: ekmett, #core_libraries_committee, bgamari

Subscribers: Phyx, RyanGlScott, ekmett, thomie

Differential Revision: https://phabricator.haskell.org/D1605

GHC Trac Issues: #11166

3 years agoMove Const to own module in Data.Functor.Const and enable PolyKinds
Shane O'Brien [Sun, 20 Dec 2015 12:40:13 +0000 (13:40 +0100)] 
Move Const to own module in Data.Functor.Const and enable PolyKinds

`Const` from `Control.Applicative` can trivially be made
kind-polymorphic in its second argument. There has been a Trac issue
about this for nearly a year now. It doesn't look like anybody objects
to it, so I figured I might as well make a patch.

Trac Issues: #10039, #10865, #11135

Differential Revision: https://phabricator.haskell.org/D1630

Reviewers: ekmett, hvr, bgamari

Subscribers: RyanGlScott, thomie

3 years agoWarn about unused type variables in type families
Michał Sośnicki [Mon, 21 Dec 2015 11:29:03 +0000 (12:29 +0100)] 
Warn about unused type variables in type families

The warnings are enabled with the flag -fwarn-unused-matches, the same
one that enables warnings on the term level.

Identifiers starting with an underscore are now always parsed as type
variables.  When the NamedWildCards extension is enabled, the renamer
replaces those variables with named wildcards.

An additional NameSet nwcs is added to LocalRdrEnv. It's used to keep
names of the type variables that should be replaced with wildcards.

While renaming HsForAllTy, when a name is explicitly bound it is removed
from the nwcs NameSet. As a result, the renamer doesn't replace them in
the quantifier body. (Trac #11098)

Fixes #10982, #11098

Reviewers: alanz, bgamari, hvr, austin, jstolarek

Reviewed By: jstolarek

Subscribers: goldfire, mpickering, RyanGlScott, thomie

Differential Revision: https://phabricator.haskell.org/D1576

GHC Trac Issues: #10982

3 years agoModify IsString String instance (fixes #10814)
Dan Doel [Mon, 21 Dec 2015 11:28:16 +0000 (12:28 +0100)] 
Modify IsString String instance (fixes #10814)

The new instance resolves to `s ~ [Char]` as soon as we know that `s ~
[a]`, to avoid certain functions (like (++)) causing a situation where
`a` is ambiguous and (currently) unable to be defaulted.

Reviewers: #core_libraries_committee, hvr, austin, bgamari

Reviewed By: hvr, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1572

GHC Trac Issues: #10814

3 years agoAdd Location to RdrName in FieldOcc
Alan Zimmerman [Sun, 20 Dec 2015 08:56:24 +0000 (10:56 +0200)] 
Add Location to RdrName in FieldOcc

Summary:
Post #11019, there have been some new instances of RdrName that are not
located, in particular

```#!hs
data FieldOcc name = FieldOcc { rdrNameFieldOcc  :: RdrName
                              , selectorFieldOcc :: PostRn name name
                              }

data AmbiguousFieldOcc name
  = Unambiguous RdrName (PostRn name name)
  | Ambiguous   RdrName (PostTc name name)
  deriving (Typeable)
```
Add locations to them

Updates haddock submodule to match

Test Plan: ./validate

Reviewers: goldfire, hvr, bgamari, austin

Reviewed By: hvr

Subscribers: hvr, thomie, mpickering

Differential Revision: https://phabricator.haskell.org/D1670

GHC Trac Issues: #11258

3 years agoTcTyClsDecls: Add a type annotation
Ömer Sinan Ağacan [Mon, 21 Dec 2015 03:37:50 +0000 (22:37 -0500)] 
TcTyClsDecls: Add a type annotation

3 years agoTcTyClsDecls: use zipWith3M_ instead of generating triplets
Ömer Sinan Ağacan [Mon, 21 Dec 2015 03:36:43 +0000 (22:36 -0500)] 
TcTyClsDecls: use zipWith3M_ instead of generating triplets

3 years agoDynFlags: call defaultWays when creating defaultFlags
Thomas Miedema [Sun, 13 Dec 2015 10:42:42 +0000 (11:42 +0100)] 
DynFlags: call defaultWays when creating defaultFlags

Instead of duplicating its logic. Refactoring only.

For reference, `defaultWays` looks like this:

  defaultWays :: Settings -> [Way]
  defaultWays settings = if pc_DYNAMIC_BY_DEFAULT (sPlatformConstants settings)
                        then [WayDyn]
                        else []

Reviewed by: bgamari

Differential Revision: https://phabricator.haskell.org/D1675

3 years agoAllow as-patterns in pattern synonym declarations.
Matthew Pickering [Sun, 20 Dec 2015 23:46:40 +0000 (23:46 +0000)] 
Allow as-patterns in pattern synonym declarations.

We can allow them if they contain no free variables. This patch just allows
them in one direction and not to be used as builders as the original ticket
suggests.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1666

GHC Trac Issues:  #9739

Conflicts:
testsuite/tests/patsyn/should_fail/all.T

3 years agoDisallow empty where bindings in pattern synonym declarations.
Matthew Pickering [Sun, 20 Dec 2015 23:45:28 +0000 (23:45 +0000)] 
Disallow empty where bindings in pattern synonym declarations.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1665

GHC Trac Issues: #10426

3 years agoUpdate binary submodule to final 0.8.0.0 release
Herbert Valerio Riedel [Sun, 20 Dec 2015 22:12:41 +0000 (23:12 +0100)] 
Update binary submodule to final 0.8.0.0 release

Also, `binary` now is almost warning free
(except for inlinePerformIO deprecation warnings)

/cc @kolmodin

3 years agoaclocal.m4: Fix llc/opt detection code
Herbert Valerio Riedel [Sun, 20 Dec 2015 20:29:51 +0000 (21:29 +0100)] 
aclocal.m4: Fix llc/opt detection code

Currently if llc/opt is missing, we get

  checking for llc-3.7... no
  checking for llc... no
  checking  is version 3.7... ./configure[7417]: --version:  not found
  no
  checking for opt-3.7... no
  checking for opt... no
  checking  is version 3.7... ./configure[7664]: --version:  not found
  no
  checking for llc... no
  checking for opt... no

With this fix, the version is queried iff `llc`/`opt` has been detected
at all, thereby avoiding the disturbing `--version: not found` error
output.

Reviewed By: thomie

Differential Revision: https://phabricator.haskell.org/D1674

3 years agoRemove unused/redundant fields from ghc-cabal.
Edward Z. Yang [Sun, 20 Dec 2015 19:22:50 +0000 (11:22 -0800)] 
Remove unused/redundant fields from ghc-cabal.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: austin, thomie, bgamari

Reviewed By: thomie, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1662

3 years agoUpdate containers submodule to v0.5.7.1 release tag
Herbert Valerio Riedel [Sun, 20 Dec 2015 16:23:04 +0000 (17:23 +0100)] 
Update containers submodule to v0.5.7.1 release tag

This is the new designated release to go with GHC 8.0.1

This is only a meta-data change relative to v0.5.7.0

/cc @foxik

3 years agoMerge new commands from ghci-ng (re #10874)
Herbert Valerio Riedel [Sun, 20 Dec 2015 10:50:59 +0000 (11:50 +0100)] 
Merge new commands from ghci-ng (re #10874)

This adds the new commands `:all-types`, `:loc-at`, `:type-at`, and
`:uses` designed for editor-integration (such as Emacs' `haskell-mode`).

This was originally implemented by Chris Done on

  https://github.com/chrisdone/ghci-ng

and has been in use by Emacs' `haskell-mode` for over a year already,
and closely missed the GHC 7.10 release back then.

I've squashed the commits, rebased to GHC HEAD, and heavily refactored and
improved the patch.

Tests will be added in a separate commit.

Reviewed By: bgamari

Differential Revision: https://phabricator.haskell.org/D1240

3 years agoUpdate time submodule to v1.6 release
Herbert Valerio Riedel [Sun, 20 Dec 2015 09:26:54 +0000 (10:26 +0100)] 
Update time submodule to v1.6 release

This is the designated release to go with GHC 8.0.1

/cc @AshleyYakeley

3 years agoFix two occurences of `x86_HOST_ARCH`
Herbert Valerio Riedel [Sat, 19 Dec 2015 22:13:11 +0000 (23:13 +0100)] 
Fix two occurences of `x86_HOST_ARCH`

The proper name for the define is `i386_HOST_ARCH`

One was introduced back in 2011 via
035b8ebb5405efbcbfd3474821a877add1feca1e / #4914
and the other one more recently via
4905b83a2d448c65ccced385343d4e8124548a3b

We may want to add some validation to catch such typos early on...

Reviewed By: erikd

Differential Revision: https://phabricator.haskell.org/D1664

3 years agoFirst pass at cleaning up ghci.cabal
Herbert Valerio Riedel [Sat, 19 Dec 2015 18:35:31 +0000 (19:35 +0100)] 
First pass at cleaning up ghci.cabal

This prepares the meta-data of the new `ghci` package for Hackage

3 years agoFix typo in 7b8a8222e8f0
Herbert Valerio Riedel [Sat, 19 Dec 2015 18:34:16 +0000 (19:34 +0100)] 
Fix typo in 7b8a8222e8f0

[skip ci]

3 years agoMake ghc-boot Hackage-ready
Herbert Valerio Riedel [Sat, 19 Dec 2015 18:02:15 +0000 (19:02 +0100)] 
Make ghc-boot Hackage-ready

GHC 7.8 / base-4.7 is the oldest GHC/base version compatible with this
package, so let's declare this properly in the cabal file.

3 years agoAdd sparc64 a known architecture (Ticket #11211)
John Paul Adrian Glaubitz [Sat, 19 Dec 2015 09:39:25 +0000 (10:39 +0100)] 
Add sparc64 a known architecture (Ticket #11211)

Explicitly pass "--no-relax" on ArchSPARC64
(as ArchSPARC does) where gcc's default specs
set "-mrelax" which conflicts with "-Wl,-r".

Known architecture will also help extending
sparc NCG support 64-bit ABI.

Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: Sergei Trofimovich <siarheit@google.com>
3 years agoAdd -Nmax<n> RTS feature (#10728)
MarcelineVQ [Sat, 19 Dec 2015 10:10:54 +0000 (11:10 +0100)] 
Add -Nmax<n> RTS feature (#10728)

Added maximum core use based on processors
-Nmax<x> chooses the minimum of processor count or x
Added documentation.

Reviewed By: simonmar, thomie

Differential Revision: https://phabricator.haskell.org/D1650

3 years agoDocumentation, tests for hsc2hs's new #alignment macro
RyanGlScott [Sat, 19 Dec 2015 10:09:52 +0000 (11:09 +0100)] 
Documentation, tests for hsc2hs's new #alignment macro

Adds two tests (one for Trac #4340 and one for Trac #10272), as well as
advice on how to fix your code if `hsc2hs` emits warnings with GHC 8.0
due to a redefinition of `#alignment`. (I also put the advice in the
[GHC 8.0 Migration
Guide](https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0).)

Reviewed By: thomie

Differential Revision: https://phabricator.haskell.org/D1663

GHC Trac Issues: #4340, #10272

3 years agofix typo
Herbert Valerio Riedel [Fri, 18 Dec 2015 22:59:59 +0000 (23:59 +0100)] 
fix typo

[skip-ci]

3 years agoBump hsc2hs submodule
Ben Gamari [Sat, 19 Dec 2015 00:45:51 +0000 (01:45 +0100)] 
Bump hsc2hs submodule

Fixes #4340

3 years agoUpdate .mailmap [skip ci]
Thomas Miedema [Fri, 18 Dec 2015 02:34:42 +0000 (03:34 +0100)] 
Update .mailmap [skip ci]

3 years agoBuild system: fix 'make sdist'
Thomas Miedema [Sat, 19 Dec 2015 00:01:30 +0000 (01:01 +0100)] 
Build system: fix 'make sdist'

This was broken in 4905b83a2d448c65ccced385343d4e8124548a3b.

libraries/ghci/ghc.mk gets created by ./boot.

3 years agoUpdate terminfo submodule to v0.7.2.2 release
Herbert Valerio Riedel [Fri, 18 Dec 2015 21:15:50 +0000 (22:15 +0100)] 
Update terminfo submodule to v0.7.2.2 release

This is the designated release to go with GHC 8.0.1

/cc @judah

3 years agoUpdate terminfo submodule to v0.4.0.2 release
Herbert Valerio Riedel [Fri, 18 Dec 2015 21:14:04 +0000 (22:14 +0100)] 
Update terminfo submodule to v0.4.0.2 release

This is the designated release to go with GHC 8.0.1

/cc @judah

3 years agoFix build for AArch64/Arm64
Erik de Castro Lopo [Fri, 18 Dec 2015 11:07:43 +0000 (22:07 +1100)] 
Fix build for AArch64/Arm64

Test Plan: Build an AArch64 cross compiler.

Reviewers: hvr, bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1654

3 years agoLLVM backend: Show expected LLVM version in warnings/errors
Ömer Sinan Ağacan [Fri, 18 Dec 2015 17:21:47 +0000 (12:21 -0500)] 
LLVM backend: Show expected LLVM version in warnings/errors

Summary:
Before:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )
    You are using a new version of LLVM that hasn't been tested yet!
    We will try though...

After:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )
    You are using an unsupported version of LLVM!
    Currently only 3.7 is supported.
    We will try though...

Before:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )

    <no location info>:
        Warning: Couldn't figure out LLVM version!
                 Make sure you have installed LLVM
    ghc: could not execute: opt

After:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )

    <no location info>: error:
        Warning: Couldn't figure out LLVM version!
                 Make sure you have installed LLVM 3.7
    ghc-stage1: could not execute: opt

Reviewers: austin, rwbarton, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1658

3 years agoghc.cabal: Backpack directory no longer exists
Ben Gamari [Fri, 18 Dec 2015 16:22:39 +0000 (17:22 +0100)] 
ghc.cabal: Backpack directory no longer exists

Reviewers: austin

Subscribers: thomie, ezyang

Differential Revision: https://phabricator.haskell.org/D1653

3 years agoAdd test for T11122
Ben Gamari [Fri, 18 Dec 2015 16:22:15 +0000 (17:22 +0100)] 
Add test for T11122

Test Plan: validate

Reviewers: austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1655

GHC Trac Issues: #11122