summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Add the bootstrapping/ dir to .gitignoreRyan Scott2017-08-021-0/+1
| | | | | | | | | | Summary: This is generated when building `ghc-cabal`. Reviewers: hvr, bgamari, austin Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3813
* Remove unneeded uses of ImplicitParamsRyan Scott2017-08-024-4/+1
| | | | | | | | | | | | | | Summary: Finish the work started in 7d1909ad110f05c8cb2fb0689ee75857ceb945f6. Test Plan: If it builds, ship it Reviewers: austin, bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3812
* Get the roles right for newtype instancesSimon Peyton Jones2017-08-024-3/+21
| | | | | | This was a simple slip, that gave rise to the bug reported in comment:13 of Trac #14045. We were supplying roles to mkAlgTyCon that didn't match the tyvars.
* Add .gitmodules entries for text, parsec, mtl submodulesBen Gamari2017-08-011-0/+12
|
* Bump unix submoduleBen Gamari2017-08-011-0/+0
|
* Enable building Cabal with parsecHerbert Valerio Riedel2017-08-019-7/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Cabal's parser has been rewritten in terms of Parsec (which is not enabled yet in Cabal-2.0 by default, but can be enabled by a cabal flag). The plan for Cabal is to drop support for the non-parsec parser, so we need to prepare GHC to cope with new situation. However, this means that lib:Cabal requires three new library dependency submodules, - parsec - text - mtl What complicates matters is that we need to build `ghc-cabal` early on during the bootstrap phase which currently needs to invoke `ghc --make` directly. So these additional dependencies need to be integrated into the monolithic `ghc --make` invocation which produces the `ghc-cabal` executable. Test Plan: `./validate --fast` passed Reviewers: austin, bgamari Subscribers: erikd, phadej, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3757
* Drop GHC 7.10 compatibilityRyan Scott2017-08-0135-242/+21
| | | | | | | | | | | | | | | | GHC 8.2.1 is out, so now GHC's support window only extends back to GHC 8.0. This means we can delete gobs of code that was only used for GHC 7.10 support. Hooray! Test Plan: ./validate Reviewers: hvr, bgamari, austin, goldfire, simonmar Reviewed By: bgamari Subscribers: Phyx, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3781
* Simplify OccurAnal.tagRecBindersJoachim Breitner2017-08-011-6/+3
| | | | | | | No need to mark the binders with markNonTailCalled, as they already have been marked as such in rhs_udss' via adjust. Differential Revision: https://phabricator.haskell.org/D3810
* rts: Fix "variable set but not used" warningBen Gamari2017-08-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | gcc complains about this while building with Hadrian, ``` rts/RetainerProfile.c: In function ‘computeRetainerSet’: rts/RetainerProfile.c:1758:18: error: error: variable ‘rtl’ set but not used [-Werror=unused-but-set-variable] RetainerSet *rtl; ^~~ | 1758 | RetainerSet *rtl; | ^ ``` Reviewers: austin, erikd, simonmar, Phyx Reviewed By: Phyx Subscribers: Phyx, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3801
* Allow bundling pattern synonyms with exported data familiesRyan Scott2017-08-014-0/+34
| | | | | | | | | | | | | | Test Plan: make test TEST=T14058 Reviewers: mpickering, austin, bgamari, simonpj Reviewed By: simonpj Subscribers: simonpj, rwbarton, thomie GHC Trac Issues: #14058 Differential Revision: https://phabricator.haskell.org/D3808
* KnownUniques: Handle DataCon wrapper namesBen Gamari2017-08-014-3/+23
| | | | | | | | | | | | | | | | | For some reason these weren't handled. I seem to remember thinking I had a reason for omitting them when writing the original patch, but I don't recall what that reason was at this point and clearly workers do show up in interface files. Test Plan: Validate against T14051 Reviewers: austin Subscribers: rwbarton, thomie, RyanGlScott GHC Trac Issues: #14051 Differential Revision: https://phabricator.haskell.org/D3805
* Typofixes [ci skip]Gabor Greif2017-08-015-5/+5
|
* A bunch of typofixesGabor Greif2017-07-3113-13/+13
|
* Use field names for all uses of datacon MatchSimon Peyton Jones2017-07-3112-34/+42
| | | | | | | This is refactoring only... elimiante all positional uses of the data constructor Match in favour of field names. No change in behaviour.
* Remove redundant goopSimon Peyton Jones2017-07-311-7/+2
| | | | See comment:22 in Trac #13594
* Reject top-level banged bindingsSimon Peyton Jones2017-07-315-16/+19
| | | | | | | | | | | | | | | Bizarrely, we were not rejecting !x = e Fix: * In the test in DsBinds.dsTopLHsBinds, use isBangedHsBind, not isBangedPatBind. (Indeed the latter dies altogther.) * Implement isBangedHsBind in HsUtils; be sure to handle AbsBinds All this was shown up by Trac #13594
* Do a bit more CSESimon Peyton Jones2017-07-311-1/+1
| | | | | | | | I discovered that in let x = MkT y in ....(MKT y |> co).... we weren't CSE'ing the (MkT y). The fix is easy.
* Improve the desugaring of -XStrictSimon Peyton Jones2017-07-3114-325/+250
| | | | | | | | | | | | | | | | | | | | | | | Trac #14035 showed that -XStrict was generating some TERRIBLE desugarings, espcially for bindings with INLINE pragmas. Reason: with -XStrict, all AbsBinds (even for non-recursive functions) went via the general-case deguaring for AbsBinds, namely "generate a tuple and select from it", even though in this case there was only one variable in the tuple. And that in turn interacts terribly badly with INLINE pragmas. This patch cleans things up: * I killed off AbsBindsSig completely, in favour of a boolean flag abs_sig in AbsBinds. See Note [The abs_sig field of AbsBinds] This allowed me to delete lots of code; and instance-method declarations can enjoy the benefits too. (They could have before, but no one had changed them to use AbsBindsSig.) * I refactored all the AbsBinds handling in DsBinds into a new function DsBinds.dsAbsBinds. This allowed me to handle the strict case uniformly
* Refactoring around FunRhsSimon Peyton Jones2017-07-317-32/+45
| | | | | * Clarify the comments around the mc_strictness field of FunRhs * Use record field names consistently for FunRhs
* Clarify comment about data family aritiesRichard Eisenberg2017-07-311-0/+5
| | | | | | as requested in #14045. [skip ci] comments only
* Allow Windows to set blank environment variablesHabib Alamin2017-07-317-5/+253
| | | | | | | | | | | | | | Test Plan: ./validate on harbormaster Reviewers: austin, hvr, bgamari, erikd, Phyx Reviewed By: Phyx Subscribers: Phyx, rwbarton, thomie GHC Trac Issues: #12494 Differential Revision: https://phabricator.haskell.org/D3726
* Add haddock markupGabor Greif2017-07-301-1/+1
|
* Typofixes [ci skip]Gabor Greif2017-07-303-6/+6
|
* Follow-up to #13887, for promoted infix constructorsRyan Scott2017-07-296-6/+24
| | | | | | | | | | | | | | | | Summary: Correct a couple more spots in the TH pretty-printer by applying the appropriate parenthesization for infix names. Fixes #13887 (again). Test Plan: make test TEST=T13887 Reviewers: austin, bgamari Subscribers: rwbarton, thomie GHC Trac Issues: #13887 Differential Revision: https://phabricator.haskell.org/D3802
* Add regression test for #14055Ryan Scott2017-07-293-0/+13
|
* Fix #14045 by omitting an unnecessary checkRichard Eisenberg2017-07-2914-67/+116
| | | | | | | | | | | | | | | | | | | | | | | Previously, we checked the number of patterns in a data instances for all data families whose kind did not end in a kind variable. But, of course, undersaturating instances can happen even without the kind ending in a kind variable. So I've omitted the arity check. Data families aren't as particular about their arity as type families are (because data families can be undersaturated). Still, this change degrades error messages when instances don't have the right arity; now, instead of reporting a simple mismatch in the number of patterns, GHC reports kind errors. The new errors are fully accurate, but perhaps not as easy to work with. Still, with the new flexibility of allowing data family instances with varying numbers of patterns, I don't see a better way. This commit also improves source fidelity in some error messages, requiring more changes than really are necessary. But without these changes, error messages around mismatched associated instance heads were poor. test cases: indexed-types/should_compile/T14045, indexed-types/should_fail/T14045a
* Add '<&>' operator to Data.Functor. '<&>' calls '<$>' with flipped arguments.Sven Tennie2017-07-295-0/+83
| | | | | | | | | | | | | | | | | | | | | This was proposed by David Feuer (https://mail.haskell.org/pipermail/libraries/2016-August/027293.html) and solves #14029. The implementation is a copy of the '<&>' operator in Control.Lens.Lens. Add tests for following Data.Functor operators: '<$>', '<&>', '<$' and '$>'. '<&>' was added for solving #14029. '<$>', '<$' and '$>' were probably untested. Reviewers: austin, hvr, bgamari, RyanGlScott Reviewed By: RyanGlScott Subscribers: RyanGlScott, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3800
* Ensure that GHC.Stack.callStack doesn't failBen Gamari2017-07-282-1/+10
| | | | | | | | | | | | | | | Test Plan: Validate, ensure the `f7` program of `IPLocation` doesn't crash. Reviewers: gridaphobe, austin, hvr Reviewed By: gridaphobe Subscribers: rwbarton, thomie GHC Trac Issues: #14028 Differential Revision: https://phabricator.haskell.org/D3795
* Add rtsopts ignore and ignoreAll.Andreas Klebinger2017-07-2817-28/+129
| | | | | | | | | | | | | | | | | | | | | These ignore commandline arguments for ignore and commandline as well as GHCRTS arguments for ignoreAll. Passing RTS flags given on the command line along to the program by simply skipping processing of these flags by the RTS. This fixes #12870. Test Plan: ./validate Reviewers: austin, hvr, bgamari, erikd, simonmar Reviewed By: simonmar Subscribers: Phyx, rwbarton, thomie GHC Trac Issues: #12870 Differential Revision: https://phabricator.haskell.org/D3740
* Fix hs-boot knot-tying with record wild cards.Edward Z. Yang2017-07-287-1/+31
| | | | | | | | | | | | | | | | | | Fixes #13710. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: bgamari, austin, simonpj Reviewed By: simonpj Subscribers: simonpj, rwbarton, thomie GHC Trac Issues: #13710 Differential Revision: https://phabricator.haskell.org/D3743
* Remove unnecessary GHC option from SrcLocSven Tennie2017-07-281-4/+0
| | | | | | | | | | | | This was an old workaround for #5252. Fixes #13173. Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3763
* testsuite: Don't pass allow_abbrevBen Gamari2017-07-281-2/+1
| | | | | | | | | | | | | This is only supported by Python 3.5 and later, which is too new for us to rely on. Reviewers: austin Subscribers: rwbarton, thomie, RyanGlScott GHC Trac Issues: #14050 Differential Revision: https://phabricator.haskell.org/D3803
* Ensure that we always link against libmBen Gamari2017-07-282-0/+15
| | | | | | | | | | | | | | | ld.gold is particularly picky that we declare all of our link dependencies on Nix. See #14022. Test Plan: Validate on Nix Reviewers: austin Subscribers: hvr, rwbarton, thomie GHC Trac Issues: #14022 Differential Revision: https://phabricator.haskell.org/D3787
* configure: Ensure that user's LD setting is respectedBen Gamari2017-07-281-0/+1
| | | | This broke in the fix for #13541.
* gitmodules: Delete entry for dead hoopl submoduleBen Gamari2017-07-281-4/+0
|
* Fix lld detection if both gold and lld are foundBen Gamari2017-07-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If you have ld.gold and ld.lld, then ld.gold will be selected by the detection logic. This patch prioritizes lld by changing the order. The rationale for checking lld first is that it's (right now) not part of, say, a default Linux distro installation and if it's available, it's very likely that it was installed explicitly and should be seen as a sign of preference. On FreeBSD LLVM is the (default) base toolchain and the changed order makes sense there as well, since ld.gold can be available in /usr/local via ports/pkg. I don't have access to macOS and can't say anything about their LLVM toolchain. At some point we could add a check for LD=ld.lld or LD=ld.gold as an optional override to explicitly select a linker. Since I cannot really remove gcc on Linux, this was the only way to configure GHC to use ld.lld. Reviewers: austin, hvr, bgamari Reviewed By: bgamari Subscribers: rwbarton, thomie, erikd Tags: PHID-PROJ-5azim3sqhsf7wzvlvaag Differential Revision: https://phabricator.haskell.org/D3790
* ByteCodeGen: use byte indexing for BCenvMichal Terepeta2017-07-281-184/+283
| | | | | | | | | | | | | | | | | | | | | | | | | This is another change needed for #13825 (also based on D38 by Simon Marlow). With the change, we count the stack depth in bytes (instead of words). We also introduce some `newtype`s to help with the change. Note that this only changes how `ByteCodeGen` works and shouldn't affect the generated bytecode. Signed-off-by: Michal Terepeta <michal.terepeta@gmail.com> Test Plan: ./validate Reviewers: bgamari, simonmar, austin, hvr Reviewed By: bgamari, simonmar Subscribers: rwbarton, thomie GHC Trac Issues: #13825 Differential Revision: https://phabricator.haskell.org/D3746
* Add “BINARY_DIST_DIR” to MakefileMoritz Angermann2017-07-281-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | This allows to customize the location where binary distributions are placed with `make binary-dist`. E.g. using: ``` BINARY_DIST_DIR=/path/to/bindists make binary-dist ``` will place binary dists outside of the source tree into the given folder. This change falls back to ".", which is the old behaviour. Test Plan: build binary-dist Reviewers: bgamari, austin Reviewed By: bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3798
* testsuite: Add test for #14028Ben Gamari2017-07-285-0/+27
| | | | | | | | | | Reviewers: austin Subscribers: rwbarton, thomie GHC Trac Issues: #14028 Differential Revision: https://phabricator.haskell.org/D3788
* testsuite: Produce JUnit outputBen Gamari2017-07-287-0/+52
| | | | | | | | | | | | Test Plan: Validate, try ingesting into Jenkins. Reviewers: austin Subscribers: rwbarton, thomie GHC Trac Issues: #13716 Differential Revision: https://phabricator.haskell.org/D3796
* Switched out optparse for argparse in runtests.pyJared Weakly2017-07-282-80/+60
| | | | | | | | | | | | Tangentially related to my prior work on trac ticket #12758. Signed-off-by: Jared Weakly <jweakly@pdx.edu> Reviewers: austin, bgamari Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3792
* Add regression tests for #13601, #13780, #13877Ryan Scott2017-07-2811-0/+212
| | | | | | | | | | | | | | | | | | | | | | Summary: Some recent commits happened to fix other issues: * c2417b87ff59c92fbfa8eceeff2a0d6152b11a47 fixed #13601 and #13780 * 8e15e3d370e9c253ae0dbb330e25b72cb00cdb76 fixed the original program in #13877 Let's add regression tests for each of these to ensure they stay fixed. Test Plan: make test TEST="T13601 T13780a T13780c T13877" Reviewers: goldfire, bgamari, austin Reviewed By: bgamari Subscribers: rwbarton, thomie GHC Trac Issues: #13601, #13780, #13877 Differential Revision: https://phabricator.haskell.org/D3794
* Merge types and kinds in DsMetaRyan Scott2017-07-2811-988/+1117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Types and kinds are now the same in GHC... well, except in the code that involves Template Haskell, where types and kinds are given separate treatment. This aims to unify that treatment in the `DsMeta` module. The gist of this patch is replacing all uses of `repLKind` with `repLTy`. This is isn't quite as simple as one might imagine, since `repLTy` returns a `Core (Q Type)` (a monadic expression), whereas `repLKind` returns a `Core Kind` (a pure expression). This causes many awkward impedance mismatches. One option would be to change every combinator in `Language.Haskell.TH.Lib` to take `KindQ` as an argument instead of `Kind`. But this would be a breaking change of colossal proportions. Instead, this patch takes a somewhat different approach. This migrates the existing `Language.Haskell.TH.Lib` module to `Language.Haskell.TH.Lib.Internal`, and changes all `Kind`-related combinators in `Language.Haskell.TH.Lib.Internal` to live in `Q`. The new `Language.Haskell.TH.Lib` module then re-exports most of `Language.Haskell.TH.Lib.Internal` with the exception of the `Kind`-related combinators, for which it redefines them to be their current definitions (which don't live in `Q`). This allows us to retain backwards compatibility with previous `template-haskell` releases, but more importantly, it allows GHC to make as many changes to the `Internal` code as it wants for its purposes without fear of disrupting the public API. This solves half of #11785 (the other half being `TcSplice`). Test Plan: ./validate Reviewers: goldfire, austin, bgamari Reviewed By: goldfire Subscribers: rwbarton, thomie GHC Trac Issues: #11785 Differential Revision: https://phabricator.haskell.org/D3751
* Error eagerly after renaming failures in reifyInstancesRyan Scott2017-07-284-1/+26
| | | | | | | | | | | | | | | | | | | | Summary: Previously, if `reifyInstances` failed to discover a `Name` during renaming, it would blindy charge into typechecking, at which point GHC would become very confused at the absence of that `Name` and throw an internal error. A simple workaround is to fail eagerly after renaming errors. Test Plan: make test TEST=T13837 Reviewers: goldfire, austin, bgamari, simonpj Reviewed By: simonpj Subscribers: simonpj, rwbarton, thomie GHC Trac Issues: #13837 Differential Revision: https://phabricator.haskell.org/D3793
* Add DebugCallStack to piResultTySimon Peyton Jones2017-07-282-2/+2
| | | | | This was provoked by an ASSERT failure when debugging #14038, but it's a godo idea anyway.
* Do not discard insolubles in implicationsSimon Peyton Jones2017-07-2813-77/+161
| | | | | | | | | | | | | | | Trac #14000 showed up two errors * In TcRnTypes.dropInsolubles we dropped all implications, which might contain the very insolubles we wanted to keep. This was an outright error, and is why the out-of-scope error was actually lost altogether in Trac #14000 * In TcSimplify.simplifyInfer, if there are definite (insoluble) errors, it's better to suppress the following ambiguity test, because the type may be bogus anyway. See TcSimplify Note [Quantification with errors]. This fix seems a bit clunky, but it'll do for now.
* Fix ASSERT failure in tc269Simon Peyton Jones2017-07-281-6/+3
| | | | | | | | This ASSERT failure (in substTy) was reported in Trac #14024. This patch gets the in-scope set right. (Does not fix tests T13822 or T13594.)
* Remove redundant constraint in contextSimon Peyton Jones2017-07-281-1/+1
|
* Fix instantiation of pattern synonymsSimon Peyton Jones2017-07-284-16/+89
| | | | | | | | | | In Check.hs (pattern match ovelap checking) we to figure out the instantiation of a pattern synonym from the type of the pattern. We were doing this utterly wrongly. Trac #13768 demonstrated this bogosity. The fix is easy; and is described in PatSyn.hs Note [Pattern synonym result type]
* Initialize hs_init with UTF8 encoded arguments on Windows.Andreas Klebinger2017-07-2712-182/+155
| | | | | | | | | | | | | | | | | | | | | | | Summary: Get utf8 encoded arguments before we call hs_init and use them instead of ignoring hs_init arguments. This reduces differing behaviour of the RTS between windows and linux and simplifies the code involved. A few testcases were changed to expect the same result on windows as on linux after the changes. This fixes #13940. Test Plan: ./validate Reviewers: austin, hvr, bgamari, erikd, simonmar, Phyx Subscribers: Phyx, rwbarton, thomie GHC Trac Issues: #13940 Differential Revision: https://phabricator.haskell.org/D3739