summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Growable AST:wip/GrowableASTShayan Najd2017-08-144-486/+669
| | | | - fixed some testcases
* erge branch 'master' into GrowableASTShayan Najd2017-08-130-0/+0
|\
| * Merge branch 'master' of git://git.haskell.org/ghcShayan Najd2017-08-132-0/+11
| |\
| * \ # This is a combination of 9 commits.Shayan Najd2017-08-13339-3761/+5767
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # This is the 1st commit message: Growable AST: - first compiling commit Growable AST: - adding NPat and NPlusK to AST # This is the commit message #2: Growable AST: - re-organising HsExp.hs (no removal / addition) # This is the commit message #3: Growable AST: - intermediate commit # This is the commit message #4: Growable AST: - Reorganising HsBinds.hs (without removing or adding) # This is the commit message #5: Growable AST: - before grand uncommenting # This is the commit message #6: latest changes # This is the commit message #7: Growable AST: - current version, before bug hunt # This is the commit message #8: Growable AST: - fixing the issues, finally! # This is the commit message #9: Growable AST: - re-adding parts that relied on Expr # This is the commit message #10: Growable AST: - organising HsDecls (no addition /removal) # This is the commit message #1: Growable AST: - Making HsDecl extensible with the following remaining (a) transfering the documentations, (b) updating the module export list. # This is the commit message #2: Growable AST: - reorganising HsImpExp # This is the commit message #3: Growable AST: - Making HsImpExp growable # This is the commit message #4: Growable AST: - reorganising HsSyn # This is the commit message #5: Growable AST: - making HsSyn growable - making a remaining datatype in HsImpExp growable # This is the commit message #6: Growable AST: - some clean up # This is the commit message #7: Growable AST: - Transferring documentations in HsDecl # This is the commit message #8: Growable AST: - fixing some warnings # This is the commit message #9: Growable AST: - fixing some warnings
* | \ \ Merge branch 'master' of git://git.haskell.org/ghc into GrowableASTShayan Najd2017-08-13343-3767/+5780
|\ \ \ \ | |/ / / |/| | / | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | # Conflicts: # compiler/deSugar/DsArrows.hs # compiler/deSugar/DsBinds.hs # compiler/hsSyn/HsBinds.hs # compiler/hsSyn/HsDecls.hs # compiler/hsSyn/HsExpr.hs # compiler/hsSyn/HsLit.hs # compiler/hsSyn/HsPat.hs # compiler/typecheck/TcBinds.hs # compiler/typecheck/TcClassDcl.hs # compiler/typecheck/TcHsSyn.hs
| * | Add test for #14101Ryan Scott2017-08-122-0/+11
| |/ | | | | | | | | I forgot to do this in 0bb1e84034a12d7f700b48fca6710c01bd08f397.
| * Expand type synonyms during role inferenceRyan Scott2017-08-123-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: During role inference, we need to expand type synonyms, since oversaturated applications of type synonym tycons would otherwise have overly conservative roles inferred for its arguments. Fixes #14101. Test Plan: ./validate Reviewers: goldfire, austin, bgamari Reviewed By: goldfire Subscribers: rwbarton, thomie GHC Trac Issues: #14101 Differential Revision: https://phabricator.haskell.org/D3838
| * Change isClosedAlgType to be TYPE-aware, and rename it to pmIsClosedTypeRyan Scott2017-08-123-138/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: In a267580e4ab37115dcc33f3b8a9af67b9364da12, I somewhat awkwardly inserted a special case for `TYPE` in the `EmptyCase` coverage checker. Instead of placing it there, @mpickering noted that `isClosedAlgType` would be a better fit for it. I do just that in this patch. I also renamed `isClosedAlgType` to `pmIsClosedType`, reflecting the fact that `TYPE` technically isn't an algebraic type (it's a primitive one), and that its behavior is pattern-match coverage checking-oriented. I also moved it to `Check`, which is a better home for this function than `Type`. Luckily, the only call sites for `isClosedAlgType` were in the pattern-match coverage checker anyways, so this change is simple enough. Test Plan: ./validate Reviewers: mpickering, austin, goldfire, bgamari Reviewed By: goldfire Subscribers: rwbarton, thomie, mpickering GHC Trac Issues: #14086 Differential Revision: https://phabricator.haskell.org/D3830
| * Use NonEmpty lists to represent lists of duplicate elementsRyan Scott2017-08-1213-55/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Three functions in `ListSetOps` which compute duplicate elements represent lists of duplicates of `[a]`. This is a really bad way to go about things, because these lists are guaranteed to always have at least one element (the "representative" of the duplicates), and several places in the GHC API call `head` (a partial function) on these lists of duplicates to retrieve the representative. This changes the representation of duplicates to `NonEmpty` lists instead, which allow for many partial uses of `head` to be made total. Fixes #13823. Test Plan: ./validate Reviewers: bgamari, austin, goldfire Reviewed By: bgamari Subscribers: goldfire, rwbarton, thomie GHC Trac Issues: #13823 Differential Revision: https://phabricator.haskell.org/D3823
| * Don't suppress unimplemented type family warnings with DeriveAnyClassRyan Scott2017-08-128-23/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: For some asinine reason, we were suppressing warnings when deriving associated type family instances with `DeriveAnyClass`. That seems like a bad idea. Let's not do that. Along the way, I noticed that the error contexts associated with these newly emitted warnings were less than ideal, so I did some minor refactoring to improve the story there. Fixes #14094 Test Plan: ./validate Reviewers: bgamari, austin Subscribers: rwbarton, thomie GHC Trac Issues: #14094 Differential Revision: https://phabricator.haskell.org/D3828
| * Split out inferConstraintsDataConArgs from inferConstraintsRyan Scott2017-08-121-21/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Addresses point (1) of https://phabricator.haskell.org/D3337#107865. Before, `inferConstraints` awkwardly combined all of the logic needed to handle stock, newtype, and anyclass deriving. Really, though, the stock/newtype logic is quite different from the anyclass logic, so this splits off `inferConstraintsDataConArgs` (so named because it infers constraints by inspecting the types of the arguments to data constructors) from `inferConstraints` to handle the stock/newtype-specific bits. Aside from making the code somewhat clearer, this allows us to factor out superclass constraint inference, which is done regardless of deriving strategy. Test Plan: If it builds, ship it Reviewers: bgamari, austin Subscribers: rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3827
| * Fix EmptyCase documentationCyd Parser2017-08-071-6/+5
| |
| * Convert examples to doctests, and add a handful of new onesDavid Luposchainsky2017-08-061-35/+157
| |
| * Fix string escaping in JSONDmitry Malikov2017-08-061-1/+1
| | | | | | | | | | It seems to that double quotes is not escaped well at the moment. We'd noticed this with @alexbiehl during the work on https://github.com/haskell/haddock/pull/645
| * Add forgotten > in Control.ApplicativeOleg Grenrus2017-08-061-1/+1
| | | | | | As reported by tabaqui on `#hackage`
| * Don't warn when empty casing on TypeRyan Scott2017-08-053-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: `Type` (a.k.a. `TYPE LiftedRep`) can be used at the type level thanks to `TypeInType`. However, expressions like ```lang=haskell f :: Type -> Int f x = case x of {} ``` were falsely claiming that the empty case on the value of type `Type` was non-exhaustive. The reason is a bit silly: `TYPE` is technically not an empty datatype in GHC's eyes, since it's a builtin, primitive type. To convince the pattern coverage checker otherwise, this adds a special case for `TYPE`. Test Plan: make test TEST=T14086 Reviewers: gkaracha, austin, bgamari, goldfire Reviewed By: goldfire Subscribers: goldfire, rwbarton, thomie GHC Trac Issues: #14086 Differential Revision: https://phabricator.haskell.org/D3819
| * Remove the deprecated Typeable{1..7} type synonymsRyan Scott2017-08-053-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: `Typeable{1..7}` (type synonyms for the poly-kinded `Typeable`) have been deprecated since GHC 7.8. They're now causing problems for users who try to still work with them in legacy code, since they can no longer be used in instances. To avoid this sort of confusion, let's just remove `Typeable{1..7}` altogether. Resolves #14047. Reviewers: bgamari, austin, hvr Reviewed By: bgamari Subscribers: rwbarton, thomie GHC Trac Issues: #14047 Differential Revision: https://phabricator.haskell.org/D3817
| * Add MonadIO Q - by requiring MonadIO => QuasiOleg Grenrus2017-08-055-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This is follow-up to https://ghc.haskell.org/trac/ghc/ticket/10773 Reviewers: austin, goldfire, bgamari, RyanGlScott Reviewed By: RyanGlScott Subscribers: RyanGlScott, rwbarton, thomie Differential Revision: https://phabricator.haskell.org/D3816
| * 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