summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add docs/users_guide/.log to .gitignorewip/add-log-to-gitignoreRyan Scott2019-10-131-1/+2
| | | | | | | | | | | | | | | | | | | When the users guide fails to build (as in #17346), a `docs/users_guide/.log` file will be generated with contents that look something like this: ``` WARNING: unknown config value 'latex_paper_size' in override, ignoring /home/rgscott/Software/ghc5/docs/users_guide/ghci.rst:3410: WARNING: u'ghc-flag' reference target not found: -pgmo ?option? /home/rgscott/Software/ghc5/docs/users_guide/ghci.rst:3410: WARNING: u'ghc-flag' reference target not found: -pgmo ?port? Encoding error: 'ascii' codec can't encode character u'\u27e8' in position 132: ordinal not in range(128) The full traceback has been saved in /tmp/sphinx-err-rDF2LX.log, if you want to report the issue to the developers. ``` This definitely should not be checked in to version control, so let's add this to `.gitignore`.
* Do not add a 'solved dict' for quantified constraintsSimon Peyton Jones2019-10-1216-42/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GHC has a wonderful-but-delicate mechanism for building recursive dictionaries by adding a goal to the "solved dictionaries" before solving the sub-goals. See Note [Solved dictionaries] in TcSMonad Ticket #17267 showed that if you use this mechanism for local /quantified/ constraints you can get a loop -- or even unsafe coerce. This patch fixes the bug. Specifically * Make TcSMonad.addSolvedDict be conditional on using a /top level/ instance, not a quantified one. * Moreover, we /also/ don't want to add a solved dict for equalities (a~b). * Add lots more comments to Note [Solved dictionaries] to explain the above cryptic stuff. * Extend InstanceWhat to identify those strange built-in equality instances. A couple of other things along the way * Delete the unused Type.isIPPred_maybe. * Stop making addSolvedDict conditional on not being an impolicit parameter. This comes from way back. But it's irrelevant now because IP dicts are never solved via an instance.
* Fix validity checking for inferred typesSimon Peyton Jones2019-10-125-2/+21
| | | | | | | | | | | | | | | | | | | | GHC is suposed to uphold the principle that an /inferred/ type for a let-binding should obey the rules for that module. E.g. we should only accept an inferred higher rank type if we have RankNTypes on. But we were failing to check this: TcValidity.checkValidType allowed arbitrary rank for inferred types. This patch fixes the bug. It might in principle cause some breakage, but if so that's good: the user should add RankNTypes and/or a manual signature. (And almost every package has explicit user signatures for all top-level things anyway.) Let's see. Fixes #17213. Metric Decrease: T10370
* Use newDFunName for both manual and derived instances (#17339)Ryan Scott2019-10-125-18/+45
| | | | | | | | | | | Issue #17339 was caused by using a slightly different version of `newDFunName` for derived instances that, confusingly enough, did not take all arguments to the class into account when generating the `DFun` name. I cannot think of any good reason for doing this, so this patch uses `newDFunName` uniformly for both derived instances and manually written instances alike. Fixes #17339.
* Skip T13767 on DarwinVladislav Zavialov2019-10-121-1/+3
| | | | | | | | | | | | | The CI job fails with: +++ rts/T13676.run/T13676.run.stderr.normalised 2019-10-09 12:27:56.000000000 -0700 @@ -0,0 +1,4 @@ +dyld: Library not loaded: @rpath/libHShaskeline-0.7.5.0-ghc8.9.0.20191009.dylib + Referenced from: /Users/builder/builds/ewzE5N2p/0/ghc/ghc/inplace/lib/bin/ghc + Reason: image not found +*** Exception: readCreateProcess: '/Users/builder/builds/ewzE5N2p/0/ghc/ghc/inplace/lib/bin/ghc' '-B/Users/builder/builds/ewzE5N2p/0/ghc/ghc/inplace/lib' '-e' ''/''$'/'' == '/''/x0024'/''' +RTS '-tT13676.t' (exit -6): failed Unable to reproduce locally.
* Escape stats file command (#13676)Vladislav Zavialov2019-10-124-2/+65
|
* Simplify Configure in a few waysJohn Ericson2019-10-1219-115/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - No need to distinguish between gcc-llvm and clang. First of all, gcc-llvm is quite old and surely unmaintained by now. Second of all, none of the code actually care about that distinction! Now, it does make sense to consider C multiple frontends for LLVMs in the form of clang vs clang-cl (same clang, yes, but tweaked interface). But this is better handled in terms of "gccish vs mvscish" and "is LLVM", yielding 4 combinations. Therefore, I don't think it is useful saving the existing code for that. - Get the remaining CC_LLVM_BACKEND, and also TABLES_NEXT_TO_CODE in mk/config.h the normal way, rather than hacking it post-hoc. No point keeping these special cases around for now reason. - Get rid of hand-rolled `die` function and just use `AC_MSG_ERROR`. - Abstract check + flag override for unregisterised and tables next to code. Oh, and as part of the above I also renamed/combined some variables where it felt appropriate. - GccIsClang -> CcLlvmBackend. This is for `AC_SUBST`, like the other Camal case ones. It was never about gcc-llvm, or Apple's renamed clang, to be clear. - llvm_CC_FLAVOR -> CC_LLVM_BACKEND. This is for `AC_DEFINE`, like the other all-caps snake case ones. llvm_CC_FLAVOR was just silly indirection *and* an odd name to boot.
* Hadrian: Take care of assembler source filesStefan Schulze Frielinghaus2019-10-113-5/+12
| | | | Fixes #17286.
* Much simpler language for PmCheckSebastian Graf2019-10-1112-445/+370
| | | | | | | | | | | | | | | | Simon realised that the simple language composed of let bindings, bang patterns and flat constructor patterns is enough to capture the semantics of the source pattern language that are important for pattern-match checking. Well, given that the Oracle is smart enough to connect the dots in this less informationally dense form, which it is now. So we transform `translatePat` to return a list of `PmGrd`s relative to an incoming match variable. `pmCheck` then trivially translates each of the `PmGrd`s into constraints that the oracle understands. Since we pass in the match variable, we incidentally fix #15884 (coverage checks for view patterns) through an interaction with !1746.
* Use addUsedDataCons more judiciously in TcDeriv (#17324)Ryan Scott2019-10-094-26/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you derive an instance like this: ```hs deriving <...> instance Foo C ``` And the data constructors for `C` aren't in scope, then `doDerivInstErrorChecks1` throws an error. Moreover, it will _only_ throw an error if `<...>` is either `stock` or `newtype`. This is because the code that the `anyclass` or `via` strategies would generate would not require the use of the data constructors for `C`. However, `doDerivInstErrorChecks1` has another purpose. If you write this: ```hs import M (C(MkC1, ..., MkCn)) deriving <...> instance Foo C ``` Then `doDerivInstErrorChecks1` will call `addUsedDataCons` on `MkC1` through `MkCn` to ensure that `-Wunused-imports` does not complain about them. However, `doDerivInstErrorChecks1` was doing this for _every_ deriving strategy, which mean that if `<...>` were `anyclass` or `via`, then the warning about `MkC1` through `MkCn` being unused would be suppressed! The fix is simple enough: only call `addUsedDataCons` when the strategy is `stock` or `newtype`, just like the other code paths in `doDerivInstErrorChecks1`. Fixes #17324.
* TestBen Gamari2019-10-091-0/+3
|
* Remove GHC_STAGE guards from MachDepsBen Gamari2019-10-091-2/+0
| | | | | | | | | This allows the stage1 compiler (which needs to run on the build platform and produce code for the host) to depend upon properties of the target. This is wrong. However, it's no more wrong than it was previously and @Erichson2314 is working on fixing this so I'm going to remove the guard so we can finally bootstrap HEAD with ghc-8.8 (see issue #17146).
* Define GHC_STAGE in headers instead of command-lineBen Gamari2019-10-094-9/+7
|
* Relayout generated header bodyBen Gamari2019-10-091-41/+41
|
* Rename STAGE macro to GHC_STAGEBen Gamari2019-10-097-17/+17
| | | | To avoid polluting the macro namespace
* PmCheck: Look up parent data family TyCon when populating `PossibleMatches`Sebastian Graf2019-10-083-24/+94
| | | | | | | | | | | | | The vanilla COMPLETE set is attached to the representation TyCon of a data family instance, whereas the user-defined COMPLETE sets are attached to the parent data family TyCon itself. Previously, we weren't trying particularly hard to get back to the representation TyCon to the parent data family TyCon, resulting in bugs like #17207. Now we should do much better. Fixes the original issue in #17207, but I found another related bug that isn't so easy to fix.
* Bump array and haddock submodulesVladislav Zavialov2019-10-081-0/+0
|
* Solve constraints from top-level groups soonerRichard Eisenberg2019-10-0827-466/+175
| | | | | | | | | | | | | | | | | | | | | | | | | Previously, all constraints from all top-level groups (as separated by top-level splices) were lumped together and solved at the end. This could leak metavariables to TH, though, and that's bad. This patch solves each group's constraints before running the next group's splice. Naturally, we now report fewer errors in some cases. One nice benefit is that this also fixes #11680, but in a much simpler way than the original fix for that ticket. Admittedly, the error messages degrade just a bit from the fix from #11680 (previously, we informed users about variables that will be brought into scope below a top-level splice, and now we just report an out-of-scope error), but the amount of complexity required throughout GHC to get that error was just not worth it. This patch thus reverts much of f93c9517a2c6e158e4a5c5bc7a3d3f88cb4ed119. Fixes #16980 Test cases: th/T16980{,a}
* Mark newtype constructors as used in the Coercible solver (#10347)Ryan Scott2019-10-088-80/+95
| | | | | | | | | | | | | Currently, newtype constructors are not marked as used when they are accessed under the hood by uses of `coerce`, as described in #10347. This fixes #10347 by co-opting the `tcg_keep` field of `TcGblEnv` to track uses of newtype constructors in the `Coercible` solver. See `Note [Tracking unused binding and imports]` in `TcRnTypes`. Since #10347 is fixed, I was able to simplify the code in `TcDeriv` slightly, as the hack described in `Note [Newtype deriving and unused constructors]` is no longer necessary.
* [skip ci] clarify what unsound meansAndrew Martin2019-10-081-18/+24
|
* [skip ci] can not -> may notAndrew Martin2019-10-081-1/+1
|
* [skip ci] make the table betterAndrew Martin2019-10-081-10/+20
|
* [skip ci] link to foreign cmm callAndrew Martin2019-10-081-6/+6
|
* Rephrase a bunch of things in the unlifted ffi types documentation. Add a ↵Andrew Martin2019-10-081-43/+71
| | | | section on pinned byte arrays.
* Document the UnliftedFFITypes extension.Andrew Martin2019-10-082-6/+98
|
* gitlab-ci: Check coverage of GHC flags in users guideBen Gamari2019-10-083-0/+293
| | | | | | | This ensures that all GHC flags are documented during the documentation build. Fixes #17315.
* doc: Write out documented flag listBen Gamari2019-10-081-1/+11
|
* users-guide: Run sphinx in nit-picky modeBen Gamari2019-10-085-2/+41
| | | | This ensure that it blurts an error on missing references.
* users-guide: Rework pragma key generationBen Gamari2019-10-081-6/+8
| | | | | | Previously we had a hack to handle the case of multi-token SPECIALISE pragmas. Now we use a slightly more general rule of using a prefix of tokens containing only alphabetical characters.
* users-guide: Document -fworker-wrapperBen Gamari2019-10-081-0/+11
|
* users-guide: Document NondecreasingIndentationBen Gamari2019-10-081-1/+8
|
* users-guide: Fix various warningsBen Gamari2019-10-0811-82/+109
|
* users-guide: Document -XHaskell98 and -XHaskell2010Ben Gamari2019-10-082-0/+42
|
* users-guide: Make reverse flags addressable via :ghc-flag:Ben Gamari2019-10-081-2/+15
| | | | | Previously one could not easily link to the :reverse: flag of a ghc-flag.
* users-guide: Refer to language extension flags via :extension:Ben Gamari2019-10-086-29/+29
| | | | Previously several were referred to via :ghc-flag:`-X...`.
* PmCheck: Identify some semantically equivalent expressionsSebastian Graf2019-10-083-28/+85
| | | | | | | | | | By introducing a `CoreMap Id` to the term oracle, we can represent syntactically equivalent expressions by the same `Id`. Combine that with `CoreOpt.simpleCoreExpr` and it might even catch non-trivial semantic equalities. Unfortunately due to scoping issues, this will not solve #17208 for view patterns yet.
* base: Document the fact that Typeable is automatically "derived"Ben Gamari2019-10-082-1/+5
| | | | This fixes #17060.
* gitlab-ci: Use validate flavour in hadrian buildsBen Gamari2019-10-081-6/+10
|
* validate: Use Hadrian's validate flavourBen Gamari2019-10-081-3/+9
|
* hadrian: Add `validate` and `slow validate` flavoursBen Gamari2019-10-084-1/+71
|
* gitlab-ci: Add missing TEST_ENV variablesBen Gamari2019-10-081-1/+9
| | | | This should fix #16985.
* Remove GhcLibsWithUnixJohn Ericson2019-10-071-8/+0
| | | | | d679ca43e7477284d733b94ff542be5363be3353 meant to remove it but did not finish the job.
* Get rid of GHC_PACKAGE_DB_FLAGJohn Ericson2019-10-074-9/+4
| | | | | We no longer support booting from older GHC since 527bcc41630918977c73584d99125ff164400695.
* Keep OSTYPE local to configure.acJohn Ericson2019-10-071-4/+0
| | | | Unused outside it since b6be81b841e34ca45b3549c4c79e886a8761e59a.
* Remove CONFIGURE_ARGS from configure.acJohn Ericson2019-10-072-10/+0
| | | | | It looks like it's been unused since at least 34cc75e1a62638f2833815746ebce0a9114dc26b.
* Refactor some cruft in TcGenGenericsRyan Scott2019-10-071-28/+18
| | | | | | * `foldBal` contains needless partiality that can easily be avoided. * `mkProd_E` and `mkProd_P` both contain unique supply arguments that are completely unused, which can be removed.
* Get rid of wildcard patterns in prim Cmm emitting codeJohn Ericson2019-10-072-877/+1206
| | | | This way, we can be sure we don't miss a case.
* Switch to cabal-version=3.0 in base.cabal and rts.cabalAndrey Mokhov2019-10-072-2/+2
|
* Switch to cabal-version=3.0 in ghc-heap.cabalAndrey Mokhov2019-10-071-1/+1
|
* Hadrian: Stop using in-tree CabalAndrey Mokhov2019-10-074-6/+3
|