summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Use newDFunName for both manual and derived instances (#17339)wip/T17339Ryan Scott2019-10-105-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.
* 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
|
* configure: Determine library versions of template-haskell, et al.Ben Gamari2019-10-072-0/+9
| | | | These are needed by the user guide documentation. Fixes #17260.
* Refactor, document, and optimize LLVM configuration loadingBen Gamari2019-10-078-31/+59
| | | | | | | | | | | | As described in the new Note [LLVM Configuration] in SysTools, we now load llvm-targets and llvm-passes lazily to avoid the overhead of doing so when -fllvm isn't used (also known as "the common case"). Noticed in #17003. Metric Decrease: T12234 T12150
* Only flatten up to type family arity in coreFlattenTyFamApp (#16995)Ryan Scott2019-10-073-126/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Among other uses, `coreFlattenTyFamApp` is used by Core Lint as a part of its check to ensure that each type family axiom reduces according to the way it is defined in the source code. Unfortunately, the logic that `coreFlattenTyFamApp` uses to flatten type family applications disagreed with the logic in `TcFlatten`, which caused it to spuriously complain this program: ```hs type family Param :: Type -> Type type family LookupParam (a :: Type) :: Type where LookupParam (f Char) = Bool LookupParam x = Int foo :: LookupParam (Param ()) foo = 42 ``` This is because `coreFlattenTyFamApp` tries to flatten the `Param ()` in `LookupParam (Param ())` to `alpha` (where `alpha` is a flattening skolem), and GHC is unable to conclude that `alpha` is apart from `f Char`. This patch spruces up `coreFlattenTyFamApp` so that it instead flattens `Param ()` to `alpha ()`, which GHC _can_ know for sure is apart from `f Char`. See `Note [Flatten], wrinkle 3` in `FamInstEnv`.
* rts: Fix CNF dirtying logicBen Gamari2019-10-051-3/+3
| | | | | | | | Previously due to a silly implementation bug CNFs would never have their dirty flag set, resulting in their being added again and again to the `mut_list`. Fix this. Fixes #17297.
* Clean up `#include`s in the compilerJohn Ericson2019-10-0516-26/+11
| | | | | | | | - Remove unneeded ones - Use <..> for inter-package. Besides general clean up, helps distinguish between the RTS we link against vs the RTS we compile for.
* Add musl systems to llvm-targetsMatthew Bauer2019-10-043-1/+27
| | | | | | This was done in Nixpkgs, but never upstreamed. Musl is pretty much the same as gnu, but with a different libc. I’ve used the same values for everything.
* New fix for #11647. Avoid side effects like #17171Roland Senn2019-10-048-6/+35
| | | | | If a main module doesn't contain a header, we omit the check whether the main module is exported. With this patch GHC, GHCi and runghc use the same code.
* [linker, macho] Don't map/allocate zero size sections and segmentsArtem Pyanykh2019-10-041-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Zero size sections are common even during regular build on MacOS. For instance: ``` $ ar -xv libHSghc-prim-0.6.1.a longlong.o $ otool -l longlong.o longlong.o: Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags 0xfeedfacf 16777223 3 0x00 1 2 176 0x00002000 Load command 0 cmd LC_SEGMENT_64 cmdsize 152 segname vmaddr 0x0000000000000000 vmsize 0x0000000000000000 <-- segment size = 0 fileoff 208 filesize 0 maxprot 0x00000007 initprot 0x00000007 nsects 1 flags 0x0 Section sectname __text segname __TEXT addr 0x0000000000000000 size 0x0000000000000000 <-- section size = 0 offset 208 align 2^0 (1) reloff 0 nreloc 0 flags 0x80000000 reserved1 0 reserved2 0 cmd LC_BUILD_VERSION cmdsize 24 platform macos sdk 10.14 minos 10.14 ntools 0 ``` The issue of `mmap`ing 0 bytes was resolved in !1050, but the problem remained. These 0 size segments and sections were still allocated in object code, which lead to failed `ASSERT(size > 0)` in `addProddableBlock` further down the road. With this change zero size segments **and** sections are not mapped/allocated at all. Test plan: 1. Build statically linked GHC. 2. Run `ghc --interactive`. Observe that REPL loads successfully (which was not the case before). 3. Load several more compiled hs files into repl. No failures.