ghc.git
3 years agoFunction definition in GHCi
Roman Shatsov [Sat, 21 Nov 2015 14:58:34 +0000 (15:58 +0100)] 
Function definition in GHCi

This patch allows define and re-define functions in ghci. `let` is not
required anymore (but can be used).

Idea: If ghci input string can be parsed as statement then run it as
statement else run it as declaration.

Reviewers: mpickering, bgamari, austin

Reviewed By: mpickering, bgamari, austin

Subscribers: hvr, mpickering, dterei, thomie

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

GHC Trac Issues: #7253

3 years agoCreate a deterministic version of tyVarsOfType
Bartosz Nitka [Sat, 21 Nov 2015 14:57:09 +0000 (15:57 +0100)] 
Create a deterministic version of tyVarsOfType

I've run into situations where I need deterministic `tyVarsOfType` and
this implementation achieves that and also brings an algorithmic
improvement.  Union of two `VarSet`s takes linear time the size of the
sets and in the worst case we can have `n` unions of sets of sizes
`(n-1, 1), (n-2, 1)...` making it quadratic.

One reason why we need deterministic `tyVarsOfType` is in `abstractVars`
in `SetLevels`. When we abstract type variables when floating we want
them to be abstracted in deterministic order.

Test Plan: harbormaster

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

Reviewed By: simonmar

Subscribers: thomie

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

GHC Trac Issues: #4012

3 years agoAdd DVarSet - a deterministic set of Vars
Bartosz Nitka [Sat, 21 Nov 2015 14:49:14 +0000 (15:49 +0100)] 
Add DVarSet - a deterministic set of Vars

This implements `DVarSet`, a deterministic set of Vars, with an
interface very similar to `VarSet` with a couple of functions missing.

I will need this in changes that follow, one of them will be about
changing the type of the set of Vars that `RuleInfo` holds to make the
free variable computation deterministic.

Test Plan:
./validate
I can add new tests if anyone wants me to.

Reviewers: simonpj, simonmar, austin, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

GHC Trac Issues: #4012

3 years agoSuppress conflicting types for builtins warnings
Herbert Valerio Riedel [Sat, 21 Nov 2015 14:48:49 +0000 (15:48 +0100)] 
Suppress conflicting types for builtins warnings

GCC 4.0 and later warn about type-conflicting prototypes for built-in
functions such as `strlen`. This is a problem for the via-c backend as
it generates code such as

  typedef void *(*(*StgFunPtr)(void))(void);
  extern StgFunPtr strlen();

However, by using the `-fno-builtin` flag, GCC is told not to try to
auto-detect such built-in functions and instead treat them as ordinary
external functions.  This also suppresses this warning.

This address #7660

Test Plan: IIAM

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie, erikd

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

GHC Trac Issues: #7660

3 years agoRtsFlags: Fix const warning
Ben Gamari [Sat, 21 Nov 2015 14:48:09 +0000 (15:48 +0100)] 
RtsFlags: Fix const warning

Reviewers: austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoFix Windows builds after D1242
Tamar Christina [Sat, 21 Nov 2015 12:33:09 +0000 (13:33 +0100)] 
Fix Windows builds after D1242

Summary:
Only use the merge_sections.ld linker script if SplitSections is enabled.

I thought I had a way to make the linker script actually work on Windows
and produce object files instead of image files (by using the "INSERT AFTER"
linker script command to get the default script's output format setting),
but that fix caused ghci to crash with an illegal instruction on startup.

Gave up and made a simpler fix of just disabling this for normal builds,
as it's only really relevant with SplitSections enabled anyway.

Reviewers: austin, thomie, bgamari

Reviewed By: austin, thomie

Subscribers: Phyx, thomie

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

GHC Trac Issues: #8405

3 years agoFollow-up fixup to c5d8162d230c373
Herbert Valerio Riedel [Fri, 20 Nov 2015 17:06:50 +0000 (18:06 +0100)] 
Follow-up fixup to c5d8162d230c373

This was missing from c5d8162d230c373b2b49ec94d3f9a027ff6e2dd6 / D1501
for some reason causing the AIX detection to result in `OSUnknown`
rather than `OSAIX`.

3 years agobase: Delete errant GHC/Stack.hsc
Ben Gamari [Thu, 19 Nov 2015 16:58:37 +0000 (17:58 +0100)] 
base: Delete errant GHC/Stack.hsc

This was added in 8988be8561ce0857f3befd6ab3b6c29060685c0a, probably due
to an incorrect merge resolution. The build system has been building
`Stack.hs`.

3 years agousers-guide: Fix version number
Ben Gamari [Thu, 19 Nov 2015 14:27:28 +0000 (15:27 +0100)] 
users-guide: Fix version number

Previously used GhcVersion, which is apparently the version of the
bootstrap compiler. ProjectVersion appears to be the thing to use here.

3 years agouser's guide: Fix some accidental triple-` quote
Herbert Valerio Riedel [Fri, 20 Nov 2015 13:28:22 +0000 (07:28 -0600)] 
user's guide: Fix some accidental triple-` quote

Reviewed By: austin

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

3 years agoghci: don't let ctags/etags overwrite source files
Austin Seipp [Fri, 20 Nov 2015 13:26:42 +0000 (07:26 -0600)] 
ghci: don't let ctags/etags overwrite source files

A ource file which was accidently passed as parameter into `:ctags` or `:etags`
can be overwritten by tag data. This patch updates documentation to avoid
confusion in commands usage and prevents `collateAndWriteTags` from modifying
existing source files.

Reviewed By: thomie, bgamari, austin

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

GHC Trac Issues: #10989

3 years agoPattern Synonym Documentation
Matthew Pickering [Thu, 19 Nov 2015 13:50:01 +0000 (13:50 +0000)] 
Pattern Synonym Documentation

Summary:
This patch adds documentation for record pattern synonyms (D1258) and
bundling pattern synonyms with type constructors in export lists (D1152).

There are also other small improvements motivated by #10900.

Reviewers: goldfire, bgamari, austin

Reviewed By: bgamari

Subscribers: goldfire, thomie

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

GHC Trac Issues: #10900

3 years agoBump process submodule
Ben Gamari [Thu, 19 Nov 2015 13:05:27 +0000 (14:05 +0100)] 
Bump process submodule

3 years agoUnbreak Text.Read.Lex.lex on Unicode symbols
M Farkas-Dyck [Thu, 19 Nov 2015 11:19:30 +0000 (12:19 +0100)] 
Unbreak Text.Read.Lex.lex on Unicode symbols

Reviewers: thomie, hvr, austin, bgamari

Reviewed By: bgamari

Subscribers: bgamari, thomie

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

GHC Trac Issues: #10444

3 years agoSet AIX specific CFLAGS flags
Herbert Valerio Riedel [Thu, 19 Nov 2015 11:56:48 +0000 (12:56 +0100)] 
Set AIX specific CFLAGS flags

First of all, we need to use -mminimal-toc on IBM AIX

AIX's XCOFF is limited to 16k entries in its TOC for 32bit compilation,
which quickly overflows with GHC's code generation.

Otoh, the Parser.hs module contains more entries than fit into a
minimal-toc, so we need to switch back to `-mfull-toc` for that single
module again.

Then, we also need to set the `THREAD_SAFE` CPP #define in order to
unlock the thread-safe `errno` which is essential for the threaded
runtime.

Depends on D1501

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, erikd

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

3 years agoMake GHC aware of OSAIX and AixLD
Herbert Valerio Riedel [Thu, 19 Nov 2015 11:55:35 +0000 (12:55 +0100)] 
Make GHC aware of OSAIX and AixLD

GHC needs to be aware of targetting AIX because
AIX requires some special handling for the toolchain
(similiar to Solaris)

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, erikd

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

3 years agoderivedConstants: Add support for AIX
Herbert Valerio Riedel [Thu, 19 Nov 2015 11:55:26 +0000 (12:55 +0100)] 
derivedConstants: Add support for AIX

On IBM AIX `nm` doesn't support reporting symbol sizes, so we need to
resort to `objdump` instead, which has a peculiar output format on AIX.

depends on D1499

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: kgardas, thomie

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

3 years agoMake `derivedConstants` more crosscompile-friendly
Herbert Valerio Riedel [Thu, 19 Nov 2015 11:54:54 +0000 (12:54 +0100)] 
Make `derivedConstants` more crosscompile-friendly

`derivedConstants` currently uses `System.Info.os` for decisions (which
doesn't necessarily reflect the build-target), as well as hardcoding
"/usr/bin/objdump" for openbsd.

This patch auto-detects `objdump` similiar to how `nm` is detected via
Autoconf as well as passing the target-os into `derivedConstants` via
commandline.

Reviewers: austin, kgardas, erikd, bgamari

Reviewed By: kgardas, erikd, bgamari

Subscribers: kgardas, thomie, erikd

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

3 years agoFix broken build-system when libffi uses install-sh
Herbert Valerio Riedel [Thu, 19 Nov 2015 11:21:04 +0000 (12:21 +0100)] 
Fix broken build-system when libffi uses install-sh

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11109

3 years agoFix interaction of DuplicateRecordFields and GHC.Generics
Adam Gundry [Thu, 19 Nov 2015 11:53:46 +0000 (12:53 +0100)] 
Fix interaction of DuplicateRecordFields and GHC.Generics

This prevents GHC.Generics from exposing mangled selector names
when used on a datatype defined with DuplicateRecordFields enabled.

Test Plan:
New test overloadedrecflds_generics, which tests that both
GHC.Generics and Data.Data use the correct field labels, not mangled
names.

Reviewers: kosmikus, simonpj, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoRelease Notes: Mention out-of-scope error message improvements
Joachim Breitner [Wed, 18 Nov 2015 23:05:50 +0000 (00:05 +0100)] 
Release Notes: Mention out-of-scope error message improvements

Summary: as implemented for #11071.

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

3 years agoMention "-XMonadFailDesugaring" in the docs
David Luposchainsky [Wed, 18 Nov 2015 22:12:47 +0000 (23:12 +0100)] 
Mention "-XMonadFailDesugaring" in the docs

Reviewers: austin, bgamari

Subscribers: thomie

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

3 years agoCorrect > to > in user's guide
Reid Barton [Wed, 18 Nov 2015 22:12:05 +0000 (23:12 +0100)] 
Correct > to > in user's guide

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agousers-guide: Move <h1> outside of <a> tag
Ben Gamari [Wed, 18 Nov 2015 16:42:46 +0000 (17:42 +0100)] 
users-guide: Move <h1> outside of <a> tag

Otherwise the header extends across the entire body, increasing the
chance that the user hits it instead of the "next" link below it.

3 years agoFix inconsistent pretty-printing of type families
Michał Sośnicki [Wed, 18 Nov 2015 15:02:53 +0000 (16:02 +0100)] 
Fix inconsistent pretty-printing of type families

After the changes, the three functions used to print type families
were identical, so they are refactored into one.

Original RHSs of data instance declarations are recreated and
printed in user error messages.

RHSs containing representation TyCons are printed in the
Coercion Axioms section in a typechecker dump.

Add vbar to the list of SDocs exported by Outputable.
Replace all text "|" docs with it.

Fixes #10839

Reviewers: goldfire, jstolarek, austin, bgamari

Reviewed By: jstolarek

Subscribers: jstolarek, thomie

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

GHC Trac Issues: #10839

3 years agoRefactor HsExpr.RecordCon, RecordUpd
Simon Peyton Jones [Wed, 18 Nov 2015 15:57:13 +0000 (15:57 +0000)] 
Refactor HsExpr.RecordCon, RecordUpd

This follows Matthew's patch making pattern synoyms work
with records.

This patch
 - replaces the (PostTc id [FieldLabel]) field of
   RecordCon with (PostTc id ConLike)

 - record-ises both RecordCon and RecordUpd, which
   both have quite a lot of fields.

No change in behaviour

3 years agoComments on TcRnTypes.canDischarge
Simon Peyton Jones [Wed, 18 Nov 2015 13:51:35 +0000 (13:51 +0000)] 
Comments on TcRnTypes.canDischarge

3 years agoComments only
Simon Peyton Jones [Mon, 9 Nov 2015 09:38:53 +0000 (09:38 +0000)] 
Comments only

3 years agousers-guide: Fix typo in conf.py
Ben Gamari [Wed, 18 Nov 2015 12:53:53 +0000 (13:53 +0100)] 
users-guide: Fix typo in conf.py

inputenv /= inputenc

3 years agousers-guide: Use tango pygments style
Ben Gamari [Wed, 18 Nov 2015 12:06:50 +0000 (13:06 +0100)] 
users-guide: Use tango pygments style

3 years agorelnotes: Update base version
Ben Gamari [Tue, 17 Nov 2015 21:04:33 +0000 (22:04 +0100)] 
relnotes: Update base version

3 years agousers-guide: Give links more contrast
Ben Gamari [Wed, 18 Nov 2015 10:22:40 +0000 (11:22 +0100)] 
users-guide: Give links more contrast

3 years agoImprove MonadFail errors by mentioning the pattern
David Luposchainsky [Wed, 18 Nov 2015 11:23:57 +0000 (12:23 +0100)] 
Improve MonadFail errors by mentioning the pattern

Example error message:

    MonadFailErrors.hs:16:5: error:
        Could not deduce (MonadFail m)
          arising from a do statement
                       with the failable pattern ‘Just x’

Depends on D1248

Reviewers: austin, bgamari

Subscribers: thomie

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

3 years agodocs: Ignore Sphinx doctrees produced by manpage build
Ben Gamari [Wed, 18 Nov 2015 11:23:25 +0000 (12:23 +0100)] 
docs: Ignore Sphinx doctrees produced by manpage build

Test Plan: Validate

Reviewers: austin

Subscribers: thomie

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

3 years agobase: Documentation for TypeError
Ben Gamari [Wed, 18 Nov 2015 11:22:58 +0000 (12:22 +0100)] 
base: Documentation for TypeError

Test Plan: Read

Reviewers: yav, hvr, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agorts: Kill PAPI support
Ben Gamari [Wed, 18 Nov 2015 11:22:02 +0000 (12:22 +0100)] 
rts: Kill PAPI support

This hasn't been used for a very long time and will soon be superceded
by perf_events support.

Test Plan: validate

Reviewers: austin, simonmar

Reviewed By: austin, simonmar

Subscribers: thomie, erikd

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

3 years agoAdd -fwarn-missing-monadfail-instance to mkUserGuidePart
Ben Gamari [Wed, 18 Nov 2015 11:20:35 +0000 (12:20 +0100)] 
Add -fwarn-missing-monadfail-instance to mkUserGuidePart

3 years agoDisable failed specialisation warnings by default & update documentation.
Ben Gamari [Wed, 18 Nov 2015 11:19:01 +0000 (12:19 +0100)] 
Disable failed specialisation warnings by default & update documentation.

These were far too noisy to enable by default. In the future we will
hopefully have a more variant of -Wall targetted at these sorts of
diagnostics.

In the interim I've pointed out the existence of these options in the
release
notes in hopes that people will discover them.

Test Plan: Validate

Reviewers: hvr, austin

Subscribers: thomie

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

3 years agoMore import related hints
Joachim Breitner [Wed, 18 Nov 2015 11:18:17 +0000 (12:18 +0100)] 
More import related hints

Now for unqualified imports. Improves upon #11071.

Unfortunately, it seems that since 7.10, ghc will not print all
out-of-scope errors.

Test Plan: test suite updated

Reviewers: austin, thomie, bgamari

Reviewed By: bgamari

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

GHC Trac Issues: #11071

3 years agoDynFlags: Don't list TemplateHaskell as supported if it's not
Ben Gamari [Wed, 18 Nov 2015 06:56:30 +0000 (07:56 +0100)] 
DynFlags: Don't list TemplateHaskell as supported if it's not

`-XTemplateHaskell` requires GHCi; don't show it in
`--supported-extensions` if it's not supported.

Together with https://github.com/haskell/cabal/issues/2644
this allows to finally fix a long-standing annoyance in cabal
of not being able to detect availability of TH in build-plans.

Fixes #11102

See also https://github.com/haskell/cabal/pull/2930 which provides
emulation of this feature for older GHCs.

Reviewed By: bgamari

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

3 years agoMonadFail proposal, phase 1
David Luposchainsky [Tue, 17 Nov 2015 16:10:02 +0000 (17:10 +0100)] 
MonadFail proposal, phase 1

This implements phase 1 of the MonadFail proposal (MFP, #10751).

- MonadFail warnings are all issued as desired, tunable with two new flags
- GHC was *not* made warning-free with `-fwarn-missing-monadfail-warnings`
  (but it's disabled by default right now)

Credits/thanks to
- Franz Thoma, whose help was crucial to implementing this
- My employer TNG Technology Consulting GmbH for partially funding us
  for this work

Reviewers: goldfire, austin, #core_libraries_committee, hvr, bgamari, fmthoma

Reviewed By: hvr, bgamari, fmthoma

Subscribers: thomie

Projects: #ghc

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

GHC Trac Issues: #10751

3 years agoImplement OverloadedLabels
Adam Gundry [Tue, 17 Nov 2015 14:50:33 +0000 (15:50 +0100)] 
Implement OverloadedLabels

See
https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/OverloadedLabels
for the big picture.

Reviewers: goldfire, simonpj, austin, hvr, bgamari

Reviewed By: simonpj, bgamari

Subscribers: kosmikus, thomie, mpickering

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

3 years agoFix archive loading on Windows by the runtime loader
Tamar Christina [Tue, 17 Nov 2015 14:35:46 +0000 (15:35 +0100)] 
Fix archive loading on Windows by the runtime loader

The runtime loader is unable to find archive files `.a` shipping
with the inplace `GCC`.

It seems the issue is caused by `findArchive` being unable to
find any archives that are shipped using the in-place `GCC`.

- It works on Linux because `findArchive` would search
  the standard Linux include path.
- It works during compilation because `GCC` can find it's own libraries
  (we explicitly tell it where to look for libraries using the `gcc`
  wrapper around `realgcc`)

So fixing the issue means using `searchForLibUsingGcc` in `findArchive`
as well, which will then find the correct file.

The reason for the error as it is, is because if we can't locate the
library using any of the methods we have, we assume it is a system dll,
or something on the system search path.  e.g. if trying to load
`kernel32.dll`.

There is a slight issue in that the `GHCi` code (incorrectly) favors
`static archives` over `dynamic` ones

```
findDll        `orElse`
findArchive    `orElse`
tryGcc         `orElse`
tryGccPrefixed `orElse`
assumeDll
```
This has the unwanted effect of when `kernel32` is specified as a lib,
it will try to load `kernel32.a` instead of `kernel32.dll`.

To solve this I have added another search function that is able to
search the Windows search paths using `SearchPath` in order to find if
it is a dll on the system search path.

The new search order is:

```
findDll     `orElse`
findSysDll  `orElse`
tryGcc      `orElse`
findArchive `orElse`
assumeDll
```

(`tryGccPrefixed` was rolled into `tryGcc` so it is no longer needed at
top level)

Test Plan: ./validate added new windows tests T3242

Reviewers: thomie, erikd, hvr, austin, bgamari

Reviewed By: thomie, erikd, bgamari

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

GHC Trac Issues: #3242

3 years agoMake `timer_create(CLOCK_REALTIME)` autoconf test more reliable
Herbert Valerio Riedel [Tue, 17 Nov 2015 14:30:56 +0000 (15:30 +0100)] 
Make `timer_create(CLOCK_REALTIME)` autoconf test more reliable

I've noticed that on a platform with a coarse timer/scheduling
granularity of 10ms this autoconf tests fails to detect a working
`timer_create(CLOCK_REALTIME)`.

On AIX, this effectively means that intervals/timers are rounded up to
multiples of 10ms, so a 13ms delay is effectively a 20ms delay.

By using a 100ms timeout we are on the safe side.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, erikd

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

3 years agoUpdate Cabal submodule for new known extension
Adam Sandberg Eriksson [Tue, 17 Nov 2015 14:29:22 +0000 (15:29 +0100)] 
Update Cabal submodule for new known extension

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agotemplate-haskell: drop `TemplateHaskell` requirement
Herbert Valerio Riedel [Tue, 17 Nov 2015 14:55:43 +0000 (15:55 +0100)] 
template-haskell: drop `TemplateHaskell` requirement

`other-extensions: TemplateHaskell` is inaccurate: It's not required
to compile `template-haskell` (otherwise we wouldn't be able to build
that package via `ghc-stage1`...)

This has been discovered while working on #11102

3 years agoRemove orphan Functor instance of Data.Graph.SCC
Ömer Sinan Ağacan [Tue, 17 Nov 2015 08:50:05 +0000 (09:50 +0100)] 
Remove orphan Functor instance of Data.Graph.SCC

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoT9181: Fix testsuite output
Ben Gamari [Tue, 17 Nov 2015 11:20:30 +0000 (06:20 -0500)] 
T9181: Fix testsuite output

I'm not really sure how this one snuck through my local validation. Hmm.

3 years agoBump process submodule
Ben Gamari [Tue, 17 Nov 2015 08:37:51 +0000 (09:37 +0100)] 
Bump process submodule

3 years agoRevert "Unify hsig and hs-boot; add preliminary "hs-boot" merging."
Edward Z. Yang [Sat, 14 Nov 2015 00:18:24 +0000 (16:18 -0800)] 
Revert "Unify hsig and hs-boot; add preliminary "hs-boot" merging."

Summary:
This reverts commit 06d46b1e4507e09eb2a7a04998a92610c8dc6277.

This also has a Haddock submodule update.

Test Plan: validate

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

3 years agoMove usage calculation to desugaring, simplifying ModGuts.
Edward Z. Yang [Fri, 13 Nov 2015 00:38:02 +0000 (16:38 -0800)] 
Move usage calculation to desugaring, simplifying ModGuts.

Summary:
(This patch was excised from the fat interfaces patch, which
has been put indefinitely on hold.)

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

Reviewers: simonpj, austin, bgamari

Subscribers: thomie

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

3 years agos/FrontendMerge/FrontendInterface/g
Edward Z. Yang [Tue, 20 Oct 2015 02:16:14 +0000 (19:16 -0700)] 
s/FrontendMerge/FrontendInterface/g

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
3 years agoImplement support for user-defined type errors.
Iavor S. Diatchki [Mon, 16 Nov 2015 16:08:14 +0000 (17:08 +0100)] 
Implement support for user-defined type errors.

Implements Lennart's idea from the Haskell Symposium.
Users may use the special type function `TypeError`, which is
similar to `error` at the value level.

See Trac ticket https://ghc.haskell.org/trac/ghc/ticket/9637, and wiki
page https://ghc.haskell.org/trac/ghc/wiki/CustomTypeErros

Test Plan: Included testcases

Reviewers: simonpj, austin, hvr, goldfire, bgamari

Reviewed By: goldfire, bgamari

Subscribers: adamgundry, thomie

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

GHC Trac Issues: #9637

3 years agoData.List.isSubsequenceOf documentation clarification
Justin Raymond [Mon, 16 Nov 2015 16:05:36 +0000 (17:05 +0100)] 
Data.List.isSubsequenceOf documentation clarification

Fixes #11083.

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11083

3 years agoWeaken monadic list operations to Applicative
Ben Gamari [Mon, 16 Nov 2015 16:02:58 +0000 (17:02 +0100)] 
Weaken monadic list operations to Applicative

Generalize `filterM`, `mapAndUnzipM`, `zipWithM`, `zipWithM_`,
`replicateM`, and `replicateM_`.

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

Reviewed By: ekmett, #core_libraries_committee, bgamari

Subscribers: ekmett, glguy, thomie

Projects: #ghc

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

GHC Trac Issues: #10168

3 years agoUse TcM instead of it's expanded form, in TcSplice
Ömer Sinan Ağacan [Mon, 16 Nov 2015 16:01:01 +0000 (17:01 +0100)] 
Use TcM instead of it's expanded form, in TcSplice

Reviewers: austin, bgamari, goldfire

Reviewed By: bgamari, goldfire

Subscribers: thomie

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

3 years agohaddock.mk: Use \{1,\} instead of \+
Ben Gamari [Mon, 16 Nov 2015 14:42:16 +0000 (16:42 +0200)] 
haddock.mk: Use \{1,\} instead of \+

This works around Mac OS X's sed, which doesn't support \+.
For the record,

    The regex implementation in Mac OS X 10.8 and later is based on a heavily
    modified subset of TRE, http://laurikari.net/tre/

3 years agoghc.mk: Make install_docs rule sh-compatible
Ben Gamari [Mon, 16 Nov 2015 14:56:12 +0000 (16:56 +0200)] 
ghc.mk: Make install_docs rule sh-compatible

3 years agoRtsFlags: Refactor some of the deeper switches
Ben Gamari [Mon, 16 Nov 2015 15:58:41 +0000 (16:58 +0100)] 
RtsFlags: Refactor some of the deeper switches

This was previously nearly impossible to read; now it's merely
difficult.

Ideally we would do a more thorough refactoring of the RTS command line
parser (#4243) but this is more effort than I have time for at the
moment.

Test Plan: Try using affected RTS flags

Reviewers: simonmar, austin

Subscribers: thomie

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

GHC Trac Issues: #4243

3 years agousers-guide: Limit column width
Ben Gamari [Mon, 16 Nov 2015 09:46:18 +0000 (10:46 +0100)] 
users-guide: Limit column width

This tends to help readability

3 years agoRtsFlags: Clean up stale CPP
Ben Gamari [Sun, 15 Nov 2015 09:55:15 +0000 (10:55 +0100)] 
RtsFlags: Clean up stale CPP

3 years agoApiAnnotations : ITopenExpQuote needs SourceText
Alan Zimmerman [Mon, 16 Nov 2015 19:10:39 +0000 (21:10 +0200)] 
ApiAnnotations : ITopenExpQuote needs SourceText

Summary:
In the lexer, ITopenExpQuote can be recognised for '[e|' or '[|'.

The token definition needs to capture the original SourceText, and pass
it through to ExpBr, which also needs a SrcText field.

It is easier to simply add a flag  to the token identifying the variant
and to generate a different AnnKeywordId based on this.

Test Plan: ./validate

Reviewers: mpickering, bgamari, austin

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10276

3 years agoApiAnnotations: Add SourceText for unicode tokens
Alan Zimmerman [Mon, 16 Nov 2015 17:43:34 +0000 (19:43 +0200)] 
ApiAnnotations: Add SourceText for unicode tokens

Summary:
At the moment there is no way to tell if a given token used its unicode
variant or its normal one, except to look at the length of the token.

This fails for the unicode '*'.

Expose the original source text for unicode variants so that API
Annotations can capture them specifically.

Test Plan: ./validate

Reviewers: mpickering, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11018

3 years agoImplement the Strict language extension
Adam Sandberg Eriksson [Sat, 14 Nov 2015 21:06:16 +0000 (22:06 +0100)] 
Implement the Strict language extension

Add a new language extension `-XStrict` which turns all bindings strict
as if the programmer had written a `!` before it. This also upgrades
ordinary Haskell to allow recursive and polymorphic strict bindings.

See the wiki[1] and the Note [Desugar Strict binds] in DsBinds for
specification and implementation details.

[1] https://ghc.haskell.org/trac/ghc/wiki/StrictPragma

Reviewers: austin, tibbe, simonpj, bgamari

Reviewed By: tibbe, bgamari

Subscribers: thomie

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

GHC Trac Issues: #8347

3 years agoFix bootstrapping with GHC 7.10.1
Ben Gamari [Sat, 14 Nov 2015 20:17:27 +0000 (21:17 +0100)] 
Fix bootstrapping with GHC 7.10.1

Relying on CallStack being in GLASGOW_HASKELL >= 710 breaks
bootstrappability with 7.10.1

7.10.2 added the CallStack mechanism, and GHC already relies on this
while being built. Unfortunately, it is enabled with "GLASGOW_HASKELL
>= 710", which also applies to GHC 7.10.1, which does not have
CallStack, and fails building the stage-1 compiler because the symbol
is not found.

This patch makes the CPP directive more strict, requiring **more than**
7.10 instead of **at least**.

Reviewers: jstolarek, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11085

3 years agoRip out __HADDOCK__ references
Ben Gamari [Thu, 12 Nov 2015 19:35:47 +0000 (20:35 +0100)] 
Rip out __HADDOCK__ references

As it turns out no one actually sets this macro anyways and haddock
now clearly has no trouble parsing this code.

Test Plan: Validate

Reviewers: hvr, goldfire, austin

Reviewed By: austin

Subscribers: duncan, thomie, hvr

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

3 years agoMake 'error' include the CCS call stack when profiled
Simon Marlow [Tue, 3 Nov 2015 14:06:09 +0000 (14:06 +0000)] 
Make 'error' include the CCS call stack when profiled

Summary:
The idea here is that this gives a more detailed stack trace in two
cases:

1. With `-prof` and `-fprof-auto`
2. In GHCi (see #11047)

Example, with an error inserted in nofib/shootout/binary-trees:

```
$ ./Main 3
Main: z
CallStack (from ImplicitParams):
  error, called at Main.hs:67:29 in main:Main
CallStack (from -prof):
  Main.check' (Main.hs:(67,1)-(68,82))
  Main.check (Main.hs:63:1-21)
  Main.stretch (Main.hs:32:35-57)
  Main.main.c (Main.hs:32:9-57)
  Main.main (Main.hs:(27,1)-(43,42))
  Main.CAF (<entire-module>)
```

This doesn't quite obsolete +RTS -xc, which also attempts to display
more information in the case when the error is in a CAF, but I'm
exploring other solutions to that.

Includes submodule updates.

Test Plan: validate

Reviewers: simonpj, ezyang, gridaphobe, bgamari, hvr, austin

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoUpdate note for Parent to explain PatternSynonym.
Matthew Pickering [Fri, 13 Nov 2015 10:10:52 +0000 (10:10 +0000)] 
Update note for Parent to explain PatternSynonym.

3 years agoRemove imv_empty from ImportedModsVal
Joachim Breitner [Wed, 11 Nov 2015 11:58:40 +0000 (12:58 +0100)] 
Remove imv_empty from ImportedModsVal

it seems that this field is never used.

3 years agoTurn ImportedModsVal into a data type
Joachim Breitner [Wed, 11 Nov 2015 11:55:22 +0000 (12:55 +0100)] 
Turn ImportedModsVal into a data type

it was a 4-tuple before my patch, and a 6-tuple afterwards. Clearly a
record type is in order here!

3 years agoGive helpful advice when a fully qualified name is not in scope
Joachim Breitner [Tue, 10 Nov 2015 16:07:10 +0000 (17:07 +0100)] 
Give helpful advice when a fully qualified name is not in scope

This implements #11071. It needs to thread through a GlobalRdrEnv
corresponding to the export list of the module if its exports were not
restricted.

A refactoring of ImportedModsVal into a proper data type follows.

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

3 years agoAPIAnnotations:add Locations in hsSyn for layout
Alan Zimmerman [Fri, 13 Nov 2015 06:39:07 +0000 (08:39 +0200)] 
APIAnnotations:add Locations in hsSyn for layout

Summary:
At the moment ghc-exactprint, which uses the GHC API Annotations to
provide a framework for roundtripping Haskell source code with optional
AST edits, has to implement a horrible workaround to manage the points
where layout needs to be captured.

These are

    MatchGroup
    HsDo
    HsCmdDo
    HsLet
    LetStmt
    HsCmdLet
    GRHSs

To provide a more natural representation, the contents subject to layout
rules need to be wrapped in a SrcSpan.

This commit does this.

Trac ticket #10250

Test Plan: ./validate

Reviewers: hvr, goldfire, bgamari, austin, mpickering

Reviewed By: mpickering

Subscribers: thomie, mpickering

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

GHC Trac Issues: #10250

3 years agoIgnore comments in getOptions
Matthew Pickering [Thu, 12 Nov 2015 19:33:39 +0000 (20:33 +0100)] 
Ignore comments in getOptions

When Opt_KeepRawTokenStream is turned on then getOptions fails to find
the language pragmas which can cause unexpected parse errors when using
the GHC API. A simple solution is to make it skip over any comments in
the token
stream.

Test Plan: ./validate

Reviewers: austin, bgamari

Subscribers: alanz, thomie

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

GHC Trac Issues: #10942

3 years agoT10678: Fix bytes allocated statistic
Ben Gamari [Thu, 12 Nov 2015 16:06:08 +0000 (17:06 +0100)] 
T10678: Fix bytes allocated statistic

3 years agoNew magic function for applying realWorld#
Ben Gamari [Thu, 12 Nov 2015 13:52:11 +0000 (14:52 +0100)] 
New magic function for applying realWorld#

Test Plan: validate

Reviewers: goldfire, erikd, rwbarton, simonpj, austin, simonmar, hvr

Reviewed By: simonpj

Subscribers: simonmar, thomie

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

GHC Trac Issues: #10678

3 years agorules/haddock: Set __HADDOCK_VERSION__
Ben Gamari [Thu, 12 Nov 2015 10:15:34 +0000 (11:15 +0100)] 
rules/haddock: Set __HADDOCK_VERSION__

Test Plan: Validate

Reviewers: austin, thomie

Reviewed By: thomie

Subscribers: kgardas, thomie

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

3 years agoChange demand information for foreign calls
Luite Stegeman [Thu, 12 Nov 2015 10:13:54 +0000 (11:13 +0100)] 
Change demand information for foreign calls

Foreign calls may not be strict for lifted arguments. Fixes Trac #11076.

Test Plan: ./validate

Reviewers: simonpj, bgamari, austin

Subscribers: thomie

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

GHC Trac Issues: #11076

3 years agoImplement function-sections for Haskell code, #8405
Simon Brenner [Thu, 12 Nov 2015 10:10:54 +0000 (11:10 +0100)] 
Implement function-sections for Haskell code, #8405

This adds a flag -split-sections that does similar things to
-split-objs, but using sections in single object files instead of
relying on the Satanic Splitter and other abominations. This is very
similar to the GCC flags -ffunction-sections and -fdata-sections.

The --gc-sections linker flag, which allows unused sections to actually
be removed, is added to all link commands (if the linker supports it) so
that space savings from having base compiled with sections can be
realized.

Supported both in LLVM and the native code-gen, in theory for all
architectures, but really tested on x86 only.

In the GHC build, a new SplitSections variable enables -split-sections
for relevant parts of the build.

Test Plan: validate with both settings of SplitSections

Reviewers: dterei, Phyx, austin, simonmar, thomie, bgamari

Reviewed By: simonmar, thomie, bgamari

Subscribers: hsyl20, erikd, kgardas, thomie

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

GHC Trac Issues: #8405

3 years agofix RTS Linker on platforms without SHN_XINDEX support
Karel Gardas [Wed, 11 Nov 2015 21:21:50 +0000 (22:21 +0100)] 
fix RTS Linker on platforms without SHN_XINDEX support

Summary:
This patch fixes RTS Linker compilation issues on platforms
where SHN_XINDEX is not defined. Tested on OpenBSD. When SHN_XINDEX
is not defined, the code reverts to the old behavior, that means
behavior of the Linker before D1357 which added SHN_XINDEX based
functionality.

Reviewers: bgamari, austin, erikd

Subscribers: thomie

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

3 years agoRemove redundant test.
Matthew Pickering [Wed, 11 Nov 2015 15:44:56 +0000 (15:44 +0000)] 
Remove redundant test.

ExportSyntaxImport will fail if this test would have ever failed.

3 years agoRename bundled pattern synonym tests to reflect new terminology
Matthew Pickering [Wed, 11 Nov 2015 15:37:43 +0000 (15:37 +0000)] 
Rename bundled pattern synonym tests to reflect new terminology

This also fixes a bug which causes intermittent test failures due to
interdependent tests.

3 years agomkGadtDecl no longer in P monad
Jan Stolarek [Wed, 11 Nov 2015 12:28:01 +0000 (13:28 +0100)] 
mkGadtDecl no longer in P monad

Since `mkGadtDecl` does not use any of the functions specific to the `P`
monad we can extract it from that monad and reuse in other parts of the
compiler.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie, mpickering

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

3 years agonativeGen.PPC: Fix shift arith. right > 31 bits
Peter Trommler [Wed, 11 Nov 2015 11:32:19 +0000 (12:32 +0100)] 
nativeGen.PPC: Fix shift arith. right > 31 bits

Arithmetic right shifts of more than 31 bits set all bits to
the sign bit on PowerPC. iThe assembler does not allow shift
amounts larger than 32 so do an arithemetic right shift of 31
bit instead.

Fixes #10870

Test Plan: validate (especially on powerpc)

Reviewers: austin, erikd, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10870

3 years agoDetect invalid foreign imports in bytecode compiler
Sylvain HENRY [Wed, 11 Nov 2015 11:32:08 +0000 (12:32 +0100)] 
Detect invalid foreign imports in bytecode compiler

The bytecode compiler doesn't handle every foreign import calling
convention. Instead of crashing during the generation of the foreign
call, we display an error.

Fix lint warnings

Test Plan: prog014 ghci test added

Reviewers: austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #10462

3 years agoPut kind variables before type variables when specializing
Bartosz Nitka [Wed, 11 Nov 2015 11:31:55 +0000 (12:31 +0100)] 
Put kind variables before type variables when specializing

When you reverse the order of uniques you get the core lint
error from the testcase. The testcase is copied from
tests/simplCore/should_compile/T10689a.hs.

The problem is that we would put type and kind variables ordered by
unique order, which happened to be the right order for this testcase to
pass under normal conditions.

I think it's enough to sort them with `sortQuantVars`, but I'm not
really sure if some more sophisticated dependency analysis isn't needed.

Test Plan: added a new testcase

Reviewers: simonpj, goldfire, simonmar, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoImprove documentation of Data.List.lines:
Eric Mertens [Wed, 11 Nov 2015 11:31:45 +0000 (12:31 +0100)] 
Improve documentation of Data.List.lines:

- Document behavior on some inputs.
- Add some examples.

Reviewers: bgamari, osa1, hvr, dolio, #core_libraries_committee,
nomeata, austin

Reviewed By: bgamari, dolio, #core_libraries_committee, nomeata, austin

Subscribers: dolio, glguy, nomeata, thomie

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

3 years agoSystools: read ELF section without calling readelf
Sylvain HENRY [Wed, 11 Nov 2015 11:31:31 +0000 (12:31 +0100)] 
Systools: read ELF section without calling readelf

This patch tackles two issues:

1) GHC stores a "link info" string into a ELF section. Initially a
section with type "note" was used but GHC didn't follow the ELF
specification which specifies a record-based format for these sections.
With D1375 we switched to a "progbits" section type for which there
isn't any format constraint. This is an issue for D1242 which use GCC's
--gc-sections which collects "unused" sections, such as our section
containing link info... In this patch, we fall back to a section with
type "note" but we respect the specified format.

2) Reading back the ELF section was done by parsing the result of a
call to "readelf". Calling readelf is problematic because the program
may not be available or it may be renamed on some platforms (see
D1326). Moreover we have no garanty that its output layout will stay
the same in future releases of readelf. Finally we would need to fix
the parsing to support  "note" sections because of 1. Instead, this
patch proposes to use Data.Binary.Get to directly read the "link info"
note into its section. ELF has a specification, hence it should work on
every conforming platform.

This patch "reverts" D1375, hence it supersedes D1432. It makes D1326
not necessary anymore.

Test Plan:
- recomp011 should pass (test that relinking is avoided when both "link
info" match)
- we should add a test for ELF objects with more than 0xff00 sections
=> added test "recomp015"
- we should check that GAS generates 32-bit words with .int on every
supported platform using ELF (or find a place where this is
documented). harbomaster and I (@hsyl20) only tested on x86-64. On
platforms where it is not true, it should make recomp011 fail. =>
tested to work on Linux/amd64, Solaris/i386 and OpenBSD/amd64

Reviewers: olsner, ony, thomie, kgardas, austin, bgamari

Reviewed By: thomie, bgamari

Subscribers: kgardas, rwbarton, thomie

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

GHC Trac Issues: #10974, #11022

3 years agoRemove fun_infix from Funbind, as it is now in Match
Alan Zimmerman [Wed, 11 Nov 2015 11:03:18 +0000 (12:03 +0100)] 
Remove fun_infix from Funbind, as it is now in Match

One of the changes D538 introduced is to add `m_fun_id_infix` to `Match`

```lang=hs
data Match id body
  = Match {
        m_fun_id_infix :: (Maybe (Located id,Bool)),
          -- fun_id and fun_infix for functions with multiple equations
          -- only present for a RdrName. See note [fun_id in Match]
        m_pats :: [LPat id], -- The patterns
        m_type :: (Maybe (LHsType id)),
                                 -- A type signature for the result of the match
                                 -- Nothing after typechecking
        m_grhss :: (GRHSs id body)
  } deriving (Typeable)
```

This was done to track the individual locations and fixity of the
`fun_id` for each of the defining equations for a function when there
are more than one.

For example, the function `(&&&)` is defined with some prefix and some
infix equations below.

```lang=hs
    (&&&  ) [] [] =  []
    xs    &&&   [] =  xs
    (  &&&  ) [] ys =  ys
```

This means that the fun_infix is now superfluous in the `FunBind`. This
has not been removed as a potentially risky change just before 7.10 RC2,
and so must be done after.

This ticket captures that task, which includes processing these fields
through the renamer and beyond.

Ticket #9988 introduced these fields into `Match` through renaming, this
ticket it to continue through type checking and then remove it from
`FunBind` completely.

The split happened so that #9988 could land in 7.10

Trac ticket : #10061

Test Plan: ./validate

Reviewers: goldfire, austin, simonpj, bgamari

Reviewed By: bgamari

Subscribers: simonpj, thomie, mpickering

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

GHC Trac Issues: #10061

3 years agoRemove unused field in ConDecl
Jan Stolarek [Wed, 11 Nov 2015 10:34:48 +0000 (11:34 +0100)] 
Remove unused field in ConDecl

We no longer parse old-style GADT syntax but there was some left-over
code for emitting deprecation warnings.

Updates haddock submodule.

Test Plan: ./validate

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoOPTIONS_GHC compiler flags may contain spaces (#4931)
Thomas Miedema [Wed, 11 Nov 2015 10:05:16 +0000 (11:05 +0100)] 
OPTIONS_GHC compiler flags may contain spaces (#4931)

When a .hsc contains `#define FOO "bar baz"`, hsc2hs emits:

    {-# OPTIONS_GHC -optc-DFOO="bar baz" #-}

Make sure GHC can compile this, by tweaking `HeaderInfo.getOptions` a
bit.

Test Plan: driver/T4931

Reviewers: austin, bgamari

Reviewed By: bgamari

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

GHC Trac Issues: #4931

3 years agoFix link in documentation
Siddhanathan Shanmugam [Wed, 11 Nov 2015 09:55:33 +0000 (10:55 +0100)] 
Fix link in documentation

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: mpickering, thomie

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

3 years agoAssociate pattern synonyms with types in module exports
Matthew Pickering [Wed, 11 Nov 2015 09:49:44 +0000 (10:49 +0100)] 
Associate pattern synonyms with types in module exports

This patch implements #10653.

It adds the ability to bundle pattern synonyms with type constructors in
export lists so that users can treat pattern synonyms more like data
constructors.

Updates haddock submodule.

Test Plan: ./validate

Reviewers: goldfire, austin, bgamari

Reviewed By: bgamari

Subscribers: simonpj, gridaphobe, thomie

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

GHC Trac Issues: #10653

3 years agoAbstract TFs can have injectivity information
Jan Stolarek [Mon, 9 Nov 2015 14:44:47 +0000 (15:44 +0100)] 
Abstract TFs can have injectivity information

Summary:
For abstract type families we incorrectly rejected their injectivity
annotation.  Fixes #11007.

Test Plan: #6018

Reviewers: goldfire, austin, bgamari

Subscribers: thomie

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

GHC Trac Issues: #11007

3 years agoFix sporadic failing ghci/Linker/Dyn tests
Tamar Christina [Sun, 8 Nov 2015 13:21:30 +0000 (14:21 +0100)] 
Fix sporadic failing ghci/Linker/Dyn tests

Summary:
Multiple tests use the same source C file.
GHC was previously writing the resulting .o files
in the same folder as the source. When these tests
are run in parallel, sometimes one of the calls would
use the partial .o file and throw an error.

The .o files are moved into different folders with this
change.

Test Plan: make test -C testsuite/tests/ghci/linking/dyn

Reviewers: thomie, austin, bgamari

Reviewed By: bgamari

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

3 years agoAdd OpenBSD specific RTS symbols
Karel Gardas [Sat, 7 Nov 2015 23:21:36 +0000 (00:21 +0100)] 
Add OpenBSD specific RTS symbols

This patch adds OpenBSD specific RTS symbols.  The patch is taken from
the OpenBSD ports tree, provided by the OpenBSD community.

Reviewers: austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

3 years agoQuote file paths in linker scripts
Ben Gamari [Sat, 7 Nov 2015 23:21:19 +0000 (00:21 +0100)] 
Quote file paths in linker scripts

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

GHC Trac Issues: #11063

3 years agoAdd pprSTrace for debugging with call stacks
Bartosz Nitka [Sat, 7 Nov 2015 23:21:11 +0000 (00:21 +0100)] 
Add pprSTrace for debugging with call stacks

I've spent quite a bit of time giving unique labels to my `pprTrace`
calls and then trying to intuit where the function is called from.
Thanks to the new implicit parameter CallStack functionality I don't
have to do that anymore.

Test Plan: harbormaster

Reviewers: austin, simonmar, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

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

3 years agoReplace freeVarsOf scrut with scrut_fvs to avoid repetition
Bartosz Nitka [Sat, 7 Nov 2015 23:20:34 +0000 (00:20 +0100)] 
Replace freeVarsOf scrut with scrut_fvs to avoid repetition

Test Plan: harbormaster

Reviewers: bgamari, simonmar, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agominor: use unless instead of (when . not)
Ömer Sinan Ağacan [Sat, 7 Nov 2015 23:20:26 +0000 (00:20 +0100)] 
minor: use unless instead of (when . not)

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: thomie

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

3 years agoParser: allow empty multi-line deprecation warnings
Thomas Miedema [Sat, 7 Nov 2015 23:20:15 +0000 (00:20 +0100)] 
Parser: allow empty multi-line deprecation warnings

This should work,

    {-# DEPRECATED someFunction [] #-}

Test Plan: parser/should_compile/T3303

Reviewers: bgamari, austin

Reviewed By: austin

Subscribers: mpickering

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

GHC Trac Issues: #11044