[Git][ghc/ghc][wip/haddock-merge] 4537 commits: FIX haskell/haddock#44: Propagate parenthesis level when printing documented types

Ben Gamari (@bgamari) gitlab at gitlab.haskell.org
Fri May 17 17:23:16 UTC 2024



Ben Gamari pushed to branch wip/haddock-merge at Glasgow Haskell Compiler / GHC


Commits:
8738d97b by David Waern at 2008-07-24T10:50:44+00:00
FIX haskell/haddock#44: Propagate parenthesis level when printing documented types
- - - - -
05339119 by David Waern at 2008-07-24T16:06:18+00:00
Drop unnecessary parenthesis in types, put in by the user
 
We were putting in parenthesis were the user did. Let's remove this since
it just clutters up the types. The types are readable anyway since we print
parens around infix operators and do not rely on fixity levels.
  
When doing this I discovered that we were relying on user parenthesis when
printin types like (a `O` b) c. This patchs fixes this problem so that
parenthesis are always inserted around an infix op application in case it
is applied to further arguments, or if it's an arguments to a type constructor.

Tests are updated.

- - - - -
b3a99828 by David Waern at 2008-07-24T10:19:43+00:00
Print parenthesis around non-atomic banged types

Fixes half of haskell/haddock#44

- - - - -
ab5238e0 by David Waern at 2008-07-24T22:07:49+00:00
Add a reference file for the TypeFamilies test
- - - - -
1941cc11 by David Waern at 2008-07-25T17:15:53+00:00
Simplify definition of pretty and trace_ppr
- - - - -
e3bfa33c by David Waern at 2008-07-25T17:18:27+00:00
Warning messages

Output a warning when filtering out data/type instances and associated types
in instances. We don't show these in the documentation yet, and we need to
let the user know.

- - - - -
9b85fc89 by David Waern at 2008-07-25T17:45:40+00:00
Doc: Mention Hoogle in the Introduction
- - - - -
afb2dd60 by David Waern at 2008-07-25T17:49:00+00:00
Doc: update -B description
- - - - -
584c0c91 by David Waern at 2008-07-25T18:11:38+00:00
Doc: describe -w flag
- - - - -
77619c24 by David Waern at 2008-07-28T12:29:07+00:00
Remove TODO from cabal file
- - - - -
96717d5f by David Waern at 2008-07-28T12:29:27+00:00
Support type equality predicates
- - - - -
c2fd2330 by David Waern at 2008-07-29T19:45:14+00:00
Move unL from H.B.Hoogle to H.GHC.Utils

I like Neil's shorter unL better than unLoc from the GHC API.

- - - - -
c4c3bf6a by David Waern at 2008-07-29T19:47:36+00:00
Do not export ATs when not in list of subitems
- - - - -
bf9a7b85 by David Waern at 2008-08-03T11:42:59+00:00
Filter out ForeignExports
- - - - -
df59fcb0 by David Waern at 2008-08-03T14:02:51+00:00
Filter out more declarations

The previous refactorings in H.I.Create introduced a few bugs. Filtering
of some types of declarations that we don't handle was removed. This patch
fixes this.

- - - - -
2f8a958b by David Waern at 2008-08-03T15:24:07+00:00
Move reL to H.GHC.Utils so we can use it everywhere
- - - - -
8ec15efd by David Waern at 2008-08-03T15:25:00+00:00
 Use isVanillaLSig from GHC API instead of home brewn function
- - - - -
300f93a2 by David Waern at 2008-08-03T15:25:27+00:00
Filter out separately exported ATs

This is a quick and dirty hack to get rid of separately exported ATs.
We haven't decided how to handle them yet. No warning message is given.

- - - - -
8776d1ec by David Waern at 2008-08-03T16:21:21+00:00
Filter out more declarations and keep only vanilla type sigs in classes
- - - - -
ea07eada by David Waern at 2008-08-03T16:48:00+00:00
Fix layout
- - - - -
dd5e8199 by David Waern at 2008-08-03T16:50:52+00:00
Move some utility functions from H.I.Create to H.GHC.Utils
- - - - -
4a1dbd72 by David Waern at 2008-08-03T17:39:55+00:00
Do not filter out doc declarations
- - - - -
0bc8dca4 by David Waern at 2008-08-03T17:47:26+00:00
Filter out separately exported ATs (take two)
- - - - -
af970fe8 by David Waern at 2008-08-03T22:39:17+00:00
Update CHANGES
- - - - -
5436ad24 by David Waern at 2008-08-03T22:40:20+00:00
Bump version number to 2.2.1
- - - - -
d66de448 by David Waern at 2008-08-05T19:00:32+00:00
Remove version restriction on ghc-paths
- - - - -
534b1364 by David Waern at 2008-08-05T19:04:35+00:00
Bump version to 2.2.2 and update CHANGES
- - - - -
549188ff by David Waern at 2008-08-05T19:16:49+00:00
Fix CHANGES
- - - - -
0d156bb4 by Luke Plant at 2008-08-11T15:20:59+00:00
invoking haddock clarification and help
- - - - -
748295cc by David Waern at 2008-08-11T18:56:37+00:00
Doc: say that the --hoogle option is functional
- - - - -
43301db4 by David Waern at 2008-08-05T19:26:08+00:00
Change ghc version dependency to >= 6.8.2
- - - - -
3e5a53b6 by David Waern at 2008-08-10T22:42:05+00:00
Make H.GHC.Utils build with GHC HEAD
- - - - -
7568ace0 by David Waern at 2008-08-11T19:41:54+00:00
Import Control.OldException instead of C.Exception when using ghc >= 6.9

We should really test for base version instead, but I don't currently
know which version to test for.

- - - - -
b71ae991 by David Waern at 2008-08-12T22:40:39+00:00
Make our .haddock file version number depend on the GHC version

We need to do this, since our .haddock format can potentially
change whenever GHC's version changes (even when only the patchlevel
changes).

- - - - -
6307ce3f by David Waern at 2008-08-12T22:49:57+00:00
Remove matching on NoteTy in AttachInstances, it has been removed
- - - - -
2dbcfd5f by David Waern at 2008-08-12T23:02:02+00:00
Comment out H.GHC.loadPackages - it is unused and doesn't build with ghc >= 6.9
- - - - -
c74db5c2 by David Waern at 2008-08-12T23:03:58+00:00
Hide <.> from GHC import in Hoogle only for ghc <= 6.8.3
- - - - -
69a44ebb by David Waern at 2008-08-12T23:11:12+00:00
Follow changes to parseDynamic/StaticFlags
- - - - -
5881f3f0 by David Waern at 2008-08-13T21:43:58+00:00
Add __GHC_PATCHLEVEL__ symbol also when building the library
- - - - -
8574dc11 by David Waern at 2008-08-13T21:44:17+00:00
Follow move of package string functions from PackageConfig to Module
- - - - -
c9baa77f by David Waern at 2008-08-13T21:45:29+00:00
Follow extensible exceptions changes
- - - - -
9092de15 by David Waern at 2008-08-13T21:46:20+00:00
Update test following Haddock version change
- - - - -
ebe569a4 by David Waern at 2008-08-13T21:46:54+00:00
Follow changes to parseDynamic- parseStaticFlags in GHC
- - - - -
b8a5ffd3 by David Waern at 2008-08-13T21:47:36+00:00
Follow changes to Binary in GHC 6.9
- - - - -
edfda1cc by David Waern at 2008-08-13T21:50:17+00:00
Change ghc version dependency to >= 6.8.2 && <= 6.9
- - - - -
d59be1cf by Neil Mitchell at 2008-08-12T16:02:53+00:00
Output all items, even if they are not defined in this module - ensures map comes from Prelude, not just GHC.Base
- - - - -
dda93b9f by Neil Mitchell at 2008-08-12T21:37:32+00:00
Add support for type synonyms to Hoogle, was accidentally missing before (woops!)
- - - - -
b6ee795c by Neil Mitchell at 2008-08-13T14:03:24+00:00
Generalise Hoogle.doc and add a docWith
- - - - -
415e1bb2 by Neil Mitchell at 2008-08-13T14:03:46+00:00
Make Hoogle add documentation to a package
- - - - -
790a1202 by Neil Mitchell at 2008-08-18T12:52:43+00:00
Use the same method to put out signatures as class methods in the Hoogle backend
- - - - -
ded37eba by Neil Mitchell at 2008-08-18T12:53:04+00:00
Remove Explicit top-level forall's when pretty-printing signatures
- - - - -
6468c722 by Neil Mitchell at 2008-08-20T07:59:13+00:00
Simplify the code by removing not-to-important use of <.> in the Hoogle back end
- - - - -
788c3a8b by Neil Mitchell at 2008-08-21T18:20:24+00:00
In the hoogle back end, markup definition lists using <i>, not <b>
- - - - -
77d4b000 by Ian Lynagh at 2008-08-14T10:49:14+00:00
Add a Makefile for GHC's build system. Still won't work yet, but we're closer
- - - - -
920440d7 by Ian Lynagh at 2008-08-27T18:06:46+00:00
Add haddock.wrapper
- - - - -
bcda925f by Ian Lynagh at 2008-08-27T18:07:02+00:00
Add a manual Cabal flag to control the ghc-paths dependency
- - - - -
04d194e2 by Ian Lynagh at 2008-08-27T20:41:27+00:00
Update extensions in Cabal file
Use ScopedTypeVariables instead of PatternSignatures

- - - - -
12480043 by Ian Lynagh at 2008-08-27T20:41:55+00:00
Increase the upper bound on the GHC version number
- - - - -
b1f809a5 by Ian Lynagh at 2008-08-27T21:32:22+00:00
Fix some warnings
- - - - -
aea0453d by Ian Lynagh at 2008-08-28T14:22:29+00:00
Fixes for using haddock in a GHC build tree
- - - - -
ad23bf86 by Ian Lynagh at 2008-08-28T21:14:27+00:00
Don't use Cabal wrappers on Windows
- - - - -
35858e4c by Ian Lynagh at 2008-08-29T00:07:42+00:00
Fix in-tree haddock on Windows
- - - - -
c2642066 by Ian Lynagh at 2008-09-03T22:35:53+00:00
follow library changes
- - - - -
2eb55d50 by Ian Lynagh at 2008-09-07T18:52:51+00:00
bindist fixes
- - - - -
3daa5b59 by Ian Lynagh at 2008-09-10T16:58:18+00:00
We need to tell haddock that its datasubdir is . or it can't find package.conf
- - - - -
388fd8c2 by Ian Lynagh at 2008-09-10T19:47:44+00:00
Fix haddock inplace on Windows
- - - - -
70a641c1 by Ian Lynagh at 2008-09-10T22:15:44+00:00
Fix installed haddock on Windows
- - - - -
83c1e997 by Neil Mitchell at 2008-09-11T10:48:55+00:00
Import GHC.Paths if not IN_GHC_TREE, seems to match the use of GHC.Paths functions much better
- - - - -
b452519b by Ian Lynagh at 2008-09-12T12:58:24+00:00
Add a LANGUAGE ForeignFunctionInterface pragma
- - - - -
afbd592c by Ian Lynagh at 2008-09-12T12:59:13+00:00
Wibble imports
- - - - -
547ac4ad by Ian Lynagh at 2008-09-14T15:34:22+00:00
Add a "#!/bin/sh" to haddock.wrapper
- - - - -
f207a807 by Ian Lynagh at 2008-09-15T10:02:32+00:00
Use "exec" when calling haddock in the wrapper
- - - - -
2ee68509 by Thomas Schilling at 2008-09-15T09:09:16+00:00
Port Haddock.Interface to new GHC API.

This required one bigger change: 'readInterfaceFile' used to take an
optional 'Session' argument.  This was used to optionally update the
name cache of an existing GHC session.  This does not work with the
new GHC API, because an active session requires the function to return
a 'GhcMonad' action, but this is not possible if no session is
provided.

The solution is to use an argument of functions for reading and
updating the name cache and to make the function work for any monad
that embeds IO, so it's result type can adapt to the calling context.

While refactoring, I tried to make the code a little more
self-documenting, mostly turning comments into function names.

- - - - -
3bb96431 by Thomas Schilling at 2008-09-15T09:09:37+00:00
Reflect GHC API changes.
- - - - -
2e60f714 by Thomas Schilling at 2008-09-15T09:10:37+00:00
Port Haddock.GHC.Typecheck to new GHC API.
- - - - -
9cfd4cff by Thomas Schilling at 2008-09-15T09:11:00+00:00
Port Haddock.GHC to new GHC API.
- - - - -
caffa003 by Thomas Schilling at 2008-09-15T09:11:25+00:00
Port Main to new GHC API.
- - - - -
069a4608 by Ian Lynagh at 2008-09-21T11:19:00+00:00
Fix paths used on Windows frmo a GHC tree: There is no whare directory
- - - - -
7ceee1f7 by Ian Lynagh at 2008-09-21T12:20:16+00:00
Fix the in-tree haddock on Windows
- - - - -
0d486514 by Ian Lynagh at 2008-09-23T18:06:58+00:00
Increase the GHC upper bound from 6.11 to 6.13
- - - - -
f092c414 by Neil Mitchell at 2008-09-11T14:56:07+00:00
Do not wrap __ in brackets
- - - - -
036bdd13 by Ian Lynagh at 2008-09-28T01:42:35+00:00
Fix building haddock when GhcProfiled=YES
- - - - -
01434a89 by David Waern at 2008-09-24T20:24:21+00:00
Add PatternSignatures LANGUAGE pragma to Main and Utils
- - - - -
1671a750 by David Waern at 2008-10-02T22:57:25+00:00
For source links, get original module from declaration name instead of environment.

Getting it from the environment must have been a remnant from the
times when we were using unqualified names (versions 0.x).

- - - - -
a25dde99 by David Waern at 2008-10-02T22:59:57+00:00
Remove ifaceEnv from Interface - it's no longer used
- - - - -
610993da by David Waern at 2008-10-02T23:04:58+00:00
Write a comment about source links for type instance declarations
- - - - -
5a96b5d5 by Thomas Schilling at 2008-10-03T10:45:08+00:00
Follow GHC API change of parseModule.
- - - - -
5a943ae5 by Ian Lynagh at 2008-10-03T15:56:58+00:00
TAG 2008-10-03
- - - - -
76cdd6ae by Thomas Schilling at 2008-10-08T12:29:50+00:00
Only load modules once when typechecking with GHC.
  
This still doesn't fix the memory leak since the typechecked source is
retained and then processed separately.  To fix the leak, modules must
be processed directly after typechecking.

- - - - -
7074d251 by David Waern at 2008-10-09T23:53:54+00:00
Interleave typechecking with interface creation

At the same time, we fix a bug where the list of interfaces were
processed in the wrong order, when building the links and renaming
the interfaces.

- - - - -
4b9b2b2d by David Waern at 2008-10-09T23:54:49+00:00
Add some strictness annotations in Interface

We add some strictness annotations to the fields of Interface,
so that less GHC data is hold on to during processing.

- - - - -
22035628 by David Waern at 2008-10-10T20:02:31+00:00
Remove typecheckFiles and MonadUtils import from H.GHC.Typeccheck
- - - - -
be637ad3 by David Waern at 2008-10-10T20:33:38+00:00
Make Haddock build with GHC 6.8.2
- - - - -
523b3404 by David Waern at 2008-10-10T21:08:09+00:00
Fix documentation for createInterfaces
- - - - -
e1556702 by David Waern at 2008-10-10T21:26:19+00:00
Hide H.Utils in library
- - - - -
a8e751c3 by David Waern at 2008-10-10T21:34:59+00:00
Add back .haddock file versioning based on GHC version

It was accidentally removed in the patch for GHC 6.8.2 compatibility

- - - - -
06fb3c01 by David Waern at 2008-10-10T21:47:15+00:00
Bump version number to 2.3.0
- - - - -
ff087fce by David Waern at 2008-10-10T22:35:49+00:00
Add support for DocPic

The support for DocPic was merged into the GHC source long ago,
but the support in Haddock was forgotten. Thanks Peter Gavin for
submitting this fix!

- - - - -
3af85bf6 by David Waern at 2008-10-10T23:34:05+00:00
Update tests
- - - - -
0966873c by Simon Marlow at 2008-10-10T14:43:04+00:00
no need for handleErrMsg now, we don't throw any ErrMsgs
- - - - -
f1870de3 by Clemens Fruhwirth at 2008-10-10T13:29:36+00:00
Compile with wrapper but remove it for dist-install
- - - - -
7b440dc2 by David Waern at 2008-10-11T14:02:25+00:00
Remove interface from LinksInfo

It was there to know the documentation home module when creating
a wiki link, but we already know this since we have the DocName.

- - - - -
e5729e6a by David Waern at 2008-10-15T20:49:18+00:00
Wibble
- - - - -
b2a8e01a by David Waern at 2008-10-15T21:03:36+00:00
Use type synonyms for declarations and docs in H.I.Create
- - - - -
be71a15b by David Waern at 2008-10-15T21:12:17+00:00
Comment out unused type family stuff completely
- - - - -
91aaf075 by David Waern at 2008-10-15T21:49:04+00:00
Wibble
- - - - -
42ba4eb4 by David Waern at 2008-10-15T21:53:53+00:00
Move convenient type synonym to H.Types
- - - - -
db11b723 by David Waern at 2008-10-15T22:14:07+00:00
Add DeclInfo to H.Types
- - - - -
193552b6 by David Waern at 2008-10-15T22:15:01+00:00
Add subordinates with docs to the declaration map

The only place in the code where we want the subordinates for a declaration is
right after having looked up the declaration in the map.

And since we include subordinates in the map, we might as well take the
opportunity to store those subordinates that belong to a particular declaration
together with that declaration.

We also store the documentation for each subordinate.

- - - - -
31e6eebc by David Waern at 2008-10-16T17:18:47+00:00
Wibble
- - - - -
0dcbd79f by David Waern at 2008-10-16T20:58:42+00:00
Fix haskell/haddock#61

We were not getting docs for re-exported class methods. This was because we
were looking up the docs in a map made from the declarations in the current
module being rendered. Obviously, re-exported class methods come from another
module.

Class methods and ATs were the only thing we were looking up using the doc map,
everything else we found in the ExporItems. So now I've put subordinate docs
in the ExportItem's directly, to make things a bit more consistent.

To do this, I added subordinates to the the declarations in the declaration
map. This was easy since we were computing subordinates anyway, to store
stand-alone in the map. I added a new type synonym 'DeclInfo', which is what we
call what is now stored in the map. 

This little refactoring removes duplicate code to retrieve subordinates and
documentation from the HsGroup.

- - - - -
de47f20a by David Waern at 2008-10-16T22:06:35+00:00
Document function and improve its layout
- - - - -
e74e625a by Thomas Schilling at 2008-10-20T11:12:57+00:00
Force interface more aggressively.

For running Haddock on GHC this reduces memory usage by about 50 MB on
a 32 bit system.  A heap profile shows total memory usage peak at
about 100 MB, but actual usage is at around 300 MB even with
compacting GC (+RTS -c).

- - - - -
b63ac9a1 by David Waern at 2008-10-20T20:25:50+00:00
Make renamer consistent

Instead of explicitly making some binders Undocumented, treat all names the
same way (that is, try to find a Documented name).

- - - - -
f6de0bb0 by Ian Lynagh at 2008-09-19T00:54:43+00:00
TAG GHC 6.10 fork
- - - - -
74599cd0 by David Waern at 2008-10-20T21:13:24+00:00
Do not save hidden modules in the .haddock file

We were saving interfaces of all processed modules including those hidden using
{-# OPTIONS_HADDOCK hide #-} in the .haddock file. This caused broken links
when generating the index for the libraries that come with GHC.

This patch excludes modules with hidden documentation when writing .haddock
files. It should fix the above problem. 

- - - - -
7b6742e9 by David Waern at 2008-10-21T19:54:52+00:00
Do not save hidden modules in the .haddock file (also for ghc >= 6.9)

When writing the first patch, I forgot to do the fix in both branches of an #if
macro.

- - - - -
b99b1951 by David Waern at 2008-10-22T20:04:18+00:00
Remove subordinate map and its usage

It is not needed now that we store subordinate names in the DeclInfo map.

- - - - -
da97cddc by David Waern at 2008-10-22T20:11:46+00:00
Tidy up code in H.I.Create a little

Remove commented out half-done type instance support, and remove DeclWithDoc
synonym.

- - - - -
6afa76f3 by David Waern at 2008-10-22T21:17:29+00:00
Fix warnings in H.GHC.Utils
- - - - -
171ea1e8 by David Waern at 2008-10-22T21:35:04+00:00
Fix warnings in H.Utils
- - - - -
c8cb3b91 by David Waern at 2008-10-22T21:36:49+00:00
Wibble
- - - - -
767fa06a by David Waern at 2008-10-27T19:59:04+00:00
Make named doc comments into ExportDoc instead of ExportDecl

Fixes a crash when processing modules without export lists containing named
docs.

- - - - -
e638bbc6 by David Waern at 2008-11-02T22:21:10+00:00
Add HCAR entry
- - - - -
92b4ffcf by David Waern at 2008-11-02T22:44:19+00:00
Update CHANGES
- - - - -
84d4da6e by David Waern at 2008-11-03T11:25:04+00:00
Add failing test for template haskell crash
- - - - -
2a9cd2b1 by David Waern at 2008-11-04T21:13:44+00:00
Add tests/TH.hs
- - - - -
8a59348e by David Waern at 2008-11-04T21:30:26+00:00
TAG 2.3.0
- - - - -
54f70d31 by Thomas Schilling at 2008-10-24T17:04:08+00:00
Enable framed view of the HTML documentation.

This patch introduces:

 - A page that displays the documentation in a framed view.  The left
   side will show a full module index.  Clicking a module name will
   show it in the right frame.  If Javascript is enabled, the left
   side is split again to show the modules at the top and a very short
   synopsis for the module currently displayed on the right.

 - Code to generate the mini-synopsis for each module and the mini
   module index ("index-frames.html").

 - CSS rules for the mini-synopsis.

 - A very small amount of javascript to update the mini-synopsis (but
   only if inside a frame.)

Some perhaps controversial things:

 - Sharing code was very difficult, so there is a small amount of code
   duplication.

 - The amount of generated pages has been doubled, since every module
   now also gets a mini-synopsis.  The overhead should not be too
   much, but I haven't checked.  Alternatively, the mini-synopsis
   could also be generated using Javascript if we properly annotate
   the actual synopsis.

- - - - -
5d7ea5a6 by David Waern at 2008-11-04T23:20:17+00:00
Follow change to ExportDecl in frames code
- - - - -
60e16308 by David Waern at 2008-11-04T23:35:26+00:00
Update CHANGES
- - - - -
d63fd26d by David Waern at 2008-11-04T23:37:43+00:00
Bump version number
- - - - -
c1660c39 by David Waern at 2008-11-04T23:44:46+00:00
Update CHANGES
- - - - -
995ab384 by David Waern at 2008-11-04T23:55:21+00:00
Remove .ref files from tests/output/
- - - - -
1abbbe75 by David Waern at 2008-11-04T23:57:41+00:00
Output version info before running tests
- - - - -
649b182f by David Waern at 2008-11-05T22:45:37+00:00
Add ANNOUNCE message
- - - - -
c36ae0bb by David Waern at 2008-11-05T23:15:35+00:00
Update ANNOUNCE
- - - - -
9c4f3d40 by David Waern at 2008-11-05T23:18:30+00:00
Wibble
- - - - -
5aac87ce by David Waern at 2008-11-06T21:07:48+00:00
Depend on base 4.* when using GHC >= 6.9, otherwise 3.*
- - - - -
b9796a74 by David Waern at 2008-11-06T21:13:40+00:00
Bump version to 2.4.1 and update CHANGES
- - - - -
d4b26baa by David Waern at 2008-11-06T21:26:33+00:00
Depend on base 4.0.* instead of 4.*
- - - - -
2cb0903c by David Waern at 2008-11-06T21:46:53+00:00
Fix warnings in H.B.HH and H.B.HH2
- - - - -
e568e89a by David Waern at 2008-11-06T21:47:12+00:00
Fix warnings in Haddock.ModuleTree
- - - - -
9dc14fbd by David Waern at 2008-11-06T21:47:52+00:00
Fix warnings in Haddock.Version
- - - - -
02ac197c by David Waern at 2008-11-06T21:51:31+00:00
Fix warnings in H.InterfaceFile and H.Options
- - - - -
63e7439a by David Waern at 2008-11-06T21:59:45+00:00
Fix warnings in H.GHC.Typecheck
- - - - -
4bca5b68 by David Waern at 2008-11-08T13:43:42+00:00
Set HscTarget to HscNothing instead of HscAsm

There used to be a bug in the GHC API that prevented us from setting this
value.

- - - - -
07357aec by David Waern at 2008-11-09T22:27:00+00:00
Re-export NameCache and friends from Distribution.Haddock
- - - - -
ea554b5a by David Waern at 2008-11-09T23:14:10+00:00
Add Haddock.GHC.Utils to other-modules in library
- - - - -
74aecfd7 by David Waern at 2008-11-10T01:18:57+00:00
Export DocName in the library
- - - - -
241a58b3 by David Waern at 2008-11-10T01:19:18+00:00
Document the functions in H.DocName
- - - - -
edc2ef1b by David Waern at 2008-11-10T01:20:52+00:00
Export H.DocName in the library
- - - - -
4f588d55 by David Waern at 2008-11-10T01:29:14+00:00
Make DocName an instance of NamedThing
- - - - -
b4647244 by David Waern at 2008-11-15T22:58:18+00:00
Reflect version bump in test suite
- - - - -
4bee8ce2 by David Waern at 2008-11-15T22:58:45+00:00
Update tests

For unknown reasons, test output for Bug1 and Test has changed for the better.

- - - - -
1690e2f9 by David Waern at 2008-11-15T22:59:33+00:00
Store hidden modules in .haddock files

We store documentation for an entity in the 'InstalledInterface' of the
definition site module, and never in the same structure for a module which
re-exports the entity. So when a client of the Haddock library wants to look up
some documentation, he/she might need to access a hidden module. But we
currently don't store hidden modules in the .haddock files.

So we add the hidden modules and the Haddock options to the .haddock files.
The options will be used to filter the module list to obtain the visible
modules only, which is necessary for generating the contents and index for
installed packages.

- - - - -
8add6435 by David Waern at 2008-11-16T14:35:50+00:00
Bump major version number due to .haddock file format change
- - - - -
48bfcf82 by David Waern at 2008-11-23T14:32:52+00:00
Update tests to account for version number bump
- - - - -
0bbd1738 by David Waern at 2008-11-23T14:33:31+00:00
HADDOCK_DATA_DIR changed to haddock_datadir
- - - - -
5088b78c by David Waern at 2008-11-23T17:13:21+00:00
FIX haskell/haddock#45: generate two anchors for each name

We generate two anchor tags for each name, one where we don't escape the name
and one where we URI-encode it. This is for compatibility between IE and Opera.
Test output is updated.

- - - - -
5ee5ca3b by Neil Mitchell at 2008-11-27T14:38:11+00:00
Drop HsDocTy annotations, they mess up pretty printing and also have a bracketing bug (#2584)
- - - - -
51c014e9 by Roman Cheplyaka at 2008-11-27T22:27:36+00:00
Allow referring to a specific section within a module in a module link
Fixes haskell/haddock#65

- - - - -
4094bdc5 by David Waern at 2008-11-28T21:13:33+00:00
Update tests following anchor change
- - - - -
f89552dd by Thomas Schilling at 2008-11-29T16:16:20+00:00
Haddock really shouldn't try to overwrite files.
- - - - -
98127499 by David Waern at 2008-12-07T14:09:15+00:00
Solve conflict
- - - - -
319356c5 by David Waern at 2008-10-22T21:16:55+00:00
Add -Wall -Werror to ghc-options
- - - - -
3c4968c9 by David Waern at 2008-11-04T23:38:56+00:00
TAG 2.4.0
- - - - -
4b21e003 by David Waern at 2008-11-06T21:14:04+00:00
TAG 2.4.1
- - - - -
8e0cad5c by David Waern at 2008-12-07T14:12:54+00:00
Remove -Werror
- - - - -
299d6deb by David Waern at 2008-12-07T14:25:18+00:00
Remove -Wall, we'll focus on warnings after 6.10.2 is out
- - - - -
5f4216b6 by David Waern at 2008-12-07T20:58:05+00:00
Resolve conflict properly
- - - - -
67d774e7 by Neil Mitchell at 2008-12-15T11:44:26+00:00
Make forall's in constructors explicit, i.e. data Foo = Foo {foo :: Eq a => a}
- - - - -
61851792 by Neil Mitchell at 2008-12-18T15:39:39+00:00
Try and find a better package name than "main" for Hoogle, goes wrong when working on an executable rather than a library
- - - - -
2fab8554 by David Waern at 2008-12-08T23:19:48+00:00
Make visible names from ExportItems

Instead of a complicated calculation of visible names out of GHC's export
items, we can get them straight out of the already calculated ExportItems.  The
ExportItems should represent exactly those items that are visible in an
interface. 

If store all the exported sub-names in ExportDecl instead of only those with
documentation, the calculation becomes very simple. So we do this change as
well (should perhaps have been a separate patch).
 
This should fix the problem with names from ghc-prim not appearing in the link
environment.

- - - - -
7caadd8c by Ian Lynagh at 2008-12-11T17:01:04+00:00
Wrap the GHC usage with defaultCleanupHandler
This fixes a bug where haddock leaves /tmp/ghc* directories uncleaned.

- - - - -
7c9fc9a5 by David Waern at 2009-01-02T21:38:27+00:00
Show re-exported names from external packages again

This fixes GHC ticket 2746.

In order to also link to the exported subordinate names of a declaration, we
need to re-introduce the sub map in the .haddock files.

- - - - -
119e4e05 by David Waern at 2009-01-06T23:34:17+00:00
Do not process boot modules

We should of course not try to produce documentation for boot modules! The
reason this has worked in the past is that the output of "real" modules
overwrites the output of boot modules later in the process. However, this
causes a subtle link environment problem. So let's get rid of this stupid
behaviour.
  
We avoid processing boot modules, but we continue to typecheck them.

- - - - -
c285b9d2 by David Waern at 2009-01-08T18:03:36+00:00
Export modules also when coming from external packages

This seems to have regressed since a refactoring that was
part of the 2.3.0 release.

- - - - -
24031c17 by David Waern at 2009-01-10T15:26:26+00:00
Change version to 2.4.2 - no need to go to 2.5.0
- - - - -
864d1c3f by David Waern at 2009-01-10T15:35:20+00:00
Update tests to account for version number change
- - - - -
524ba886 by David Waern at 2009-01-10T18:29:17+00:00
Add test for Template Haskell splicing
- - - - -
05e6e003 by David Waern at 2009-01-10T19:35:42+00:00
Fix Trac haskell/haddock#68: Turn on compilation via C for Template Haskell packages

We can't use HscNothing if we need to run code coming from modules inside
the processed package during typechecking, which is the case for some packages
using Template Haskell. This could be improved, to e.g. use HscInterpreted and
HscNothing where possible, instead of using HscC for all modules in the
package.

- - - - -
2b2bafa1 by David Waern at 2009-01-10T20:22:25+00:00
Only use needsTemplateHaskell when compiling with GHC 6.10.2 or above
- - - - -
bedc3a93 by Ian Lynagh at 2009-01-11T14:58:41+00:00
Fix the location of INPLACE_PKG_CONF; fixes the build
Spotted by Conal Elliott

- - - - -
943107c8 by David Waern at 2009-01-20T19:27:39+00:00
Document H.I.Create.collectDocs better
- - - - -
c6252e37 by David Waern at 2009-01-20T19:29:51+00:00
Fix Trac haskell/haddock#59: TH-generated declarations disappearing

This patch was contributed by Joachim Breitner (nomeata).

- - - - -
3568a6af by David Waern at 2009-01-21T21:41:48+00:00
Do not indicate that a constructor argument is unboxed

We only show the strictness annotation for an unboxed constructor argument. The
fact that it is unboxed is an implementation detail and should not be part of
the module interface.

- - - - -
562a4523 by David Waern at 2009-01-22T18:53:49+00:00
Fix Trac haskell/haddock#50: do not attach docs to pragmas or other kinds of non-declarations

We now filter out everything that is not a proper Haskell declaration before
collecting the docs and attaching them to declarations.

- - - - -
6fdf21c2 by David Waern at 2009-01-22T19:48:09+00:00
Add test for quasi quotation. No reference output yet.
- - - - -
dc4100fd by David Waern at 2009-01-22T19:57:47+00:00
Improve quasi-quotation test and add reference output
- - - - -
908b74bb by David Waern at 2009-01-23T23:22:03+00:00
Filter out separately exported associated types in a smarter way
- - - - -
f6b42ecb by David Waern at 2009-01-24T16:54:39+00:00
Correct spelling mistake in error message
- - - - -
24e4245d by David Waern at 2009-01-24T17:48:03+00:00
Correct comment
- - - - -
b5e8462f by David Waern at 2009-02-07T13:22:29+00:00
Do not show a subordinate at the top level if its parent is also exported

See note in the source code for more info.

- - - - -
4b09de57 by David Waern at 2009-02-07T13:53:53+00:00
Update test following change to top level subordinates
- - - - -
76379896 by David Waern at 2009-02-07T13:58:04+00:00
Remove html files in the tests/output/ directory which have been accidentally added
- - - - -
1a6d8b10 by Joachim Breitner at 2009-02-20T10:29:43+00:00
Typo in comment
- - - - -
fec367d0 by David Waern at 2009-02-24T20:21:17+00:00
Fix small bug

The rule is to prefer type constructors to other things when an identifier in a
doc string can refer to multiple things. This stopped working with newer GHC
versions (due to a tiny change in the GHC renamer). We implement this rule
in the HTML backend for now, instead of fixing it in GHC, since we will move
renaming of doc strings to Haddock in the future anyway. 

- - - - -
9b4172eb by David Waern at 2009-02-25T20:04:38+00:00
Fix bad error handling with newer GHCs

When support for GHC 6.10 was added, an error handler was installed only around
the typechecking phase. This had the effect that errors thrown during
dependency chasing were caught in the top-level exception handler and not
printed with enough detail.  With this patch we wrap the error handler around
all our usage of the Ghc monad. 

- - - - -
de2df363 by Simon Peyton Jones at 2009-02-02T16:47:42+00:00
Hide funTyConName, now exported by TypeRep
- - - - -
4d40a29f by Ian Lynagh at 2009-02-12T18:57:49+00:00
Don't build the library when building in the GHC tree
- - - - -
1cd0abe4 by Ian Lynagh at 2009-02-13T13:58:53+00:00
Add a ghc.mk
- - - - -
3d814eeb by Ian Lynagh at 2009-02-13T18:50:28+00:00
do .depend generation for haddock with the stage1 compiler
This is a bit of a hack. We mkdepend with stage1 as if .depend
depends on the stage2 compiler then make goes wrong: haddock's
.depend gets included, which means that make won't reload until
it's built, but we can't build it without the stage2 compiler. We
therefore build the stage2 compiler before its .depend file is
available, and so compilation fails.

- - - - -
b55036a4 by Ian Lynagh at 2009-02-25T01:38:13+00:00
Give haddock a wrapper on unix in the new GHC build system
- - - - -
9eabfe68 by Ian Lynagh at 2009-02-25T19:21:32+00:00
Create inplace/lib/html in the new GHC build system
- - - - -
93af30c7 by Ian Lynagh at 2008-11-07T19:18:23+00:00
TAG GHC 6.10.1 release
- - - - -
06e6e34a by Thomas Schilling at 2009-02-24T18:11:00+00:00
Define __GHC_PATCHLEVEL__ for recent version of GHC (stable).
- - - - -
680e6ed8 by Thomas Schilling at 2009-02-24T18:12:26+00:00
'needsTemplateHaskell' is not defined in current stable GHC.
- - - - -
6c5619df by David Waern at 2009-02-25T22:15:23+00:00
Hide fynTyConName only for recent GHC versions
- - - - -
6b2344f1 by Ian Lynagh at 2009-02-26T00:49:56+00:00
Add the module to one of haddocks warnings
- - - - -
e5d11c70 by David Waern at 2009-02-27T21:37:20+00:00
Bug fix
We tried to filter out subordinates that were already exported through their parent.

This didn't work properly since we were in some cases looking at the
grand-parent and not the parent.  We now properly compute all the parent-child
relations of a declaration, and use this information to get the parent of a
subordinate.

We also didn't consider record fields with multiple parents. This is now
handled correctly.

We don't currently support separately exported associated types. But when we
do, they should be handled correctly by this process too.

Also slightly improved the warning message that we give when filtering out
subordinates.

- - - - -
10a79a60 by David Waern at 2009-02-27T22:08:08+00:00
Fix error message conflict

The module name is already written in the beginning of the message, as
seems to be the convention in Haddock. Perhaps not so clear, but we
should change it everywhere in that case. Leaving it as it is for now.

- - - - -
c5055c7f by David Waern at 2009-02-27T22:15:17+00:00
Shorten warning message
- - - - -
a72fed3a by David Waern at 2009-02-28T00:53:55+00:00
Do not show package name in warning message
- - - - -
a5daccb2 by Ian Lynagh at 2009-03-01T14:59:35+00:00
Install haddock in the new GHC build system
- - - - -
dfdb025c by Ian Lynagh at 2009-03-07T23:56:29+00:00
Relax base dependency to < 4.2, not < 4.1
- - - - -
5769c8b4 by David Waern at 2009-03-21T14:58:52+00:00
Bump .haddock file version number (due to change of format)
- - - - -
f1b8f67b by David Waern at 2009-03-21T14:59:26+00:00
Define __GHC_PATCHLEVEL__=1 when using ghc-6.10.1
- - - - -
23f78831 by David Waern at 2009-03-21T16:40:52+00:00
Update CHANGES
- - - - -
7d2735e9 by David Waern at 2009-03-21T16:50:33+00:00
Update ANNOUNCE
- - - - -
0771e00a by David Waern at 2009-03-21T16:54:40+00:00
Update ANNOUNCE, again
- - - - -
81a6942a by David Waern at 2009-03-21T17:50:06+00:00
Don't be too verbose in CHANGES
- - - - -
29861dcf by David Waern at 2009-03-21T18:03:31+00:00
TAG 2.4.2
- - - - -
a585f285 by David Waern at 2009-03-21T19:20:29+00:00
Require Cabal >= 1.2.3
- - - - -
7c611662 by David Waern at 2009-03-21T19:21:48+00:00
TAG 2.4.2 with cabal-version >= 1.2.3
- - - - -
23b7deff by Simon Marlow at 2009-03-20T15:43:42+00:00
new GHC build system: use shell-wrappers macro
- - - - -
25f8afe7 by Ian Lynagh at 2009-03-21T19:13:53+00:00
Fix (with a hack?) haddock in teh new build system
- - - - -
6a29a37e by David Waern at 2009-03-24T22:10:15+00:00
Remove unnecessary LANGUAGE pragma
- - - - -
954da57d by David Waern at 2009-03-24T22:21:23+00:00
Fix warnings in H.B.DevHelp
- - - - -
1619f1df by David Waern at 2009-03-26T23:20:44+00:00
-Wall police in H.B.Html
- - - - -
b211e13b by Simon Marlow at 2009-03-24T13:00:56+00:00
install Haddock's html stuff
- - - - -
78e0b107 by David Waern at 2008-12-07T19:58:53+00:00
Add verbosity flag and utils, remove "verbose" flag
- - - - -
913dae06 by David Waern at 2008-12-07T20:01:05+00:00
Add some basic "verbose" mode logging in H.Interface
- - - - -
1cbff3bf by David Waern at 2009-03-27T00:07:26+00:00
Fix conflicts
- - - - -
22f82032 by David Waern at 2009-03-27T21:15:11+00:00
Remove H.GHC.Typecheck
- - - - -
81557804 by David Waern at 2009-03-27T21:19:22+00:00
Remove docNameOrig and use getName everywhere instead
- - - - -
d8267213 by David Waern at 2009-03-27T21:21:46+00:00
Use docNameOcc instead of nameOccName . getName
- - - - -
5d55deab by David Waern at 2009-03-27T21:33:04+00:00
Remove H.DocName and put DocName in H.Types
- - - - -
8ba72611 by David Waern at 2009-03-27T22:06:26+00:00
Document DocName
- - - - -
605f8ca5 by David Waern at 2009-03-27T22:45:21+00:00
-Wall police
- - - - -
e4da93ae by David Waern at 2009-03-27T23:12:53+00:00
-Wall police in H.B.Hoogle
- - - - -
bb255519 by David Waern at 2009-03-27T23:41:28+00:00
Define Foldable and Traversable instances for Located
- - - - -
f1195cfe by David Waern at 2009-03-27T23:51:34+00:00
Wibble
- - - - -
23818d7c by David Waern at 2009-03-28T00:03:55+00:00
-Wall police in H.I.Rename
- - - - -
0f050d67 by David Waern at 2009-03-28T00:15:15+00:00
-Wall police in H.I.AttachInstances
- - - - -
0f3fe038 by David Waern at 2009-03-28T21:09:41+00:00
Wibble
- - - - -
275d4865 by David Waern at 2009-03-28T21:27:06+00:00
Layout fix
- - - - -
54ff0ef8 by David Waern at 2009-03-28T21:59:07+00:00
-Wall police in H.I.Create
- - - - -
7f58b117 by David Waern at 2009-03-28T22:10:19+00:00
-Wall police in H.Interface
- - - - -
f0c03b44 by David Waern at 2009-03-28T22:22:59+00:00
-Wall police in Main
- - - - -
29da355c by David Waern at 2009-03-28T22:23:39+00:00
Turn on -Wall -Werror
- - - - -
446d3060 by David Waern at 2009-04-01T20:40:30+00:00
hlint police
- - - - -
3867c9fc by David Waern at 2009-04-01T20:48:42+00:00
hlint police
- - - - -
bd1f1600 by David Waern at 2009-04-01T20:58:02+00:00
hlint police
- - - - -
e0e90866 by David Waern at 2009-04-05T12:42:53+00:00
Move H.GHC.Utils to H.GhcUtils
- - - - -
9cbd426b by David Waern at 2009-04-05T12:57:21+00:00
Remove Haddock.GHC and move its (small) contents to Main
- - - - -
b5c2cbfd by David Waern at 2009-04-05T13:07:04+00:00
Fix whitespace and stylistic issues in Main
- - - - -
3c04aa56 by porges at 2008-12-07T08:22:19+00:00
add unicode output
- - - - -
607918da by David Waern at 2009-04-26T15:09:43+00:00
Resolve conflict
- - - - -
4bec6b6b by Simon Marlow at 2009-05-13T10:00:31+00:00
fix markup
- - - - -
436ad6f4 by Simon Marlow at 2009-03-23T11:54:45+00:00
clean up
- - - - -
bdcd1398 by Simon Marlow at 2009-03-24T10:36:45+00:00
new GHC build system: add $(exeext)
- - - - -
9c0972f3 by Simon Marlow at 2009-03-24T11:04:31+00:00
update for new GHC build system layout
- - - - -
d0f3f83a by Ian Lynagh at 2009-03-29T15:31:43+00:00
GHC new build system fixes
- - - - -
5a8245c2 by Ian Lynagh at 2009-04-04T20:44:23+00:00
Tweak new build system
- - - - -
9c6f2d7b by Simon Marlow at 2009-05-13T10:01:27+00:00
add build instructions for GHC
- - - - -
66d07c76 by Ian Lynagh at 2009-05-31T00:37:53+00:00
Quote program paths in ghc.mk
- - - - -
bb7de2cd by Ian Lynagh at 2009-06-03T22:57:55+00:00
Use a bang pattern on an unlifted binding
- - - - -
3ad283fc by Ian Lynagh at 2009-06-13T16:17:50+00:00
Include haddock in GHC bindists
- - - - -
ac447ff4 by David Waern at 2009-06-24T21:07:50+00:00
Delete Haddock.Exception and move contents to Haddock.Types

Only a few lines of code that mainly declares a type - why not just put it in Haddock.Types.

- - - - -
4464fb9b by David Waern at 2009-06-24T22:23:23+00:00
Add Haddock module headers

Add a proper Haddock module header to each module, with a more finegrained
copyright. If you feel mis-accreditted, please correct any copyright notice!

The maintainer field is set to haddock at projects.haskell.org.

Next step is to add a brief description to each module.

- - - - -
5f4c95dd by David Waern at 2009-06-24T22:39:44+00:00
Fix spelling error
- - - - -
6d074cdb by David Waern at 2009-06-25T21:53:56+00:00
Document Interface and InstalledInterface better
- - - - -
d0cbd183 by David Waern at 2009-06-27T12:46:46+00:00
Remove misplaced whitespace in H.I.Rename
- - - - -
fa381c49 by David Waern at 2009-06-27T13:26:03+00:00
Fix haskell/haddock#104 - create output directory if missing
- - - - -
91fb77ae by Ian Lynagh at 2009-06-25T15:59:50+00:00
TAG 2009-06-25
- - - - -
0d853f40 by Simon Peyton Jones at 2009-07-02T15:35:22+00:00
Follow extra field in ConDecl
- - - - -
b201735d by Ian Lynagh at 2009-07-05T16:50:35+00:00
Update Makefile for the new GHC build system
- - - - -
df6c0092 by Ian Lynagh at 2009-07-05T17:01:13+00:00
Resolve conflicts
- - - - -
1066870a by Ian Lynagh at 2009-07-05T17:01:48+00:00
Remove the -Wwarn hack in the GHC build system
- - - - -
7e856076 by Ian Lynagh at 2009-07-05T17:17:59+00:00
Fix warnings
- - - - -
5d4cd958 by Ian Lynagh at 2009-07-05T19:35:40+00:00
Bump version number
Cabal needs to distinguish between haddocks having a --verbose and
--verbosity flag

- - - - -
6ee07c99 by David Waern at 2009-07-06T20:14:57+00:00
Wibble
- - - - -
2308b66f by David Waern at 2009-07-06T20:24:20+00:00
Clearer printing of versions by runtests.hs
- - - - -
d4b5d9ab by David Waern at 2009-07-06T21:22:42+00:00
Fix (invisible) bug introduced by unicode patch
- - - - -
2caca8d8 by David Waern at 2009-07-06T21:44:10+00:00
Use HscAsm instead of HscC when using TH
- - - - -
18f3b755 by David Waern at 2009-07-06T22:10:22+00:00
Update HCAR entry (by Janis)
- - - - -
a72ac9db by David Waern at 2009-07-06T23:01:35+00:00
Follow HsRecTy change with an #if __GLASGOW_HASKEL__ >= 611
- - - - -
549135d2 by David Waern at 2009-07-06T23:11:41+00:00
Remove unused functions from Haddock.Utils
- - - - -
b450134a by Isaac Dupree at 2009-07-11T14:59:00+00:00
revert to split-index for large indices
- remove the search-box, because browsers have search-for-text
abilities anyway.
- pick 150 items in index as the arbitrary time at which to split it
- notice the bug that identifiers starting with non-ASCII characters
won't be listed in split-index, but don't bother to fix it yet (see
ticket haskell/haddock#116, http://trac.haskell.org/haddock/ticket/116 )

- - - - -
78a5661e by Isaac Dupree at 2009-07-20T15:37:18+00:00
Implement GADT records in HTML backend
- - - - -
4e163555 by Isaac Dupree at 2009-07-21T22:03:25+00:00
add test for GADT records
- - - - -
79aa4d6e by David Waern at 2009-07-23T20:40:37+00:00
Update test suite following version bump
- - - - -
5932c011 by David Waern at 2009-08-02T10:25:39+00:00
Fix documentation bug
- - - - -
a6970fca by David Waern at 2009-08-12T23:08:53+00:00
Remove support for ghc 6.8.* from .cabal file
- - - - -
c1695902 by Ian Lynagh at 2009-07-07T13:35:45+00:00
Fix unused import warnings
- - - - -
fb6df7f9 by Ian Lynagh at 2009-07-16T00:20:31+00:00
Use cProjectVersion directly rather than going through compilerInfo
Fixes the build after changes in GHC

- - - - -
548cdd66 by Simon Marlow at 2009-07-28T14:27:04+00:00
follow changes in GHC's ForeignType
- - - - -
9395aaa0 by David Waern at 2009-08-13T22:17:33+00:00
Switch from PatternSignatures to ScopedTypeVariables in Main
- - - - -
eebf39bd by David Waern at 2009-08-14T17:14:28+00:00
Version .haddock files made with GHC 6.10.3/4 correclty
- - - - -
58f3e735 by David Waern at 2009-08-14T17:19:37+00:00
Support GHC 6.10.* and 6.11.* only
- - - - -
5f63cecc by David Waern at 2009-08-14T22:03:20+00:00
Do not version .haddock file based on GHC patchlevel version

We require that the instances of Binary that we use from GHC will not change
between patchlevel versions.

- - - - -
d519de9f by David Waern at 2009-08-14T23:50:00+00:00
Update CHANGES
- - - - -
35dccf5c by David Waern at 2009-08-14T23:51:38+00:00
Update version number everywhere
- - - - -
6d363fea by David Waern at 2009-08-15T09:46:49+00:00
Update ANNOUNCE
- - - - -
c7ee6bc2 by David Waern at 2009-08-15T09:47:13+00:00
Remove -Werror

Forgot that Hackage doesn't like it.

- - - - -
a125c12b by David Waern at 2009-08-15T09:49:50+00:00
Require Cabal >= 1.6
- - - - -
adb2f560 by Isaac Dupree at 2009-08-12T03:47:14+00:00
Cross-Package Documentation version 4
- - - - -
3d6dc04d by David Waern at 2009-08-15T23:42:57+00:00
Put all the IN_GHC_TREE stuff inside getGhcLibDir
- - - - -
56624097 by David Waern at 2009-08-15T23:52:03+00:00
Add --print-ghc-libdir
- - - - -
f15d3ccb by David Waern at 2009-08-16T00:37:52+00:00
Read base.haddock when running tests

We can now test cross-package docs.

- - - - -
283f0fb9 by David Waern at 2009-08-16T00:50:59+00:00
Update test output - we now have more links
- - - - -
673d1004 by David Waern at 2009-08-16T01:26:08+00:00
Read process.haddock when running tests
- - - - -
0d127f82 by David Waern at 2009-08-16T01:43:04+00:00
Add a test for cross-package documentation
- - - - -
f94db967 by Ian Lynagh at 2009-08-16T18:42:44+00:00
Follow GHC build system changes
- - - - -
5151278a by Isaac Dupree at 2009-08-16T19:58:05+00:00
make cross-package list types look nicer
- - - - -
c41e8228 by Isaac Dupree at 2009-08-18T01:47:47+00:00
Haddock.Convert: export more functions
This lets us remove some code in Haddock.Interface.AttachInstances

- - - - -
2e5fa398 by Isaac Dupree at 2009-08-18T02:11:05+00:00
switch AttachInstances to use synify code
It changed an instance from showing ((,) a b) to (a, b)
because my synify code is more sophisticated; I hope the latter
is a good thing rather than a bad thing aesthetically, here.

But this definitely reduces code duplication!

- - - - -
b8b07123 by Isaac Dupree at 2009-08-18T02:23:31+00:00
Find instances using GHC, which is more complete.
In particular, it works cross-package.

An intermediate patch also moved the instance-finding into
createInterface, but that move turned out not to be necessary,
so if we want to do that, it'd go in a separate patch.
(Is that possible? Or will we need GHC to have loaded all the modules
first, before we can go searching for the instances (e.g. if the
modules are recursive or something)?)

- - - - -
6959b451 by Isaac Dupree at 2009-08-17T00:37:18+00:00
fix preprocessor conditional sense
- - - - -
942823af by Isaac Dupree at 2009-08-16T22:46:48+00:00
remove ghc 6.8 conditionals from Haddock.Interface
- - - - -
4b3ad888 by Isaac Dupree at 2009-08-18T20:24:38+00:00
Fix GHC 6.11 build in Haddock.Convert
- - - - -
0a89c5ab by Isaac Dupree at 2009-08-23T00:08:58+00:00
hacks to make it compile without fnArgDocsn
- - - - -
7b3bed43 by Isaac Dupree at 2009-08-23T03:01:28+00:00
less big-Map-based proper extraction of constructor subdocs
- - - - -
b21c279a by Isaac Dupree at 2009-08-23T03:02:06+00:00
Html: remove unnecessary+troublesome GHC. qualifications
- - - - -
96c97115 by Isaac Dupree at 2009-08-23T03:08:03+00:00
Move doc parsing/lexing into Haddock for ghc>=6.11
- - - - -
e1cec02d by Isaac Dupree at 2009-08-23T05:08:14+00:00
get rid of unused DocMap parameter in Html
- - - - -
66960c59 by Isaac Dupree at 2009-08-23T05:54:20+00:00
fix horrible named-docs-disappearing bug :-)
- - - - -
a9d7eff3 by Isaac Dupree at 2009-08-23T06:26:36+00:00
re-implement function-argument docs
..on top of the lexParseRn work.
This patch doesn't change the InstalledInterface format, and thus,
it does not work cross-package, but that will be easy to add
subsequently.

- - - - -
8bf6852c by Isaac Dupree at 2009-08-23T07:26:05+00:00
cross-package fnArgDocs. WARNING: changes .haddock binary format
While breaking the format, I took the opportunity to unrename the
DocMap that's saved to disk, because there's really no reason that
we want to know what *another* package's favorite place to link a
Name to was.  (Is that true? Or might we want to know, someday?)

Also, I added instance Binary Map in InterfaceFile.
It makes the code a little simpler without changing anything of
substance.  Also it lets us add another Map hidden inside another
Map (fnArgsDocs in instDocMap) without having really-convoluted
serialization code.  Instances are neat!
I don't understand why this change to InterfaceFile seemed to
subtly break binary compatibility all by itself, but no matter,
I'll just roll it into the greater format-changing patch. Done!

- - - - -
30115a64 by Isaac Dupree at 2009-08-23T18:22:47+00:00
Improve behavior for unfindable .haddock
- - - - -
aa364bda by Isaac Dupree at 2009-08-23T18:28:16+00:00
add comment for FnArgsDoc type
- - - - -
49b23a99 by Isaac Dupree at 2009-08-23T21:52:48+00:00
bugfix: restore fnArgDocs for type-synonyms
- - - - -
f65f9467 by Isaac Dupree at 2009-08-23T22:06:55+00:00
Backends.Hoogle: eliminate warnings
- - - - -
a292d216 by Isaac Dupree at 2009-08-23T22:10:24+00:00
Haddock.Convert: eliminate warnings
- - - - -
5546cd20 by Isaac Dupree at 2009-08-23T22:12:31+00:00
Haddock.Interface.Rename: eliminate warnings
- - - - -
0a9798b6 by Isaac Dupree at 2009-08-23T22:18:47+00:00
Main.hs: remove ghc<6.9 conditionals
- - - - -
e8f9867f by Isaac Dupree at 2009-08-23T22:27:46+00:00
Main.hs: eliminate warnings (except for OldException)
- - - - -
61c64247 by Isaac Dupree at 2009-08-23T22:41:01+00:00
move get*LibDir code in Main.hs, to +consistent code, -duplication
- - - - -
948f1e69 by Isaac Dupree at 2009-08-23T23:14:26+00:00
Main.hs: OldException->Exception: which eliminates warnings
- - - - -
3d5d5e03 by Isaac Dupree at 2009-08-23T23:20:11+00:00
GhcUtils: ghc >= 6.10
- - - - -
2771d657 by Isaac Dupree at 2009-08-23T23:21:55+00:00
InterfaceFile: ghc >= 6.10
- - - - -
d9f2b9d1 by Isaac Dupree at 2009-08-23T23:22:58+00:00
Types: ghc >= 6.10
- - - - -
ca39210e by Isaac Dupree at 2009-08-23T23:23:26+00:00
ModuleTree: ghc >= 6.10
- - - - -
883c4e59 by Isaac Dupree at 2009-08-23T23:24:04+00:00
Backends.DevHelp: ghc >= 6.10
- - - - -
04667df5 by Isaac Dupree at 2009-08-23T23:24:37+00:00
Backends.Html: ghc >= 6.10
- - - - -
a9f7f25f by Isaac Dupree at 2009-08-23T23:25:24+00:00
Utils: ghc >= 6.10
- - - - -
b7105022 by Isaac Dupree at 2009-08-23T23:37:47+00:00
eliminate haskell98 dependency, following GHC's example
It turns out I/we already had, and it was only a matter of
deleting it from the cabal file.

- - - - -
292e0911 by Isaac Dupree at 2009-08-24T01:22:44+00:00
refactor out subordinatesWithNoDocs
dep of inferenced-decls fix

- - - - -
c2ed46a2 by Isaac Dupree at 2009-08-24T01:24:03+00:00
Eradicate wrong runtime warning for type-inferenced exported-functions
see the long comment in the patch for why I did it this way :-)

- - - - -
4ac0b57c by David Waern at 2009-09-04T22:56:20+00:00
Clean up tyThingToHsSynSig a little

Factor out noLoc and use the case construct. Also rename the function to
tyThingToLHsDecl, since it doesn't just create type signatures.

- - - - -
28ab9201 by David Waern at 2009-09-04T22:58:50+00:00
Wibble
- - - - -
0d9fe6d0 by David Waern at 2009-09-06T18:39:30+00:00
Add more copyright owners to H.I.AttachInstances
- - - - -
122441b1 by David Waern at 2009-09-06T18:44:12+00:00
Style police
- - - - -
1fa79463 by David Waern at 2009-09-06T18:57:45+00:00
Move toHsInstHead to Haddock.Convert and call it synifyInstHead
- - - - -
0d42a8aa by David Waern at 2009-09-06T21:11:38+00:00
Use colordiff to display test results if available
- - - - -
ea9d8e03 by Simon Marlow at 2009-08-24T08:46:14+00:00
Follow changes in GHC's interface file format
Word32 instead of Int for FastString and Name offsets

- - - - -
537e051e by Simon Marlow at 2009-07-29T14:16:53+00:00
define unpackPackageId (it was removed from GHC)
- - - - -
50c63aa7 by David Waern at 2009-09-09T23:18:03+00:00
Remove commented-out code
- - - - -
511631fe by David Waern at 2009-09-09T23:19:05+00:00
Correct copyright in H.I.ParseModuleHeader
- - - - -
898ec768 by David Waern at 2009-09-11T11:22:29+00:00
Use Map.fromList/toList intead of fromAscList/toAscList when serializing Maps
  
This fixes the missing docs problem. The Eq and Ord instances for Name uses the
unique number in Name. This number is created at deserialization time by GHC's
magic Binary instance for Name, and it is random. Thus, fromAscList can't be used
at deserialization time, even though toAscList was used at serialization time.

- - - - -
37bec0d5 by Simon Peyton Jones at 2009-09-11T08:28:04+00:00
Track change in HsType
- - - - -
eb3a97c3 by Ian Lynagh at 2009-09-11T16:07:09+00:00
Allow building with base 4.2
- - - - -
bb4205ed by Ian Lynagh at 2009-09-22T13:50:02+00:00
Loosen the GHC dependency
- - - - -
5c75deb2 by Ian Lynagh at 2009-09-22T14:08:39+00:00
Fix building with GHC >= 6.12
- - - - -
fb131481 by David Waern at 2009-09-11T11:24:48+00:00
Update runtests.hs to work with GHC 6.11
- - - - -
ac3a419d by David Waern at 2009-09-11T11:25:14+00:00
Update CrossPackageDocs test
- - - - -
ec65c3c6 by David Waern at 2009-09-11T11:25:40+00:00
Add reference output for CrossPackageDocs
- - - - -
520c2758 by Ian Lynagh at 2009-10-25T17:26:40+00:00
Fix installation in the GHC build system
- - - - -
28b3d7df by Ian Lynagh at 2009-11-05T15:57:27+00:00
GHC build system: Make *nix installation work in paths containing spaces
- - - - -
5c9bb541 by David Waern at 2009-11-14T11:56:39+00:00
Track change in HsType for the right compiler version
- - - - -
905097ce by David Waern at 2009-11-14T12:10:47+00:00
hlint police
- - - - -
04920630 by Ian Lynagh at 2009-11-20T13:46:30+00:00
Use defaultObjectTarget rather than HscAsm
This fixes haddock when we don't have a native code generator

- - - - -
966eb079 by David Waern at 2009-11-15T12:32:21+00:00
Remove commented-out code
- - - - -
37f00fc4 by David Waern at 2009-11-22T13:58:48+00:00
Make runtests.hs strip links before diffing

Generates easier to read diffs when tests fail. The content of the links
is not important anyway since it is not taken into account by the tests.

- - - - -
3a9bb8ef by David Waern at 2009-11-22T14:05:06+00:00
Follow findProgramOnPath signature change in runtests.hs
- - - - -
b26b9e5a by David Waern at 2009-11-22T14:08:40+00:00
Follow removal of GHC.MVar from base in CrossPackageDocs 
- - - - -
f4d90ae4 by David Waern at 2009-11-22T14:48:47+00:00
Make copy.hs strip link contents before copying

No more updating of reference files when URLs in links changes.

- - - - -
4c9c420d by David Waern at 2009-11-22T15:26:41+00:00
Update test reference output

* More links (Int, Float etc)
* Stripped link contents 

- - - - -
a62b80e3 by David Waern at 2009-11-23T23:19:39+00:00
Update CrossPackageDocs reference output

- Remove GHC.MVar import (removed from base)
- Strip link contents

- - - - -
43491394 by David Waern at 2009-11-23T23:20:00+00:00
Update test reference files with comments on instances
- - - - -
0d370a0b by David Waern at 2009-11-23T23:25:16+00:00
Bump version number
- - - - -
2293113e by David Waern at 2009-11-24T20:55:49+00:00
Comments on instances

Implementing this was a little trickier than I thought, since we need to match
up instances from the renamed syntax with instances represented by
InstEnv.Instance. This is due to the current design of Haddock, which matches
comments with declarations from the renamed syntax, while getting the list of
instances of a class/family directly using the GHC API.

- Works for class instances only (Haddock has no support for type family
  instances yet)
- The comments are rendered to the right of the instance head in the HTML output
- No change to the .haddock file format
- Works for normal user-written instances only. No comments are added on
  derived or TH-generated instances

- - - - -
bf586f29 by David Waern at 2009-11-27T22:05:15+00:00
Whitespace police
- - - - -
b8f03afa by David Waern at 2009-11-27T22:11:46+00:00
Remove bad whitespace and commented-out pieces
- - - - -
90b8ee90 by David Waern at 2009-11-27T22:15:04+00:00
Whitespace police
- - - - -
b5ede900 by David Waern at 2009-11-27T22:15:50+00:00
Whitespace police
- - - - -
e3fddbfe by David Waern at 2009-11-28T13:37:59+00:00
Remove Name from DocInstance

It's not used.

- - - - -
9502786c by David Waern at 2009-11-28T13:56:54+00:00
Require at least GHC 6.12

While regression testing Haddock, I found a bug that happens with GHC 6.10.3,
but not with GHC 6.12-rc2 (haven't tried 6.10.4). I don't have time to track it
down.

I think we should just always require the latest major GHC version. The time
spent on making Haddock work with older versions is too high compared to the
time spent on bugfixing, refactoring and features.

- - - - -
8fa688d8 by David Waern at 2009-11-28T15:05:03+00:00
Remove cruft due to compatibility with older GHCs
- - - - -
46fbbe9d by David Waern at 2009-11-28T15:07:50+00:00
Add a documentation header to Haddock.Convert
- - - - -
c3d2cc4a by David Waern at 2009-11-28T15:10:14+00:00
Remove unused H.Utils.FastMutInt2
- - - - -
490aba80 by David Waern at 2009-11-28T15:36:36+00:00
Rename Distribution.Haddock into Documentation.Haddock
- - - - -
33ee2397 by David Waern at 2009-11-28T15:36:47+00:00
Fix error message
- - - - -
a5a3b950 by David Waern at 2009-11-28T16:58:39+00:00
Add a test flag that brings in QuickCheck
- - - - -
fa049e13 by David Waern at 2009-11-28T19:32:18+00:00
Say that we want quickcheck 2
- - - - -
f32b0d9b by David Waern at 2009-11-28T19:32:40+00:00
Add an Arbitrary instance for HsDoc
- - - - -
da9a8bd7 by David Waern at 2009-11-28T20:15:30+00:00
Rename HsDoc back into Doc
- - - - -
edb60101 by David Waern at 2009-11-28T22:16:16+00:00
Move H.Interface.Parse/Lex to H.Parse/Lex

These are not just used to build Interfaces.

- - - - -
0656a9b8 by David Waern at 2009-11-28T23:12:14+00:00
Update version number in test suite
- - - - -
5e8c6f4a by David Waern at 2009-12-21T14:12:41+00:00
Improve doc of DocName
- - - - -
7868e551 by Ian Lynagh at 2009-09-22T10:43:03+00:00
TAG GHC 6.12-branch created
- - - - -
0452a3ea by Ian Lynagh at 2009-12-15T12:46:07+00:00
TAG GHC 6.12.1 release
- - - - -
65e9be62 by David Waern at 2009-12-21T16:58:58+00:00
Update CHANGES
- - - - -
145cee32 by David Waern at 2009-12-21T16:59:09+00:00
TAG 2.6.0
- - - - -
3c552008 by David Waern at 2009-12-22T17:11:14+00:00
Update ANNOUNCE
- - - - -
931f9db4 by David Waern at 2010-01-22T19:57:17+00:00
Convert haddock.vim to use unix newlines
- - - - -
4e56588f by David Waern at 2010-01-22T22:11:17+00:00
Remove unnecessary (and inexplicable) uses of nub
- - - - -
744bb4d1 by David Waern at 2010-01-22T22:12:14+00:00
Follow move of parser and lexer
- - - - -
e34bab14 by David Waern at 2010-01-22T22:49:13+00:00
Use findProgramLocation instead of findProgramOnPath in runtests.hs
- - - - -
8d39891b by Isaac Dupree at 2010-01-14T18:53:18+00:00
fix html arg-doc off-by-one and silliness
- - - - -
9401f2e9 by David Waern at 2010-01-22T22:57:03+00:00
Create a test for function argument docs
- - - - -
507a82d7 by David Waern at 2010-01-22T23:24:47+00:00
Put parenthesis around type signature arguments of function type
- - - - -
8a305c28 by David Waern at 2010-01-23T17:26:59+00:00
Add reference file for the FunArgs test
- - - - -
1309d5e1 by David Waern at 2010-01-24T16:05:08+00:00
Improve FunArg test and update Test.html.ref
- - - - -
2990f055 by Yitzchak Gale at 2010-02-14T16:03:46+00:00
Do not generate illegal character in HTML ID attribute.
- - - - -
c5bcab7a by David Waern at 2010-02-22T22:10:30+00:00
Fix Haddock markup error in comment
- - - - -
c6416a73 by David Waern at 2010-02-24T22:55:08+00:00
Large additions to the Haddock API

Also improved and added more doc comments.

- - - - -
57d289d7 by David Waern at 2010-02-24T22:58:02+00:00
Remove unused ifaceLocals
- - - - -
80528d93 by David Waern at 2010-02-25T21:05:09+00:00
Add HaddockModInfo to the API
- - - - -
82806848 by David Waern at 2010-02-25T21:05:27+00:00
Wibble
- - - - -
744cad4c by David Waern at 2010-02-25T23:30:59+00:00
Make it possible to run a single test
- - - - -
6a806e4c by David Waern at 2010-03-14T14:19:39+00:00
Bump version number
- - - - -
a5a8e4a7 by David Waern at 2010-03-14T14:36:35+00:00
Update ANNOUNCE
- - - - -
6f05435e by Simon Hengel at 2010-03-15T20:52:42+00:00
Add missing dependencies for 'library' in haddock.cabal
- - - - -
faefe2bd by David Waern at 2010-03-15T22:29:37+00:00
Solve conflicts
- - - - -
9808ad52 by David Waern at 2010-03-15T22:51:21+00:00
Bump version number
- - - - -
eb0bf60b by David Waern at 2010-03-15T22:52:32+00:00
Update CHANGES
- - - - -
f95cd891 by David Waern at 2010-03-15T23:01:06+00:00
Add Paths_haddock to other-modules of library
- - - - -
65997b0a by David Waern at 2010-03-15T23:14:59+00:00
Update CHANGES
- - - - -
7e251731 by David Waern at 2010-03-15T23:15:30+00:00
Bump version number
- - - - -
c9cd0ddc by David Waern at 2010-03-16T00:28:34+00:00
Fix warning
- - - - -
1cac2d93 by Simon Peyton Jones at 2010-01-04T15:22:16+00:00
Fix imports for new location of splitKindFunTys
- - - - -
474f26f6 by Simon Peyton Jones at 2010-02-10T14:36:06+00:00
Update Haddock for quasiquotes
- - - - -
0dcc06c0 by Simon Peyton Jones at 2010-02-10T10:59:45+00:00
Track changes in HsTyVarBndr
- - - - -
2d84733a by Simon Peyton Jones at 2010-02-10T14:52:44+00:00
Track HsSyn chnages
- - - - -
9e3adb8b by Ian Lynagh at 2010-02-20T17:09:42+00:00
Resolve conflicts
- - - - -
a3e72ff8 by Simon Peyton Jones at 2010-03-04T13:05:16+00:00
Track change in HsUtils; and use a nicer function not an internal one
- - - - -
27994854 by David Waern at 2010-03-18T22:22:27+00:00
Fix build with GHC 6.12.1
- - - - -
11f6e488 by David Waern at 2010-03-18T22:24:09+00:00
Bump version in test reference files
- - - - -
0ef2f11b by David Waern at 2010-03-20T00:56:30+00:00
Fix library part of cabal file when in ghc tree
- - - - -
3f6146ff by Mark Lentczner at 2010-03-20T22:30:11+00:00
First, experimental XHTML rendering
    switch to using the xhtml package

    copied Html.hs to Xhtml.hs
        and split into sub-modules under Haddock/Backends/Xhtml
        and detabify

    moved footer into div, got ready for iface change
    headers converted to semantic markup
    contents in semantic markup
    summary as semantic markup
    description in semantic markup, info block in header fixed

    factored out rendering so during debug it can be readable
        (see renderToString)


- - - - -
b8ab329b by Mark Lentczner at 2010-03-20T22:54:01+00:00
apply changes to Html.hs to Xhtml/*.hs
	incorporate changes that were made between the time Html.hs
	was copied and split into Xhtml.hs and Xhtml/*.hs
	includes patchs after "Wibble" (!) through "Fix build with GHC 6.12.1"

- - - - -
73df2433 by Ian Lynagh at 2010-03-20T21:56:37+00:00
Follow LazyUniqFM->UniqFM in GHC
- - - - -
db4f602b by David Waern at 2010-03-29T22:00:01+00:00
Fix build with GHC 6.12
- - - - -
d8dca088 by Simon Hengel at 2010-04-02T16:39:55+00:00
Add missing dependencies to cabal file
- - - - -
e2adc437 by Simon Hengel at 2010-04-02T14:08:40+00:00
Add markup support for interactive examples
- - - - -
e882ac05 by Simon Hengel at 2010-04-02T14:11:53+00:00
Add tests for interactive examples
- - - - -
5a07a6d3 by David Waern at 2010-04-07T17:05:20+00:00
Propagate source positions from Lex.x to Parse.y
- - - - -
6493b46f by David Waern at 2010-04-07T21:48:57+00:00
Let runtests.hs die when haddock has not been built
- - - - -
5e34423e by David Waern at 2010-04-07T22:01:13+00:00
Make runtests.hs slightly more readable
- - - - -
321d59b3 by David Waern at 2010-04-07T22:13:27+00:00
Fix haskell/haddock#75

Add colons to the $ident character set. 

- - - - -
37b08b8d by David Waern at 2010-04-08T00:32:52+00:00
Fix haskell/haddock#118

Avoid being too greedy when lexing URL markup (<..>), in order to allow
multiple URLs on the same line. Do the same thing with <<..>> and #..#.

- - - - -
df8feac9 by David Waern at 2010-04-08T00:57:33+00:00
Make it easier to add new package deps to test suite

This is a hack - we should use Cabal to get the package details instead.

- - - - -
1ca6f84b by David Waern at 2010-04-08T01:03:06+00:00
Add ghc-prim to test suite deps
- - - - -
27371e3a by Simon Hengel at 2010-04-08T19:26:34+00:00
Let parsing fails on paragraphs that are immediately followed by an
example

This is more consistent with the way we treat code blocks.

- - - - -
83096e4a by David Waern at 2010-04-08T21:20:00+00:00
Improve function name
- - - - -
439983ce by David Waern at 2010-04-10T10:46:14+00:00
Fix haskell/haddock#112

No link was generated for 'Addr#' in a doc comment. The reason was simply that
the identifier didn't parse. We were using parseIdentifier from the GHC API,
with a parser state built from 'defaultDynFlags'. If we pass the dynflags of
the module instead, the right options are turned on on while parsing the
identifer (in this case -XMagicHash), and the parse succeeds.

- - - - -
5c0d35d7 by David Waern at 2010-04-10T10:54:06+00:00
Rename startGhc into withGhc
- - - - -
dca081fa by Simon Hengel at 2010-04-12T19:09:16+00:00
Add documentation for interactive examples
- - - - -
c7f26bfa by David Waern at 2010-04-13T00:51:51+00:00
Slight fix to the documentation of examples
- - - - -
06eb7c4c by David Waern at 2010-04-13T00:57:05+00:00
Rename Interactive Examples into Examples (and simplify explanation)
- - - - -
264830cb by David Waern at 2010-05-10T20:07:27+00:00
Update CHANGES with info about 2.6.1
- - - - -
8e5d4514 by Simon Hengel at 2010-04-18T18:16:54+00:00
Add unit tests for parser
- - - - -
68297f40 by David Waern at 2010-05-10T21:53:37+00:00
Improve testsuite README
- - - - -
f04eb6e4 by David Waern at 2010-05-11T19:14:31+00:00
Re-organise the testsuite structure
- - - - -
a360f710 by David Waern at 2010-05-11T19:18:03+00:00
Shorten function name
- - - - -
1d5dd359 by David Waern at 2010-05-11T21:40:02+00:00
Update runtests.hs following testsuite re-organisation
- - - - -
ffebe217 by David Waern at 2010-05-11T21:40:10+00:00
Update runtests.hs to use base-4.2.0.1
- - - - -
635de402 by David Waern at 2010-05-11T21:41:11+00:00
Update runparsetests.hs following testsuite reorganisation
- - - - -
72137910 by Ian Lynagh at 2010-05-06T20:43:06+00:00
Fix build
- - - - -
1a80b76e by Ian Lynagh at 2010-05-06T22:25:29+00:00
Remove redundant import
- - - - -
1031a80c by Simon Peyton Jones at 2010-05-07T13:21:09+00:00
Minor wibbles to HsBang stuff
- - - - -
dd8e7fe5 by Ian Lynagh at 2010-05-08T15:22:00+00:00
GHC build system: Follow "rm" variable changes
- - - - -
7f5e6748 by David Waern at 2010-05-13T11:53:02+00:00
Fix build with GHC 6.12.2
- - - - -
7953d4d8 by David Waern at 2010-05-13T18:45:01+00:00
Fixes to comments only
- - - - -
8ae8eb64 by David Waern at 2010-05-13T18:57:26+00:00
ModuleMap -> IfaceMap
- - - - -
1c3eadc6 by David Waern at 2010-05-13T19:03:13+00:00
Fix whitespace style issues
- - - - -
e96783c0 by David Waern at 2010-05-13T19:08:53+00:00
Fix comment
- - - - -
c998a78b by David Waern at 2010-05-13T19:39:00+00:00
Position the module header the same way everywhere
Silly, but nice with some consistency :-)

- - - - -
b48a714e by David Waern at 2010-05-13T19:41:32+00:00
Position of module header, this time in the HTML backends
- - - - -
f9bfb12e by David Waern at 2010-05-13T19:43:05+00:00
Two newlines between declarations in Main
- - - - -
071d44c7 by David Waern at 2010-05-13T19:44:21+00:00
Newlines in Convert
- - - - -
036346db by David Waern at 2010-05-13T19:46:47+00:00
Fix a few stylistic issues in H.InterfaceFile
- - - - -
f0b8379e by David Waern at 2010-05-13T19:47:53+00:00
Add newlines to H.ModuleTree
- - - - -
27409f8e by David Waern at 2010-05-13T19:51:10+00:00
Fix stylistic issues in H.Utils
- - - - -
24774a11 by David Waern at 2010-05-13T20:00:43+00:00
Structure H.Types better
- - - - -
7b6f5e40 by David Waern at 2010-05-13T20:01:04+00:00
Remove bad Arbitrary instance
- - - - -
fac9f1f6 by David Waern at 2010-05-13T20:05:50+00:00
Get rid of H.Utils.pathJoin and use System.FilePath.joinPath instead
- - - - -
fe6d00c4 by David Waern at 2010-05-13T20:51:55+00:00
Export a couple of more types from the API
- - - - -
b2e33a5f by David Waern at 2010-05-13T21:27:51+00:00
Improve doc comment for Interface
- - - - -
c585f2ce by David Waern at 2010-05-13T21:30:14+00:00
Improve documentation of Haddock.Interface
- - - - -
e6791db2 by David Waern at 2010-05-13T22:07:35+00:00
Remove meaningless comments
- - - - -
7801b390 by David Waern at 2010-05-14T17:53:33+00:00
Remove unused modules
- - - - -
f813e937 by David Waern at 2010-05-14T17:55:17+00:00
Re-direct compilation output to a temporary directory
Also add a flag --no-tmp-comp-dir that can be used to get the old behaviour of
writing compilation files to GHC's output directory (default ".").

- - - - -
e56737ec by David Waern at 2010-05-14T18:06:11+00:00
Wibble
- - - - -
e40b0447 by David Waern at 2010-05-14T19:01:52+00:00
Move flag evaluation code from Main to Haddock.Options
Determining the value of "singular" flags (by e.g. taking the last occurrence
of the flag) and other flag evaluation should done in Haddock.Options which is
the module that is supposed to define the command line interface. This makes
Main a bit easier on the eyes as well.

- - - - -
27091f57 by David Waern at 2010-05-14T19:05:10+00:00
Wibble
- - - - -
c658cf61 by David Waern at 2010-05-14T19:06:49+00:00
Re-order things in Haddock.Options a bit
- - - - -
8cfdd342 by David Waern at 2010-05-14T19:20:29+00:00
De-tabify Haddock.Options and fix other whitespace issues
- - - - -
0df16b62 by David Waern at 2010-05-14T19:25:07+00:00
Improve comments
- - - - -
80b38e2b by David Waern at 2010-05-14T19:26:42+00:00
Whitespace police
- - - - -
fe580255 by David Waern at 2010-05-14T19:31:23+00:00
Wibbles to comments
- - - - -
a2b43fad by David Waern at 2010-05-14T20:24:32+00:00
Move some more flag functions to Haddock.Options
- - - - -
3f895547 by David Waern at 2010-05-14T20:37:12+00:00
Make renderStep a top-level function in Main
- - - - -
5cdca11d by David Waern at 2010-05-14T20:39:27+00:00
Spelling in comment
- - - - -
ad98d14c by David Waern at 2010-05-14T20:40:26+00:00
Comment fixes
- - - - -
0bb9218f by David Waern at 2010-05-14T20:49:01+00:00
Whitespace police
- - - - -
0f0a533f by David Waern at 2010-05-15T16:42:29+00:00
Improve description of --dump-interface
- - - - -
5b2833ac by David Waern at 2010-05-15T17:16:53+00:00
Document --no-tmp-comp-dir
- - - - -
8160b170 by David Waern at 2010-05-15T17:18:59+00:00
Wibble
- - - - -
570dbe33 by David Waern at 2010-05-18T21:15:38+00:00
HLint police
- - - - -
204e425f by David Waern at 2010-05-18T21:16:30+00:00
HLint police
- - - - -
6db657ac by David Waern at 2010-05-18T21:16:37+00:00
Wibble
- - - - -
b942ccd7 by Simon Marlow at 2010-06-02T08:27:30+00:00
Interrupted disappeared in GHC 6.13 (GHC ticket haskell/haddock#4100)
- - - - -
3b94a819 by Simon Marlow at 2010-06-02T08:45:08+00:00
Allow base-4.3
- - - - -
c5a1fb7c by Simon Marlow at 2010-06-02T09:03:04+00:00
Fix compilation with GHC 6.13
- - - - -
6181296c by David Waern at 2010-06-08T21:09:05+00:00
Display name of prologue file when parsing it fails
- - - - -
7cbc6f60 by Ian Lynagh at 2010-06-13T16:20:25+00:00
Remove redundant imports
- - - - -
980c804b by Simon Marlow at 2010-06-22T08:41:50+00:00
isLocalAndTypeInferenced: fix for local module names overlapping package modules
- - - - -
d74d4a12 by Simon Marlow at 2010-06-23T12:03:27+00:00
Unresolved identifiers in Doc get replaced with DocMonospaced
rather than plain strings

- - - - -
d8546783 by Simon Marlow at 2010-06-30T12:45:17+00:00
LaTeX backend (new options: --latex, --latex-style=<style>)
- - - - -
437afa9e by David Waern at 2010-07-01T12:02:44+00:00
Fix a few stylistic whitespace issues in LaTeX backend
- - - - -
85bc1fae by David Waern at 2010-07-01T15:42:45+00:00
Make runtest.hs work with GHC 6.12.3 (we should really stop hard coding this)
- - - - -
7d2eb86f by David Waern at 2010-07-01T15:43:33+00:00
Update test following Simon's patch to render unresolved names in monospaced font
- - - - -
08fcbcd2 by David Waern at 2010-07-01T16:12:18+00:00
Warning police
- - - - -
d04a8d7a by David Waern at 2010-07-04T14:53:39+00:00
Fix a bug in attachInstances

We didn't look for instance docs in all the interfaces of the package. This had
the effect of instance docs not always showing up under a declaration. I took
the opportunity to clean up the code in H.I.AttachInstances a bit as well. More
cleanup is needed, however.

- - - - -
d10344eb by Simon Hengel at 2010-07-10T09:19:04+00:00
Add missing dependencies to cabal file
- - - - -
24090531 by Mark Lentczner at 2010-03-21T04:51:16+00:00
add exports to Xhtml modules
- - - - -
84f9a333 by Mark Lentczner at 2010-04-03T19:14:22+00:00
clean up Doc formatting code
- add CSS for lists 
- renderToString now uses showHtml since prettyHtml messes up <pre> sections

- - - - -
bebccf52 by Mark Lentczner at 2010-04-04T04:51:08+00:00
tweak list css
- - - - -
0c2aeb5e by Mark Lentczner at 2010-04-04T06:24:14+00:00
all decls now generate Html not HtmlTable
	- ppDecl return Html, and so now do all of the functions it calls
	- added some internal tables to some decls, which is wrong, and will have
		to be fixed
	- decl "Box" functions became "Elem" functions to make clear they aren't
		in a table anymore (see Layout.hs)
	- docBox went away, as only used in one place (and its days are numbered)
	- cleaned up logic in a number of places, removed dead code
	- added maybeDocToHtml which simplified a number of places in the code

- - - - -
dbf73e6e by Mark Lentczner at 2010-04-05T05:02:43+00:00
clean up processExport and place a div around each decl
- - - - -
e25b7e9f by Mark Lentczner at 2010-04-10T21:23:21+00:00
data decls are now a sequence of paragraphs, not a table
- - - - -
89ee0294 by Mark Lentczner at 2010-04-10T21:29:16+00:00
removed commented out code that can't be maintained
- - - - -
d466f536 by Mark Lentczner at 2010-04-12T04:56:27+00:00
removed declWithDoc and cleaned up data decls in summary
- - - - -
ed755832 by Mark Lentczner at 2010-04-12T05:07:53+00:00
merge in markupExample changes
- - - - -
c36f51fd by Mark Lentczner at 2010-04-25T04:56:37+00:00
made record fields be an unordList, not a table
- - - - -
ed3a28d6 by Mark Lentczner at 2010-04-25T05:23:28+00:00
fixed surround of instance and constructor tables
- - - - -
0e35bbc4 by Mark Lentczner at 2010-04-25T05:36:59+00:00
fix class member boxes in summary
- - - - -
5041749b by Mark Lentczner at 2010-04-25T05:38:35+00:00
remove unused bodyBox
- - - - -
e91724db by Mark Lentczner at 2010-04-25T06:26:10+00:00
fixed javascript quoting/escpaing issue
- - - - -
f4abbb73 by Mark Lentczner at 2010-05-03T23:04:31+00:00
adjust css for current markup
- - - - -
e75fec4c by Mark Lentczner at 2010-05-04T06:14:34+00:00
added assoicated types and methods back into class decls
- - - - -
84169323 by Mark Lentczner at 2010-05-24T13:13:42+00:00
merge in changes from the big-whitespace cleanup
- - - - -
3c1c872e by Mark Lentczner at 2010-06-11T21:03:58+00:00
adjust synopsis and bottom bar spacing
- - - - -
3c1f9ef7 by Mark Lentczner at 2010-06-11T21:14:44+00:00
fix missing space in "module" lines in synoposis
- - - - -
9a137e6d by Mark Lentczner at 2010-06-11T21:34:08+00:00
changed tt elements to code elements
- - - - -
50f71ef1 by Mark Lentczner at 2010-06-11T23:27:46+00:00
factored out ppInstances
- - - - -
3b9a9de5 by Mark Lentczner at 2010-06-17T17:36:01+00:00
push single constructors (newtype) onto line with decl
- - - - -
e0f8f2ec by Mark Lentczner at 2010-06-17T22:20:56+00:00
remove <++> connector
- - - - -
56c075dd by Mark Lentczner at 2010-07-13T05:26:21+00:00
change to new page structure
- - - - -
04be6ca7 by Mark Lentczner at 2010-07-14T04:21:55+00:00
constructors and args as dl lists, built in Layout.hs
- - - - -
65aeafc2 by Mark Lentczner at 2010-07-14T05:38:32+00:00
better interface to subDecls
- - - - -
72032189 by Mark Lentczner at 2010-07-14T07:04:10+00:00
made subDecl tables looks just so
- - - - -
b782eca2 by Mark Lentczner at 2010-07-14T16:00:54+00:00
convert args to SubDecl format
- - - - -
cc75e98f by Mark Lentczner at 2010-07-14T16:28:53+00:00
convert instances to SubDecl
- - - - -
34e2aa5a by Mark Lentczner at 2010-07-14T21:07:32+00:00
removing old table cruft from Layout.hs
- - - - -
d5810d95 by Mark Lentczner at 2010-07-14T21:54:58+00:00
methods and associated types in new layout scheme
- - - - -
65ef9579 by Mark Lentczner at 2010-07-14T23:43:42+00:00
clean up synopsis lists
- - - - -
e523318f by Mark Lentczner at 2010-07-15T05:02:26+00:00
clean up of anchors
- - - - -
1215dfc5 by Mark Lentczner at 2010-07-15T23:53:01+00:00
added two new themes and rough css switcher
- - - - -
7f0fd36f by Mark Lentczner at 2010-07-16T04:57:38+00:00
fixed package catpion, added style menu
- - - - -
0dd4999c by Mark Lentczner at 2010-07-16T20:12:39+00:00
new output for mini_ pages
- - - - -
64b2810b by Mark Lentczner at 2010-07-16T20:58:41+00:00
reformat index-frames
- - - - -
3173f555 by Mark Lentczner at 2010-07-16T22:41:53+00:00
convert index to new markup
- - - - -
b0a4b7c9 by Mark Lentczner at 2010-07-17T04:07:22+00:00
convert index.html to new markup, adjust module markup
- - - - -
8261ae1e by Mark Lentczner at 2010-07-17T05:07:29+00:00
classing styling of ancillary pages
- - - - -
2a4fb025 by Mark Lentczner at 2010-07-17T05:11:45+00:00
clean up Layout.hs: no more vanillaTable
- - - - -
87eec685 by Mark Lentczner at 2010-07-17T05:35:16+00:00
clean up Util.hs
- - - - -
d304e9b0 by Mark Lentczner at 2010-07-17T05:38:50+00:00
qualify import of XHtml as XHtml
- - - - -
7dc05807 by Mark Lentczner at 2010-07-17T06:17:53+00:00
factored out head element generation
- - - - -
9cdaec9e by Mark Lentczner at 2010-07-17T06:44:54+00:00
refactored out main page body generation
- - - - -
8a51019e by Mark Lentczner at 2010-07-17T06:48:20+00:00
moved footer into only place that used it
- - - - -
efa479da by Mark Lentczner at 2010-07-17T18:48:30+00:00
styling auxillary pages for tibbe and snappy themes
- - - - -
81de5509 by Mark Lentczner at 2010-07-18T04:41:38+00:00
fixed alphabet on index page, and styling of it and packages in module lists
- - - - -
20718c1a by Mark Lentczner at 2010-07-18T05:34:29+00:00
cleaned up div functions in Layout.hs
- - - - -
60d50453 by Mark Lentczner at 2010-07-18T05:48:39+00:00
added content div to main pages
- - - - -
ed16561c by Mark Lentczner at 2010-07-18T06:12:22+00:00
add .doc class to documentation blocks
- - - - -
f5c781b0 by Mark Lentczner at 2010-07-19T05:20:53+00:00
refactoring of anchor ID and fragment handling
- - - - -
a69a93bf by Mark Lentczner at 2010-07-19T05:35:55+00:00
remove an explicit bold tag - replace with .def class
- - - - -
d76c7225 by Mark Lentczner at 2010-07-19T06:56:15+00:00
rename Haddock.Backends.Xhtml.Util to Utils
- - - - -
5a58c0da by David Waern at 2010-07-21T13:30:54+00:00
Remove trailing whitespace in Haddock.Backends.Xhtml
- - - - -
0652aa17 by David Waern at 2010-07-21T13:33:21+00:00
Align a few comments
- - - - -
785776c3 by David Waern at 2010-07-21T13:39:04+00:00
Remove trailing whitespace in H.B.X.Decl
- - - - -
71a30710 by David Waern at 2010-07-21T13:44:27+00:00
Remove more trailing whitespace
- - - - -
38750394 by David Waern at 2010-07-21T13:50:43+00:00
Style police
- - - - -
3023d940 by David Waern at 2010-07-21T14:01:22+00:00
Style police in H.B.X.Decl
- - - - -
df16e9e6 by David Waern at 2010-07-21T14:14:45+00:00
Style police in H.B.X.DocMarkup
- - - - -
6020e321 by David Waern at 2010-07-21T14:17:32+00:00
More style police
- - - - -
86ad8bf5 by David Waern at 2010-07-21T14:21:02+00:00
Style police in H.B.Xhtml
- - - - -
aea27d03 by David Waern at 2010-07-21T14:42:03+00:00
Fix warnings in LaTeX backend
- - - - -
2aff34a9 by David Waern at 2010-07-21T14:50:46+00:00
Style police in LaTeX backend (mainly more newlines)
- - - - -
e517162d by David Waern at 2010-07-21T15:05:47+00:00
Doc sections in Main
- - - - -
b971aa0c by David Waern at 2010-07-21T15:06:17+00:00
Trailing whitespace in Documentation.Haddock
- - - - -
f11628fb by David Waern at 2010-07-21T15:07:06+00:00
Trailing whitespace in Haddock.Convert
- - - - -
cbaf284c by David Waern at 2010-07-21T15:08:11+00:00
Style police in Haddock.GhcUtils
- - - - -
71feb77b by David Waern at 2010-07-21T15:09:06+00:00
Style police in Haddock.InterfaceFile
- - - - -
0a9c80e6 by David Waern at 2010-07-21T15:11:33+00:00
Whitespace police
- - - - -
6168376c by David Waern at 2010-07-21T15:16:35+00:00
Style police in Haddock.Utils
- - - - -
9fe4dd90 by David Waern at 2010-07-21T15:19:31+00:00
Add -fwarn-tabs
- - - - -
a000d752 by Mark Lentczner at 2010-07-20T17:25:52+00:00
move CSS Theme functions into Themes.hs
- - - - -
b52b440f by Mark Lentczner at 2010-07-20T17:29:35+00:00
add Thomas Schilling's theme
- - - - -
e43fa7e8 by Mark Lentczner at 2010-07-21T04:49:34+00:00
correct icon used with Snappy theme
- - - - -
ba5092d3 by Mark Lentczner at 2010-07-21T04:56:47+00:00
apply Tibbe's updates to his theme
- - - - -
7804eef6 by Mark Lentczner at 2010-07-21T05:15:49+00:00
space between "Style" and the downward triangle
- - - - -
7131d4c6 by Mark Lentczner at 2010-07-21T17:43:35+00:00
merge with David's source cleanups
- - - - -
ee65f1cb by David Waern at 2010-07-22T16:50:46+00:00
Fix a bug where we allowed --hoogle, --latex, etc without input files
- - - - -
e413ff7a by David Waern at 2010-07-22T17:21:58+00:00
Improve function name
- - - - -
a0fd14f3 by Simon Marlow at 2010-06-30T15:34:32+00:00
fix warnings
- - - - -
31f73d2a by David Waern at 2010-07-22T19:29:41+00:00
Solve conflicts
- - - - -
d563b4a5 by Simon Marlow at 2010-06-30T15:34:37+00:00
fix warning
- - - - -
412b6469 by David Waern at 2010-07-22T19:31:28+00:00
Solve conflict
- - - - -
35174b94 by Ian Lynagh at 2010-07-06T17:27:16+00:00
Follow mkPState argument order change
- - - - -
b5c3585c by Simon Marlow at 2010-07-14T08:49:21+00:00
common up code for instance rendering
- - - - -
d8009560 by Simon Marlow at 2010-07-14T12:37:11+00:00
fix warnings
- - - - -
a6d88695 by David Waern at 2010-07-24T15:33:33+00:00
Fix build with ghc < 6.13
- - - - -
94cf9de1 by David Waern at 2010-07-24T15:34:37+00:00
Remove conflict left-over
- - - - -
313b15c0 by Mark Lentczner at 2010-07-21T22:09:04+00:00
reorganization of nhaddock.css with tibbe
- - - - -
9defed80 by Mark Lentczner at 2010-07-21T22:42:14+00:00
further cleanup of nhaddock.css, float TOC, support aux. pages
- - - - -
6d944c1b by Mark Lentczner at 2010-07-22T06:22:23+00:00
remove old HTML backend
- - - - -
b3e8cba5 by Mark Lentczner at 2010-07-22T06:43:32+00:00
remove --html-help support - it was old, out-of-date, and mostly missing
- - - - -
d2654a08 by Mark Lentczner at 2010-07-22T21:45:34+00:00
tweaks to nhaddock.css
- - - - -
f73b285c by Mark Lentczner at 2010-07-23T06:19:35+00:00
command like processing for theme selection
  The bulk of the change is threadnig the selected theme set through functions
  in Xhtml.hs so that the selected themes can be used when generating the page
  output. There isn't much going on in most of these changes, just passing it
  along. The real work is all done in Themes.hs.

- - - - -
8bddc90d by Mark Lentczner at 2010-07-23T06:58:31+00:00
drop --themes support, add named theme support
  decided that --themes was silly - no one would do that, just use
    multiple --theme arguments
  made --theme a synonym for --css and -c
  made those arguments, if no file is found, look up the argument as the
    name of a built in theme

  all of this let's haddock be invoked with "--theme=classic" for example.

- - - - -
20cafd4f by Mark Lentczner at 2010-07-23T17:44:29+00:00
rename --default-themes to --built-in-themes
- - - - -
0fe41307 by Mark Lentczner at 2010-07-23T18:33:02+00:00
tweaks to theme for info table, headings, and tables
- - - - -
cba4fee0 by Mark Lentczner at 2010-07-23T19:13:59+00:00
tweaks for dl layout, though still not used
- - - - -
463fa294 by Mark Lentczner at 2010-07-23T21:07:19+00:00
tweak look of mini pages, keywords, and preblocks
- - - - -
5472fc02 by Mark Lentczner at 2010-07-24T05:36:15+00:00
slide out Synopsis drawer
- - - - -
9d5d5de5 by Mark Lentczner at 2010-07-24T06:02:42+00:00
extend package header and footer to edges of page
- - - - -
a47c91a2 by Mark Lentczner at 2010-07-24T06:28:44+00:00
fields are def lists, tweak css for style menu, mini pages, arguments
- - - - -
ca20f23b by Mark Lentczner at 2010-07-24T16:55:22+00:00
excisting last vestiges of the --xhtml flag
- - - - -
71fb012e by Mark Lentczner at 2010-07-25T18:47:49+00:00
change how collapsing sections are done
  make whole .caption be the target
  improve javascript for class toggling
  have plus/minus images come from .css, not img tags

- - - - -
c168c8d3 by Mark Lentczner at 2010-07-26T00:32:05+00:00
reorganize files in the html lib data dir
- - - - -
93324301 by Mark Lentczner at 2010-07-26T01:27:42+00:00
cleaned up Themes.hs
- - - - -
ad3b5dd4 by Mark Lentczner at 2010-07-26T02:39:15+00:00
make module list use new collapsers
- - - - -
1df9bfc6 by Mark Lentczner at 2010-07-27T19:09:25+00:00
remove Tibbe theme
- - - - -
8b9b01b3 by Mark Lentczner at 2010-07-27T20:04:03+00:00
move themes into html dir with .theme and .std-theme extensions
- - - - -
a7beb965 by Mark Lentczner at 2010-07-27T21:06:34+00:00
give a class to empty dd elements so they can be hidden
- - - - -
a258c117 by Mark Lentczner at 2010-07-27T21:23:58+00:00
remove custom version of copyFile in Xhtml.hs
- - - - -
b70dba6e by Mark Lentczner at 2010-07-27T22:12:45+00:00
apply margin changes to pre and headings as per group decision, and small cleanups
- - - - -
e6f722a2 by Mark Lentczner at 2010-07-28T00:03:12+00:00
make info block and package bar links be floatable by placing them first in the dom tree
- - - - -
c8278867 by Mark Lentczner at 2010-07-28T19:01:18+00:00
styling source links on declarations
- - - - -
88fdc399 by Mark Lentczner at 2010-07-29T01:12:46+00:00
styling tweaks
	don't generate an empty li for absent style menu in links area
	update css for Classic and Snappy to handle:
		dl lists
		links in package header and in declarations
		floating of links and info block in package and module headers

- - - - -
8a75b213 by Ian Lynagh at 2010-07-30T20:21:46+00:00
Fix build in GHC tree
- - - - -
ce8e18b3 by Simon Hengel at 2010-08-03T18:37:26+00:00
Adapt paths to data files in cabal file
- - - - -
9701a455 by Simon Hengel at 2010-08-07T13:20:27+00:00
Add missing dependency to cabal file
- - - - -
01b838d1 by Mark Lentczner at 2010-07-30T20:19:40+00:00
improved synopsis drawer: on click, not hover
- - - - -
7b6f3e59 by Mark Lentczner at 2010-07-30T23:38:55+00:00
put the synopsis back in the other themes
- - - - -
7b2904c9 by Mark Lentczner at 2010-08-11T11:11:26+00:00
close arrows on expanded synopsis drawer
- - - - -
ea19e177 by Mark Lentczner at 2010-08-12T21:16:45+00:00
width and font changes
	removed the max width restrictions on the page as a whole and the synopsis
	made the main font size smaller (nominally 14pt) and then tweaked most
	font sizes (relative) to be more consistent

- - - - -
5ced00c0 by Mark Lentczner at 2010-08-13T15:09:55+00:00
implemented YUI's CSS font approach
- - - - -
2799c548 by Mark Lentczner at 2010-08-13T15:11:59+00:00
adjusted margin to 2em, 1 wasn't enough
- - - - -
58f06893 by Mark Lentczner at 2010-08-13T15:48:44+00:00
removed underlining on hover for named anchors
	headings in interface lost thier a element, no need, just put id on heading
	css for a elements now only applies to those with href attribute

- - - - -
7aced4c4 by Mark Lentczner at 2010-08-13T15:50:22+00:00
more space between elements
- - - - -
5a3c1cce by Mark Lentczner at 2010-08-13T16:43:43+00:00
adjusted font sizes of auxilary pages per new scheme
- - - - -
487539ef by Mark Lentczner at 2010-08-13T21:43:41+00:00
add Frames button and clean up frames.html
- - - - -
c1a140b6 by Mark Lentczner at 2010-08-13T22:17:48+00:00
move frames button to js 
- - - - -
b0bdb68e by Mark Lentczner at 2010-08-14T03:44:46+00:00
build style menu in javascript
	moved to javascript, so as to not polute the content with the style menu
	removed menu building code in Themes.hs
	removed onclick in Utils.hs
changed text of button in header from "Source code" to "Source"
	more consistent with links in rest of page

- - - - -
43ab7120 by Mark Lentczner at 2010-08-16T15:15:37+00:00
font size and margin tweaks
- - - - -
c0b68652 by Mark Lentczner at 2010-08-17T18:19:52+00:00
clean up collapser logics
	javascript code for collapasble sections cleaned up
	rewrote class utilities in javascript to be more robust
	refactored utilities for generating collapsable sections
made toc be same color as synopsis
module list has needed clear attribute in CSS

- - - - -
5d573427 by Mark Lentczner at 2010-08-17T23:06:02+00:00
don't collapse entries in module list when clicking on links
- - - - -
8c307c4a by Mark Lentczner at 2010-08-17T23:21:43+00:00
add missing data file to .cabal
- - - - -
414bcfcf by Mark Lentczner at 2010-08-17T23:28:47+00:00
remove synopsis when in frames
- - - - -
ba0fa98a by Mark Lentczner at 2010-08-18T16:16:11+00:00
layout tweeks - mini page font size, toc color, etc.
- - - - -
63c1bed1 by Mark Lentczner at 2010-08-18T19:50:02+00:00
margin fiddling
- - - - -
c311c094 by Mark Lentczner at 2010-08-20T01:37:55+00:00
better synopsis handling logic - no flashing
- - - - -
f1fe5fa8 by Mark Lentczner at 2010-08-20T01:41:06+00:00
fix small layout issues
	mini frames should have same size top heading
	give info block dts some padding so they don't collide in some browsers

- - - - -
0de84d77 by Mark Lentczner at 2010-08-20T02:13:09+00:00
made style changing and cookies storage robust
- - - - -
1ef064f9 by Thomas Schilling at 2010-08-04T13:12:22+00:00
Make synopsis frame behave properly in Firefox.

In Firefox, pressing the back button first reverted the synopsis
frame, and only clicking the back button a second time would update
the main frame.

- - - - -
dd1c9a94 by Mark Lentczner at 2010-08-21T01:46:19+00:00
remove Snappy theme
- - - - -
2353a90d by Mark Lentczner at 2010-08-25T05:16:19+00:00
fix occasional v.scroll bars on pre blocks (I think)
- - - - -
459b8bf1 by Simon Hengel at 2010-08-08T10:12:45+00:00
Add createInterfaces' (a more high-level alternative to createInterfaces) to Haddock API
- - - - -
b1b68675 by David Waern at 2010-08-26T20:31:58+00:00
Follow recent API additions with some refactorings

Simon Hegel's patch prompted me to do some refactorings in Main,
Haddock.Documentation and Haddock.Interface. 

- - - - -
264d4d67 by David Waern at 2010-08-26T21:40:59+00:00
Get rid of GhcModule and related cruft

We can get everything we need directly from TypecheckedModule.

- - - - -
0feacec2 by Mark Lentczner at 2010-08-26T23:44:13+00:00
fixed CSS for ordered lists and def lists in doc blocks
- - - - -
2997e0c2 by Mark Lentczner at 2010-08-26T23:45:03+00:00
support both kinds of enumerated lists in doc markup
	The documentation for Haddock says enumerated lists can use either of
		(1) first item
		2. second item
	The second form wasn't actually supported


- - - - -
5d4ddeec by Mark Lentczner at 2010-08-27T21:29:48+00:00
fix broken header link margins
- - - - -
614456ba by Mark Lentczner at 2010-08-27T22:16:19+00:00
fix table of contents CSS
- - - - -
03f329a2 by David Waern at 2010-08-28T16:36:09+00:00
Update tests following switch to the Xhtml backend
- - - - -
ca689fa2 by Mark Lentczner at 2010-08-28T18:25:16+00:00
fix def lists
- - - - -
18e1d3d2 by Mark Lentczner at 2010-08-28T18:26:18+00:00
push footer to bottom of window
- - - - -
b0ab8d82 by David Waern at 2010-08-28T22:04:32+00:00
Whitespace police
- - - - -
2d217977 by David Waern at 2010-08-29T12:44:45+00:00
Remove Snappy data files
- - - - -
01e27d5f by David Waern at 2010-08-29T13:03:28+00:00
Add source entity path to --read-interface

You can now use this flag like this:

  --read-interface=<html path>,<source entity path>,<.haddock file> 

By "source entity path" I mean the same thing that is specified with the
--source-entity flag. The purpose of this is to be able to specify the source
entity path per package, to allow source links to work in the presence of
cross-package documentation.

When given two arguments or less the --read-interface flag behaves as before.

- - - - -
20bf4aaa by David Waern at 2010-08-29T13:11:03+00:00
Naming wibbles
- - - - -
ad22463f by Mark Lentczner at 2010-08-29T15:14:54+00:00
make portability block be a table - solves layout issues
- - - - -
97bd1ae6 by Mark Lentczner at 2010-08-29T15:17:42+00:00
update golden test for Test due to portability box change
- - - - -
d37e139e by Mark Lentczner at 2010-08-29T17:07:17+00:00
move TOC and Info blocks down 0.5em to improve layout issue w/Test.hs
- - - - -
acf52501 by David Waern at 2010-08-29T17:32:36+00:00
Allow building with ghc < 6.16
- - - - -
1cb34ed8 by Ian Lynagh at 2010-07-24T23:18:49+00:00
Flatten the dynflags before parsing
- - - - -
b36845b4 by Ian Lynagh at 2010-07-24T23:26:49+00:00
Follow flattenLanguageFlags -> flattenExtensionFlags rename
- - - - -
7f7fcc7e by David Waern at 2010-08-29T17:46:23+00:00
Use flattenExtensionFlags with ghc >= 6.13 only
- - - - -
13cf9411 by Ian Lynagh at 2010-08-01T18:09:54+00:00
Make the main haddock script versioned, and make plain "haddock" a symlink
- - - - -
495cbff2 by Ian Lynagh at 2010-08-18T18:57:24+00:00
Fix installation in the GHC build system
Data-files are now in subdirectories, so we need to handle that

- - - - -
88ebab0a by Ian Lynagh at 2010-08-18T19:43:53+00:00
GHC build system: Add all the data files to BINDIST_EXTRAS
- - - - -
65837172 by David Waern at 2010-08-29T20:12:34+00:00
Update Test
- - - - -
094bbaa2 by David Waern at 2010-08-29T20:55:14+00:00
Revert update to Test
- - - - -
a881cfb3 by David Waern at 2010-08-31T18:24:15+00:00
Bump version number
- - - - -
1fc8a3eb by David Waern at 2010-08-31T22:32:27+00:00
Update ANNOUNCE
- - - - -
ee1df9d0 by David Waern at 2010-08-31T22:33:11+00:00
Update CHANGES
- - - - -
394cc854 by David Waern at 2010-08-31T22:33:23+00:00
Update interface file versioning to work with ghc 6.14/15
- - - - -
7d03b79b by David Waern at 2010-08-31T22:36:00+00:00
Update test output following version change
- - - - -
a48d82d1 by Mark Lentczner at 2010-09-01T04:29:35+00:00
sort options in doc to match --help output
	removed --html-help option, as it is no longer supported

- - - - -
06561aeb by Mark Lentczner at 2010-09-01T05:29:32+00:00
update options documentation
	rewrote doc for --html
	added doc for --theme and --built-in-themes
	added --use-contents and --gen-contents

- - - - -
57dea832 by Mark Lentczner at 2010-09-01T05:31:27+00:00
slight wording change about Frames mode
- - - - -
fa1f6da3 by David Waern at 2010-09-01T10:57:44+00:00
Update doc configure script to find docbook stylesheets on arch linux
- - - - -
addff770 by David Waern at 2010-09-01T11:02:29+00:00
Wibble
- - - - -
8399006d by David Waern at 2010-09-01T11:19:21+00:00
Replace ghci> with >>> in example syntax
- - - - -
35074cf8 by David Waern at 2010-09-01T19:03:27+00:00
Improve docs for --no-tmp-comp-dir
- - - - -
0f8f8cfd by David Waern at 2010-09-02T11:22:27+00:00
Add a list of contributors to the user guide

Break out everyone thanked in the `Acknowledgements` chapter into a
separate contributor list and add everyone from `darcs show authors`.
We consider everyone who is thanked to be a contributor as a conservative
estimation :-)

I have added some more contributors that I know about, who were not in the
darcs history, but others may be missing. So please add anyone that you think 
is missing from the list.

- - - - -
42ccf099 by David Waern at 2010-09-02T11:29:22+00:00
Update copyright years in license
- - - - -
0d560479 by David Waern at 2010-09-02T11:38:52+00:00
Update release instructions
- - - - -
72ab7796 by David Waern at 2010-09-02T19:27:08+00:00
Add a note to ANNOUNCE
- - - - -
bf9d9c5d by David Waern at 2010-09-02T19:27:48+00:00
H.Utils needs FFI on Win+MinGW 
- - - - -
048ae44a by Mark Lentczner at 2010-09-04T23:19:47+00:00
make TOC group header identifiers validate
- - - - -
8c6faf36 by Simon Michael at 2010-09-22T07:12:34+00:00
add hints for cleaner darcs show authors output
- - - - -
9909bd17 by Simon Michael at 2010-09-22T17:58:06+00:00
print haddock coverage info on stdout when generating docs
A module's haddockable items are its exports and the module itself.
The output is lightly formatted so you can align the :'s and sort
for readability.

- - - - -
6da72171 by David Waern at 2010-10-03T21:31:24+00:00
Style wibble
- - - - -
2f8d8e4d by Tobias Brandt at 2010-08-27T07:01:21+00:00
adding the option to fully qualify identifiers
- - - - -
833be6c6 by Tobias Brandt at 2010-08-27T15:50:28+00:00
adding support for local and relative name qualification
- - - - -
df15c4e9 by Tobias Brandt at 2010-08-27T15:56:37+00:00
corrected qualification help message
- - - - -
449e9ce1 by David Waern at 2010-10-16T17:34:30+00:00
Solve conflicts
- - - - -
3469bda5 by David Waern at 2010-10-16T18:42:40+00:00
Use "qual" as an abbreviation for qualification instead of "quali" for consistency
- - - - -
97c2d728 by David Waern at 2010-10-16T18:47:07+00:00
Style police
- - - - -
ce14fbea by David Waern at 2010-10-16T21:15:25+00:00
Style police
- - - - -
fdf29e9d by David Waern at 2010-10-17T00:30:44+00:00
Add a pointer to the style guide
- - - - -
8e6b44e8 by rrnewton at 2010-10-24T03:19:28+00:00
Change to index pages: include an 'All' option even when subdividing A-Z.
- - - - -
755b131c by David Waern at 2010-11-14T19:39:36+00:00
Bump version
- - - - -
d0345a04 by David Waern at 2010-11-14T19:41:59+00:00
TAG 2.8.1
- - - - -
f6221508 by Simon Peyton Jones at 2010-09-13T09:53:00+00:00
Adapt to minor changes in internal GHC functions
- - - - -
1290713d by Ian Lynagh at 2010-09-15T10:37:18+00:00
Remove duplicate Outputable instance for Data.Map.Map
- - - - -
87f69eef by Ian Lynagh at 2010-09-21T15:01:10+00:00
Bump GHC dep upper bound
- - - - -
af36e087 by Ian Lynagh at 2010-09-21T15:12:02+00:00
Fix up __GLASGOW_HASKELL__ tests
- - - - -
ad67716c by Ian Lynagh at 2010-09-21T20:31:35+00:00
Don't build haddock is HADDOCK_DOCS is NO
- - - - -
63b3f1f5 by Ian Lynagh at 2010-09-21T21:39:51+00:00
Fixes for when HADDOCK_DOCS=NO
- - - - -
e92bfa42 by Ian Lynagh at 2010-09-29T21:15:38+00:00
Fix URL creation on Windows: Use / not \ in URLs. Fixes haskell/haddock#4353
- - - - -
66c55e05 by Ian Lynagh at 2010-09-30T17:03:34+00:00
Tidy up haddock symlink installation
In particular, it now doesn't get created if we aren't installing
haddock.

- - - - -
549b5556 by Ian Lynagh at 2010-10-23T21:17:14+00:00
Follow extension-flattening change in GHC
- - - - -
d7c2f72b by David Waern at 2010-11-14T20:17:55+00:00
Bump version to 2.8.2
- - - - -
6989a3a9 by David Waern at 2010-11-14T20:26:01+00:00
Solve conflict
- - - - -
055c6910 by Ian Lynagh at 2010-09-22T15:36:20+00:00
Bump GHC dep
- - - - -
c96c0763 by Simon Marlow at 2010-10-27T11:09:44+00:00
follow changes in the GHC API
- - - - -
45907129 by David Waern at 2010-11-07T14:00:58+00:00
Update the HCAR entry
- - - - -
61940b95 by David Waern at 2010-11-07T14:07:34+00:00
Make the HCAR entry smaller
- - - - -
aa590b7d by David Waern at 2010-11-14T21:30:59+00:00
Update HCAR entry with November 2010 version
- - - - -
587f9847 by David Waern at 2010-11-14T23:48:17+00:00
Require ghc >= 7.0
- - - - -
ff5c647c by David Waern at 2010-11-14T23:49:09+00:00
TAG 2.8.2
- - - - -
937fcb4f by David Waern at 2010-11-14T23:49:45+00:00
Solve conflict
- - - - -
8e5d0c1a by David Waern at 2010-11-15T21:09:50+00:00
Remove code for ghc < 7
- - - - -
3d47b70a by David Waern at 2010-11-15T21:11:06+00:00
Fix bad merge
- - - - -
7f4a0d8a by David Waern at 2010-11-15T21:13:57+00:00
Remove more ghc < 7 code
- - - - -
9ee34b50 by David Waern at 2010-11-15T21:31:25+00:00
Match all AsyncExceptions in exception handler
- - - - -
42849c70 by David Waern at 2010-11-15T21:35:31+00:00
Just say "internal error" instead of "internal Haddock or GHC error"
- - - - -
c88c809b by David Waern at 2010-11-15T21:44:19+00:00
Remove docNameOcc under the motto "don't name compositions"
- - - - -
b798fc7c by David Waern at 2010-11-15T23:27:13+00:00
Wibble
- - - - -
2228197e by David Waern at 2010-11-15T23:28:24+00:00
Rename the HCAR entry file
- - - - -
8a3f9090 by David Waern at 2010-11-16T00:05:29+00:00
Remove Haskell 2010 extensions from .cabal file
- - - - -
c7a0c597 by David Waern at 2010-11-16T00:10:28+00:00
Style wibbles
- - - - -
cde707a5 by David Waern at 2010-11-16T00:12:00+00:00
Remove LANGUAGE ForeignFunctionInterface pragmas
- - - - -
1dbda8ed by David Waern at 2010-11-16T00:17:21+00:00
Make a little more use of DoAndIfThenElse
- - - - -
4c45ff6e by David Waern at 2010-11-16T00:59:41+00:00
hlint police
- - - - -
d2feaf09 by David Waern at 2010-11-16T01:14:15+00:00
hlint police
- - - - -
99876e97 by David Waern at 2010-11-20T19:06:00+00:00
Haddock documentation updates
- - - - -
65ce6987 by David Waern at 2010-11-20T19:42:51+00:00
Follow the style guide closer in Haddock.Types and improve docs
- - - - -
28ca304a by tob.brandt at 2010-11-20T17:04:40+00:00
add full qualification for undocumented names
- - - - -
d61341e3 by David Waern at 2010-11-20T20:04:15+00:00
Re-structure qualification code a little
- - - - -
0057e4d6 by David Waern at 2010-11-20T20:07:55+00:00
Re-order functions
- - - - -
d7279afd by David Waern at 2010-11-21T03:39:54+00:00
Add BangPatterns to alex and happy source files
- - - - -
629fe60e by tob.brandt at 2010-11-23T23:35:11+00:00
documentation for qualification
- - - - -
37031cee by David Waern at 2010-11-23T21:06:44+00:00
Update CHANGES - don't mention 2.8.2, we won't release it
- - - - -
f2489e19 by David Waern at 2010-12-01T21:57:11+00:00
Update deps of runtests.hs to work with ghc 7.0.1
- - - - -
d3657e9a by David Waern at 2010-12-01T22:04:57+00:00
Make tests compile with ghc 7.0.1
- - - - -
a2f09d9b by David Waern at 2010-12-01T22:06:59+00:00
Update tests following version bump
- - - - -
50883ebb by David Waern at 2010-12-06T14:09:18+00:00
Update tests following recent changes
- - - - -
fc2fadeb by David Waern at 2010-12-06T14:17:29+00:00
Add a flag --pretty-html for rendering indented html with newlines
- - - - -
30832ef2 by David Waern at 2010-12-06T14:17:35+00:00
Use --pretty-html when running the test suite. Makes it easier to compare output
- - - - -
a0b81b31 by David Waern at 2010-12-06T14:18:27+00:00
Wibble
- - - - -
3aaa23fe by David Waern at 2010-12-06T14:19:29+00:00
Haddockify ppHtml comments
- - - - -
24bb24f0 by David Waern at 2010-12-06T14:23:15+00:00
Remove --debug. It was't used, and --verbosity should take its place
- - - - -
6bc076e5 by David Waern at 2010-12-06T14:25:37+00:00
Rename golden-tests into html-tests. "golden tests" sounds strange
- - - - -
53301e55 by David Waern at 2010-12-06T14:26:26+00:00
QUALI -> QUAL in the description --qual for consistency
- - - - -
98b6affb by David Waern at 2010-12-06T21:54:02+00:00
Bump version
- - - - -
371bf1b3 by David Waern at 2010-12-06T22:08:55+00:00
Update tests following version bump
- - - - -
25be762d by David Waern at 2010-12-06T22:21:03+00:00
Update CHANGES
- - - - -
7c7dac71 by David Waern at 2010-12-06T22:33:43+00:00
Update ANNOUNCE
- - - - -
30d7a5f2 by Simon Peyton Jones at 2010-11-15T08:38:38+00:00
Alex generates BangPatterns, so make Lex.x accept them

(It'd be better for Alex to generate this pragma.)

- - - - -
605e8018 by Simon Marlow at 2010-11-17T11:37:24+00:00
Add {-# LANGUAGE BangPatterns #-} to mollify GHC
- - - - -
a46607ba by David Waern at 2010-12-07T14:08:10+00:00
Solve conflicts
- - - - -
b28cda66 by David Waern at 2010-12-09T20:41:35+00:00
Docs: Mention that \ is a special character in markup
- - - - -
a435bfdd by Ian Lynagh at 2010-11-17T14:01:19+00:00
TAG GHC 7.0.1 release
- - - - -
5a15a05a by David Waern at 2010-12-11T17:51:19+00:00
Fix indentation problem
- - - - -
4232289a by Lennart Kolmodin at 2010-12-17T18:32:03+00:00
Revise haddock.cabal given that we now require ghc-7
default-language should be Haskell2010, slight new semantics for extensions.
Rewrite into clearer dependencies of base and Cabal.

- - - - -
a36302dc by David Waern at 2010-12-19T17:12:37+00:00
Update CHANGES
- - - - -
7c8b85b3 by David Waern at 2010-12-19T17:14:24+00:00
Bump version
- - - - -
cff22813 by Ian Lynagh at 2011-01-05T18:24:27+00:00
Write hoogle output in utf8; fixes GHC build on Windows
- - - - -
c7e762ea by David Waern at 2011-01-22T00:00:35+00:00
Put title outside doc div when HTML:fying title+prologue

Avoids indenting the title, and makes more sense since the title
is not a doc string anyway.

- - - - -
5f639054 by David Waern at 2011-01-22T16:09:44+00:00
Fix spelling error - contributed by Marco Silva
- - - - -
c11dce78 by Ian Lynagh at 2011-01-07T02:33:11+00:00
Follow GHC build system changes
- - - - -
101cfaf5 by David Waern at 2011-01-08T14:06:44+00:00
Bump version
- - - - -
af62348b by David Waern at 2011-01-08T14:07:07+00:00
TAG 2.9.2
- - - - -
4d1f6461 by Ian Lynagh at 2011-01-07T23:06:57+00:00
Name the haddock script haddock-ghc-7.0.2 instead of haddock-7.0.2; haskell/haddock#4882
"7.0.2" looked like a haddock version number before

- - - - -
8ee4d5d3 by Simon Peyton Jones at 2011-01-10T17:31:12+00:00
Update Haddock to reflect change in hs_tyclds field of HsGroup
- - - - -
06f3e3db by Ian Lynagh at 2011-03-03T15:02:37+00:00
TAG GHC 7.0.2 release
- - - - -
7de0667d by David Waern at 2011-03-10T22:47:13+00:00
Update CHANGES
- - - - -
33a9f1c8 by David Waern at 2011-03-10T22:47:31+00:00
Fix build with ghc 7.0.1
- - - - -
4616f861 by David Waern at 2011-03-10T22:47:50+00:00
TAG 2.9.2-actual
- - - - -
0dab5e3c by Simon Hengel at 2011-04-08T15:53:01+00:00
Set shell script for unit tests back to work
- - - - -
85c54dee by Simon Hengel at 2011-04-08T16:01:24+00:00
Set unit tests back to work

Here "ghci>" was still used instead of ">>>".

- - - - -
1cea9b78 by Simon Hengel at 2011-04-08T16:25:36+00:00
Update runtests.hs for GHC 7.0.2
- - - - -
8e5b3bbb by Simon Hengel at 2011-04-08T16:28:49+00:00
Update Haddock version in *.html.ref
- - - - -
2545e955 by Simon Hengel at 2011-04-08T17:09:28+00:00
Add support for blank lines in the result of examples

Result lines that only contain the string "<BLANKLINE>" are treated as a blank
line.

- - - - -
adf64d2e by Simon Hengel at 2011-04-08T17:36:50+00:00
Add documentation for "support for blank lines in the result of examples"
- - - - -
c51352ca by David Waern at 2011-05-21T23:57:56+00:00
Improve a haddock comment
- - - - -
7419cf2c by David Waern at 2011-05-22T15:41:52+00:00
Use cabal's test suite support to run the test suite

This gives up proper dependency tracking of the test script.

- - - - -
7770070c by David Waern at 2011-05-22T01:45:44+00:00
We don't need to send DocOptions nor a flag to mkExportItems
- - - - -
9d95b7b6 by David Waern at 2011-05-22T21:39:03+00:00
Fix a bug
- - - - -
1f93699b by David Waern at 2011-05-22T21:40:21+00:00
Break out fullContentsOf, give it a better name and some documentation

The documentation describes how we want this function to eventually behave,
once we have fixed a few problems with the current implementation.

- - - - -
9a86432f by David Waern at 2011-05-22T21:53:52+00:00
Fix some stylistic issues in mkExportItems
- - - - -
c271ff0c by David Waern at 2011-05-22T22:09:11+00:00
Indentation
- - - - -
93e602b1 by David Waern at 2011-06-10T01:35:31+00:00
Add git commits since switchover:

  darcs format (followed by a conflict resolution):

  commit 6f92cdd12d1354dfbd80f8323ca333bea700896a
  Merge: f420cc4 28df3a1
  Author: Simon Peyton Jones <simonpj at microsoft.com>
  Date:   Thu May 19 17:54:34 2011 +0100

      Merge remote branch 'origin/master' into ghc-generics

  commit 28df3a119f770fdfe85c687dd73d5f6712b8e7d0
  Author: Max Bolingbroke <batterseapower at hotmail.com>
  Date:   Sat May 14 22:37:02 2011 +0100

      Unicode fix for getExecDir on Windows

  commit 89813e729be8bce26765b95419a171a7826f6d70
  Merge: 6df3a04 797ab27
  Author: Simon Peyton Jones <simonpj at microsoft.com>
  Date:   Mon May 9 11:55:17 2011 +0100

      Merge branch 'ghc-new-co'

  commit 6df3a040da3dbddee67c6e30a892f87e6b164383
  Author: Ian Lynagh <igloo at earth.li>
  Date:   Sun May 8 17:05:50 2011 +0100

      Follow changes in SDoc

  commit f420cc48b9259f0b1afd2438b12f9a2bde57053d
  Author: Jose Pedro Magalhaes <jpm at cs.uu.nl>
  Date:   Wed May 4 17:31:52 2011 +0200

      Adapt haddock to the removal of HsNumTy and TypePat.

  commit 797ab27bdccf39c73ccad374fea265f124cb52ea
  Merge: 1d81436 5a91450
  Author: Simon Peyton Jones <simonpj at microsoft.com>
  Date:   Mon May 2 12:05:03 2011 +0100

      Merge remote branch 'origin/master' into ghc-new-co

  commit 1d8143659a81cf9611668348e33fd0775c7ab1d2
  Author: Simon Peyton Jones <simonpj at microsoft.com>
  Date:   Mon May 2 12:03:46 2011 +0100

      Wibbles for ghc-new-co branch

  commit 5a91450e2ea5a93c70bd3904b022445c9cc82488
  Author: Ian Lynagh <igloo at earth.li>
  Date:   Fri Apr 22 00:51:56 2011 +0100

      Follow defaultDynFlags change in GHC

- - - - -
498da5ae by David Waern at 2011-06-11T00:33:33+00:00
* Merge in git patch from Michal Terepeta

>From 6fc71d067738ef4b7de159327bb6dc3d0596be29 Mon Sep 17 00:00:00 2001
From: Michal Terepeta <michal.terepeta at gmail.com>
Date: Sat, 14 May 2011 19:18:22 +0200
Subject: [PATCH] Follow the change of TypeSig in GHC.

This follows the change in GHC to make TypeSig take a list
of names (instead of just one); GHC ticket haskell/haddock#1595. This
should also improve the Haddock output in case the user
writes a type signature that refers to many names:
  -- | Some comment..
  foo, bar :: ...
will now generate the expected output with one signature for
both names.

- - - - -
094607fe by Ian Lynagh at 2011-06-17T19:10:29+01:00
Fix build

- - - - -
8fa35740 by Ian Lynagh at 2011-06-26T21:06:40+01:00
Bump GHC dep to allow 7.2

- - - - -
e4d2ca3c by Ian Lynagh at 2011-07-07T23:06:28+01:00
Relax base dep

- - - - -
b948fde9 by Ian Lynagh at 2011-07-28T16:39:45+01:00
GHC build system: Don't install the datafiles twice

- - - - -
f82f6d70 by Simon Marlow at 2011-08-11T12:08:15+01:00
Hack this to make it work with both Alex 2.x and Alex 3.x.  Unicode in
documentation strings is (still) mangled.  I don't think it's possible
to make it so that we get the current behaviour with Alex 2.x but
magic Unicode support if you use Alex 3.x.  At some point we have to
decide that Alex 3.x is a requirement, then we can do Unicode.

- - - - -
b341cc12 by Max Bolingbroke at 2011-08-22T20:25:27+01:00
Fix compilation with no-pred-ty GHC

- - - - -
30494581 by Max Bolingbroke at 2011-08-23T10:20:54+01:00
Remaining fixes for PredTy removal

- - - - -
0b197138 by Max Bolingbroke at 2011-08-26T08:27:45+01:00
Rename factKind to constraintKind

- - - - -
a379bec5 by Max Bolingbroke at 2011-09-04T12:54:47+01:00
Deal with change to IParam handling in GHC

- - - - -
f94e421b by Max Bolingbroke at 2011-09-06T17:34:31+01:00
Adapt Haddock for the ConstraintKind extension changes

- - - - -
8821e5cc by Max Bolingbroke at 2011-09-09T08:24:59+01:00
Ignore associated type defaults (just as we ignore default methods)

- - - - -
31a0afd4 by Max Bolingbroke at 2011-09-09T09:06:00+01:00
Merge branch 'no-pred-ty' of ssh://darcs.haskell.org/srv/darcs/haddock into no-pred-ty

- - - - -
dd3b530a by Max Bolingbroke at 2011-09-09T14:10:25+01:00
Merge branch 'no-pred-ty'

Conflicts:
	src/Haddock/Convert.hs

- - - - -
5f25ec96 by Max Bolingbroke at 2011-09-09T14:10:40+01:00
Replace FactTuple with ConstraintTuple

- - - - -
cd30b9cc by David Waern at 2011-09-26T02:17:55+02:00
Bump to version 2.9.3

- - - - -
4fbfd397 by Max Bolingbroke at 2011-09-27T14:55:21+01:00
Follow changes to BinIface Name serialization

- - - - -
92257d90 by David Waern at 2011-09-30T23:45:07+02:00
Fix problem with test files not added to distribution tarball

- - - - -
00255bda by David Waern at 2011-09-30T23:48:24+02:00
Merge branch 'development'

- - - - -
5421264f by David Waern at 2011-10-01T01:25:39+02:00
Merge in darcs patch from Simon Meier:

  Wed Jun  1 19:41:16 CEST 2011  iridcode at gmail.com
    * prettier haddock coverage info
    The new coverage info rendering uses less horizontal space. This reduces the
    number of unnecessary line-wrappings. Moreover, the most important information,
    how much has been documented already, is now put up front. Hopefully, this
    makes it more likely that a library author is bothered by the low coverage of
    his modules and fixes that issue ;-)

- - - - -
07d318ef by David Waern at 2011-10-01T01:34:10+02:00
Use printException instead of deprecated printExceptionAndWarnings

- - - - -
40d52ee4 by David Waern at 2011-10-01T01:41:13+02:00
Merge in darcs pach:

  Mon Apr 11 18:09:54 JST 2011  Liyang HU <haddock at liyang.hu>
    * Remember collapsed sections in index.html / haddock-util.js

- - - - -
279d6dd4 by David Waern at 2011-10-01T01:55:45+02:00
Merge in darcs patch:

  Joachim Breitner <mail at joachim-breitner.de>**20110619201645
  Ignore-this: f6c51228205b0902ad5bfad5040b989a

  As reported on http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=578301,
  generating the global index takes much too long if type-level (with lots of
  auto-generated types) is installed. The patch avoids a quadratic runtime in the
  subfunction getIfaceIndex of ppHtmlIndex by using a temporary set. Runtime improvement observed here from 25.36s to 2.86s.

- - - - -
d1612383 by David Waern at 2011-10-01T01:56:48+02:00
Merge branch 'development'

- - - - -
347520c1 by David Waern at 2011-10-01T01:56:54+02:00
Merge branch 'master' of http://darcs.haskell.org/haddock

- - - - -
9a0c95e8 by David Waern at 2011-10-01T02:19:10+02:00
Improve .cabal file

- - - - -
6967dc64 by Ian Lynagh at 2011-10-01T01:34:06+01:00
Follow changes to ForeignImport/ForeignExport in GHC

- - - - -
565cb26b by Simon Marlow at 2011-10-04T00:15:04+02:00
Hack this to make it work with both Alex 2.x and Alex 3.x.  Unicode in
documentation strings is (still) mangled.  I don't think it's possible
to make it so that we get the current behaviour with Alex 2.x but
magic Unicode support if you use Alex 3.x.  At some point we have to
decide that Alex 3.x is a requirement, then we can do Unicode.

- - - - -
8b74f512 by David Waern at 2011-10-04T00:18:17+02:00
Requre ghc >= 7.2

- - - - -
271d360c by David Waern at 2011-10-04T00:22:50+02:00
Bump version to 2.9.4

- - - - -
37f3edb0 by David Waern at 2011-10-06T02:30:21+02:00
Add alex and happy to build-tools.

- - - - -
7ac2bb6e by David Terei at 2011-10-12T14:02:55-07:00
Add safe haskell indication to haddock output

- - - - -
42c91a47 by David Terei at 2011-10-12T14:06:03-07:00
Fix CSS issue with info table not being contained in module header

- - - - -
0eddab6c by David Terei at 2011-10-12T14:06:58-07:00
Add safe haskell indication to haddock output

- - - - -
3df058eb by David Terei at 2011-10-12T14:07:07-07:00
Fix CSS issue with info table not being contained in module header

- - - - -
a40a6c3f by David Waern at 2011-10-22T11:29:06+02:00
Bump .haddock file version since the format has changed recently

- - - - -
8a6254be by David Waern at 2011-10-22T11:30:42+02:00
Merge branch 'development'

- - - - -
642e3e02 by David Waern at 2011-10-23T21:23:39+02:00
Sort import list

- - - - -
36371cf8 by David Waern at 2011-10-23T22:48:18+02:00
Remove NEW_GHC_LAYOUT conditional.

- - - - -
5604b499 by David Waern at 2011-10-27T00:15:03+02:00
Add --print-ghc-path.

- - - - -
463499fa by David Waern at 2011-10-27T00:16:22+02:00
Make testsuite able to find its dependencies automatically.

- - - - -
a3506172 by Ryan Newton at 2011-11-05T05:59:58-04:00
Improved declNames internal error.  Added a case to handle DocD.

- - - - -
001b8baf by David Waern at 2011-11-05T20:37:29+01:00
Rename copy.hs -> accept.hs.

- - - - -
55d808d3 by David Waern at 2011-11-05T23:30:02+01:00
Fix build.

- - - - -
deb5c3be by David Waern at 2011-11-06T00:01:47+01:00
Merge branch 'master' of http://darcs.haskell.org/haddock

- - - - -
9b663554 by David Waern at 2011-11-06T00:03:45+01:00
Merge https://github.com/rrnewton/haddock

- - - - -
1abb0ff6 by David Waern at 2011-11-06T01:20:37+01:00
Use getDeclMainBinder instead of declNames.

- - - - -
4b005c01 by David Waern at 2011-11-06T19:09:53+01:00
Fix build.

- - - - -
c2c51bc7 by Ian Lynagh at 2011-11-06T23:01:33+00:00
Remove -DNEW_GHC_LAYOUT in ghc.mk

- - - - -
f847d703 by Jose Pedro Magalhaes at 2011-11-11T09:07:39+00:00
New kind-polymorphic core

This big patch implements a kind-polymorphic core for GHC. The current
implementation focuses on making sure that all kind-monomorphic programs still
work in the new core; it is not yet guaranteed that kind-polymorphic programs
(using the new -XPolyKinds flag) will work.

For more information, see http://haskell.org/haskellwiki/GHC/Kinds

- - - - -
7d7c3b09 by Jose Pedro Magalhaes at 2011-11-16T21:42:22+01:00
Follow changes to tuple sorts in master

- - - - -
8430e03e by Simon Peyton Jones at 2011-11-17T10:20:27+00:00
Remove redundant imports

- - - - -
d1b06832 by Ian Lynagh at 2011-11-19T01:33:21+00:00
Follow GHC build system change to the way we call rm

- - - - -
9e2230ed by David Waern at 2011-11-24T15:00:24+01:00
Fix a bug in test runner and get rid of regex-compat dependency.

- - - - -
52039b21 by David Waern at 2011-11-24T23:55:36+01:00
Avoid haskell98 dependency in test

- - - - -
92e1220d by David Waern at 2011-11-25T00:03:33+01:00
Avoid depency on regex-compat also in accept.hs.

- - - - -
ddac6b6f by David Waern at 2011-11-25T02:13:38+01:00
Accept test output.

- - - - -
5a720455 by David Waern at 2011-11-25T02:16:20+01:00
Some more changes to test scripts.

- - - - -
170a9004 by David Waern at 2011-11-25T02:30:41+01:00
Add flag --interface-version.

- - - - -
d225576c by David Waern at 2011-11-25T02:39:26+01:00
Remove #ifs for older compiler versions.

- - - - -
f0d0a4f5 by David Waern at 2011-11-26T04:20:12+01:00
Give preference to type over data constructors for doc comment links at renaming time.

Previously this was done in the backends.

Also, warn when a doc comment refers to something that is in scope but which we
don't have the .haddock file for.

These changes mean we can make DocIdentifier [a] into DocIdentifier a.

- - - - -
eef0e776 by David Waern at 2011-11-26T17:01:06+01:00
Allow doc comments to link to out-of-scope things (#78).

(A bug that should have been fixed long ago.)

- - - - -
565ad529 by David Waern at 2011-11-26T19:56:21+01:00
Update tests.

- - - - -
fb3ce7b9 by David Waern at 2011-11-26T21:44:28+01:00
Cleanup.

- - - - -
d0328126 by David Waern at 2011-11-26T22:10:28+01:00
Fix module reference bug.

- - - - -
c03765f8 by David Waern at 2011-12-03T05:20:20+01:00
Slightly better behaviour on top-levels without type signatures.

- Docs don't get attached to the next top-level with signature by
mistake.

- If there's an export list and the top-level is part of it,
its doc comment shows up in the documentation.

- - - - -
48461d31 by David Waern at 2011-12-03T05:38:10+01:00
Add a test for Unicode doc comments.

- - - - -
549c4b4e by David Waern at 2011-12-03T19:07:55+01:00
Cleanup.

- - - - -
7bfecf91 by David Waern at 2011-12-03T20:13:08+01:00
More cleanup.

- - - - -
14fab722 by Ian Lynagh at 2011-12-12T21:21:35+00:00
Update dependencies and binaryInterfaceVersion

- - - - -
469e6568 by Ian Lynagh at 2011-12-18T12:56:16+00:00
Fix (untested) building from source tarball without alex/happy

haddock's .cabal file was declaring that it needed alex and happy to
build, but in the GHC source tarballs it doesn't.

- - - - -
895c9a8c by David Waern at 2011-12-27T12:57:43+01:00
Go back to having a doc, sub and decl map instead of one big decl map.

This setup makes more sense since when we add value bindings to the
processed declarations (for type inference), we will have multiple
declarations which should share documentation. Also, we already have
a separate doc map for instances which we can now merge into the
main doc map. Another benefit is that we don't need the DeclInfo
type any longer.

- - - - -
736767d9 by David Waern at 2011-12-27T13:33:41+01:00
Merge ../../../haddock

Conflicts:
	src/Haddock/InterfaceFile.hs

- - - - -
20016f79 by David Waern at 2011-12-27T13:57:23+01:00
Bump version.

- - - - -
31f276fb by David Waern at 2011-12-27T13:57:32+01:00
Merge ../ghc/utils/haddock

- - - - -
95b367cd by David Waern at 2011-12-27T14:57:29+01:00
Update tests following version bump.

- - - - -
fa3c94cd by David Waern at 2011-12-27T14:57:51+01:00
Get rid of quite unnecessary use of different lists.

- - - - -
9c4d3c54 by David Waern at 2011-12-27T15:26:42+01:00
Cleanup.

- - - - -
2caf9f90 by David Waern at 2011-12-27T16:18:05+01:00
Wibbles.

- - - - -
3757d09b by David Waern at 2011-12-27T20:50:26+01:00
Complete support for inferring types for top-level bindings.

- - - - -
53418734 by David Waern at 2011-12-28T15:02:13+01:00
Minor fixes and cleanup.

- - - - -
0c9d0385 by Ian Lynagh at 2012-01-03T18:31:29+00:00
Follow rename of Instance to ClsInst in GHC

- - - - -
c9bc969a by Simon Hengel at 2012-01-12T21:28:14+01:00
Make sure that generated xhtml is valid (close haskell/haddock#186)

Thanks to Phyx.

- - - - -
836a0b9a by David Waern at 2012-02-01T02:30:05+01:00
Fix bug introduced in my recent refactoring.

- - - - -
c7d733eb by David Waern at 2012-02-01T02:30:26+01:00
Cleanup mkMaps and avoid quadratic behaviour.

- - - - -
da3cda8f by David Waern at 2012-02-01T02:56:56+01:00
Require ghc >= 7.4.

- - - - -
83a3287e by David Waern at 2012-02-01T02:57:36+01:00
Update CHANGES.

- - - - -
93408f0b by Simon Hengel at 2012-02-04T00:48:04+01:00
Add reference renderings

- - - - -
49d00d2c by Simon Hengel at 2012-02-04T00:48:25+01:00
Set unit tests for parser back to work

- - - - -
eb450980 by Simon Hengel at 2012-02-04T00:49:07+01:00
Add .gitignore

- - - - -
a841602c by Simon Hengel at 2012-02-04T00:49:16+01:00
Add .ghci file

- - - - -
8861199d by Simon Hengel at 2012-02-04T00:49:29+01:00
tests/html-tests/copy.hs: Use mapM_ instead of mapM

So we do net get a list of () on stdout when running with runhaskell.

- - - - -
b477d9b5 by Simon Hengel at 2012-02-04T00:49:46+01:00
Remove index files from golden tests

- - - - -
9dbda34e by Simon Hengel at 2012-02-04T00:49:57+01:00
Add /tests/html-tests/tests/*index*.ref to .gitignore

- - - - -
a9434817 by Simon Hengel at 2012-02-04T00:50:04+01:00
Add DocWarning to Doc

The Xhtml backend has special markup for that, Hoogle and LaTeX reuse
what we have for DocEmphasis.

- - - - -
de2fb6fa by Simon Hengel at 2012-02-04T00:50:13+01:00
Add support for module warnings

- - - - -
0640920e by Simon Hengel at 2012-02-04T00:50:21+01:00
Add tests for module warnings

- - - - -
30ce0d77 by Simon Hengel at 2012-02-04T00:50:29+01:00
Add support for warnings

- - - - -
bb367960 by Simon Hengel at 2012-02-04T00:50:37+01:00
Add tests for warnings

- - - - -
6af1dc2d by Simon Hengel at 2012-02-04T00:50:50+01:00
Expand type signatures in export list (fixes haskell/haddock#192)

- - - - -
a06cbf25 by Simon Hengel at 2012-02-04T00:51:04+01:00
Expand type signatures for modules without explicit export list

- - - - -
57dda796 by Simon Hengel at 2012-02-04T00:51:15+01:00
Remove obsolete TODO

- - - - -
270c3253 by David Waern at 2012-02-04T00:51:24+01:00
Fix issues in support for warnings.

* Match against local names only.
* Simplify (it's OK to map over the warnings).

- - - - -
683634bd by David Waern at 2012-02-04T00:55:11+01:00
Some cleanup and make sure we filter warnings through exports.

- - - - -
210cb4ca by David Waern at 2012-02-04T03:01:30+01:00
Merge branch 'fix-for-186' of https://github.com/sol/haddock into ghc-7.4

- - - - -
e8db9031 by David Waern at 2012-02-04T03:07:51+01:00
Style police.

- - - - -
261f9462 by David Waern at 2012-02-04T03:20:16+01:00
Update tests.

- - - - -
823cfc7c by David Waern at 2012-02-04T03:21:12+01:00
Use mapM_ in accept.hs as well.

- - - - -
873dd619 by David Waern at 2012-02-04T03:21:33+01:00
Remove copy.hs - use accept.hs instead.

- - - - -
0e31a14a by David Waern at 2012-02-04T03:47:33+01:00
Use <> instead of mappend.

- - - - -
2ff7544f by David Waern at 2012-02-04T03:48:55+01:00
Remove code for older ghc versions.

- - - - -
dacf2786 by David Waern at 2012-02-04T15:52:51+01:00
Clean up some code from last SoC project.

- - - - -
00cbb117 by David Waern at 2012-02-04T21:43:49+01:00
Mostly hlint-inspired cleanup.

- - - - -
7dc86cc2 by Simon Peyton Jones at 2012-02-06T09:14:41+00:00
Track changes in HsDecls

- - - - -
f91f82fe by Ian Lynagh at 2012-02-16T13:40:11+00:00
Follow changes in GHC caused by the CAPI CTYPE pragma

- - - - -
a0ea6b0b by Ian Lynagh at 2012-02-22T02:26:12+00:00
Follow changes in GHC

- - - - -
b23b07d1 by Simon Peyton Jones at 2012-03-02T16:36:41+00:00
Follow changes in data representation from the big PolyKinds commit

- - - - -
43406022 by Simon Hengel at 2012-03-05T11:18:34+01:00
Save/restore global state for static flags when running GHC actions

This is necessary if we want to run createInterfaces (from
Documentation.Haddock) multiple times in the same process.

- - - - -
9fba16fe by Paolo Capriotti at 2012-03-06T10:57:33+00:00
Update .gitignore.

- - - - -
a9325044 by Simon Peyton Jones at 2012-03-14T17:35:42+00:00
Follow changes to tcdKindSig (Trac haskell/haddock#5937)

- - - - -
fd48065a by Iavor Diatchki at 2012-03-15T22:43:35-07:00
Add support for type-level literals.

- - - - -
2e8206dd by Simon Peyton Jones at 2012-03-16T14:18:22+00:00
Follow changes to tcdKindSig (Trac haskell/haddock#5937)

- - - - -
93e13319 by Simon Peyton Jones at 2012-03-17T01:04:05+00:00
Merge branch 'master' of http://darcs.haskell.org//haddock

Conflicts:
	src/Haddock/Convert.hs

- - - - -
d253fa71 by Iavor Diatchki at 2012-03-19T20:12:18-07:00
Merge remote-tracking branch 'origin/master' into type-nats

- - - - -
fc40acc8 by Iavor Diatchki at 2012-03-19T20:31:27-07:00
Add a missing case for type literals.

- - - - -
fd2ad699 by Iavor Diatchki at 2012-03-24T13:28:29-07:00
Rename variable to avoid shadowing warning.

- - - - -
9369dd3c by Simon Peyton Jones at 2012-03-26T09:14:23+01:00
Follow refactoring of TyClDecl/HsTyDefn

- - - - -
38825ca5 by Simon Peyton Jones at 2012-03-26T09:14:37+01:00
Merge branch 'master' of http://darcs.haskell.org//haddock

- - - - -
4324ac0f by David Waern at 2012-04-01T01:51:19+02:00
Disable unicode test.

- - - - -
3165b750 by David Waern at 2012-04-01T01:51:34+02:00
Take reader environment directly from TypecheckedSource.

- - - - -
213b644c by David Waern at 2012-04-01T01:55:20+02:00
Cleanup.

- - - - -
3118b4ba by David Waern at 2012-04-01T02:16:15+02:00
Don't filter out unexported names from the four maps - fixes a regression.

- - - - -
d6524e17 by David Waern at 2012-04-01T02:40:34+02:00
Fix crash when using --qual. Naughty GHC API!

- - - - -
ea3c43d8 by Henning Thielemann at 2012-04-01T13:03:07+02:00
add QualOption type for distinction between qualification argument given by the user
and the actual qualification for a concrete module
- - - - -
5422ff05 by Henning Thielemann at 2012-04-01T16:25:02+02:00
emit an error message when the --qual option is used incorrectly
- - - - -
026e3404 by David Waern at 2012-04-01T18:10:30+02:00
Don't crash on unicode strings in doc comments.

- - - - -
ce006632 by David Waern at 2012-04-01T20:13:35+02:00
Add test for --ignore-all-exports flag/ignore-exports pragma.

- - - - -
6e4dd33c by David Waern at 2012-04-01T20:21:03+02:00
Merge branch 'dev' of https://github.com/sol/haddock into ghc-7.4

- - - - -
734ae124 by Henning Thielemann at 2012-04-01T20:22:10+02:00
Merge branch 'ghc-7.4' of http://darcs.haskell.org/haddock into ghc-7.4

- - - - -
622f9ba5 by David Waern at 2012-04-01T21:26:13+02:00
Merge http://code.haskell.org/~thielema/haddock/ into ghc-7.4

- - - - -
55ce17cb by Henning Thielemann at 2012-04-01T22:03:25+02:00
'abbreviate' qualification style - basic support
Currently we ignore the package a module is imported from.
This means that a module import would shadow another one
with the same module name from a different package.
- - - - -
c85314ef by David Waern at 2012-04-01T22:05:12+02:00
Check qualification option before processing modules.

- - - - -
ae4b626c by Henning Thielemann at 2012-04-02T00:19:36+02:00
abbreviated qualification: use Packages.lookupModuleInAllPackages for finding the package that a module belongs to
- - - - -
60bdbcf5 by Henning Thielemann at 2012-04-02T00:25:31+02:00
Merge branch 'ghc-7.4' of http://darcs.haskell.org/haddock into ghc-7.4

- - - - -
df44301d by Henning Thielemann at 2012-04-02T00:29:05+02:00
qualification style 'abbreviated' -> 'aliased'

- - - - -
f4192a64 by David Waern at 2012-04-02T01:05:47+02:00
Merge http://code.haskell.org/~thielema/haddock/ into ghc-7.4

- - - - -
7ba09067 by David Terei at 2012-04-04T15:08:21-07:00
Fix reporting of modules safe haskell mode (#5989)

- - - - -
d0cc33d0 by David Terei at 2012-04-06T15:50:41+01:00
Fix reporting of modules safe haskell mode (#5989)

- - - - -
6e3434c5 by Simon Peyton Jones at 2012-04-20T18:37:46+01:00
Track changes in HsSyn

- - - - -
22014ed0 by Simon Peyton Jones at 2012-05-11T22:45:15+01:00
Follow changes to LHsTyVarBndrs

- - - - -
d9a07b24 by David Waern at 2012-05-15T01:46:35+02:00
Merge branch 'ghc-7.4' of http://darcs.haskell.org/haddock into ghc-7.4

- - - - -
a6c4ebc6 by David Waern at 2012-05-16T02:18:32+02:00
Update CHANGES.

- - - - -
8e181d29 by David Waern at 2012-05-16T02:27:56+02:00
Merge http://code.haskell.org/~thielema/haddock/ into ghc-7.4

- - - - -
e358210d by David Waern at 2012-05-16T02:35:33+02:00
Mention the new aliased --qual mode in CHANGES.

- - - - -
efd36a28 by David Waern at 2012-05-16T21:33:13+02:00
Bump version number.

- - - - -
d6b3af14 by Simon Hengel at 2012-05-17T19:08:20+02:00
Add test for deprecated record field

- - - - -
927f800e by Simon Hengel at 2012-05-17T19:08:20+02:00
Use >>= instead of fmap and join

- - - - -
048b41d5 by Simon Hengel at 2012-05-17T19:08:20+02:00
newtype-wrap Doc nodes for things that may have warnings attached

- - - - -
e3a89fc3 by Simon Hengel at 2012-05-17T19:08:20+02:00
Attach warnings to `Documentation` type

- - - - -
5d4cc43d by Simon Hengel at 2012-05-17T19:08:20+02:00
Simplify lookupWarning

- - - - -
cf8ae69d by Simon Hengel at 2012-05-17T19:08:20+02:00
Add test for haskell/haddock#205

- - - - -
cb409b19 by Simon Peyton Jones at 2012-05-25T08:30:11+01:00
Follow changes in LHsTyVarBndrs

- - - - -
2d5f4179 by Simon Hengel at 2012-05-26T19:21:29+02:00
Add Applicative instance for (GenRnM a)

- - - - -
e4373060 by Simon Hengel at 2012-05-26T19:21:33+02:00
Use a map for warnings, as suggested by @waern

- - - - -
597a68c7 by Simon Hengel at 2012-05-27T08:48:24+02:00
Add an optional label to URLs

- - - - -
ef1ac7fe by Simon Hengel at 2012-05-27T08:48:24+02:00
Add support for hyperlink labels to parser

- - - - -
41f2adce by Simon Hengel at 2012-05-27T08:48:24+02:00
Add golden test for hyperlinks

- - - - -
83d5e764 by Simon Hengel at 2012-05-27T08:50:02+02:00
Use LANGUAGE pragmas instead of default-extensions in cabal file

- - - - -
ddb755e5 by Simon Hengel at 2012-05-27T08:50:02+02:00
Fix typo in comment

- - - - -
110676b4 by Simon Hengel at 2012-05-27T08:50:02+02:00
Add a type signature for a where-binding

- - - - -
7d9ba2a0 by Ian Lynagh at 2012-06-12T14:38:01+01:00
Follow changes in GHC

- - - - -
47c704f2 by Ian Lynagh at 2012-06-12T18:52:16+01:00
Follow changes in GHC

- - - - -
e1efe1ab by Simon Peyton Jones at 2012-06-13T17:25:29+01:00
Follow changes for the implementation of implicit parameters

- - - - -
69abc81c by Ian Lynagh at 2012-06-19T22:52:58+01:00
Follow changes in base

- - - - -
9d074a21 by Paolo Capriotti at 2012-06-22T18:26:47+01:00
Use right docMap to get decl documentation.

- - - - -
e3292ef6 by Ian Lynagh at 2012-07-15T01:31:19+01:00
Follow changes in GHC

- - - - -
ceae56b0 by Ian Lynagh at 2012-07-16T21:22:48+01:00
Fix haddock following some GHC changes

Passing _|_ as the Settings for defaultDynFlags no longer works well
enough

- - - - -
9df72735 by Paolo Capriotti at 2012-07-19T16:49:32+01:00
Forward port changes from stable.

- - - - -
572f5fcf by Ian Lynagh at 2012-07-19T20:38:26+01:00
Merge branch 'master' of darcs.haskell.org:/srv/darcs//haddock

- - - - -
9195aca4 by Paolo Capriotti at 2012-07-20T10:27:28+01:00
Update dependencies.

- - - - -
33db3923 by Ian Lynagh at 2012-07-20T17:54:43+01:00
Build with GHC 7.7

- - - - -
925a2cea by David Waern at 2012-07-23T16:50:40+02:00
Merge branch 'dev' of https://github.com/sol/haddock into ghc-7.6

Conflicts:
	src/Haddock/InterfaceFile.hs

- - - - -
d710ef97 by David Waern at 2012-07-23T16:52:07+02:00
Bump version number.

- - - - -
eb0c2f83 by David Waern at 2012-07-23T16:57:58+02:00
Update CHANGES.

- - - - -
b3f56943 by Roman Cheplyaka at 2012-07-27T13:00:13+03:00
Hide "internal" instances

This fixes haskell/haddock#37 (http://trac.haskell.org/haddock/ticket/37)

Precisely, we show an instance iff its class and all the types are exported by
non-hidden modules.

- - - - -
a70aa412 by Roman Cheplyaka at 2012-07-27T13:00:13+03:00
Tests for hiding instances (#37)

- - - - -
c0f4aa58 by Simon Hengel at 2012-07-27T13:00:13+03:00
Add an other test for hiding instances (#37)

- - - - -
a7ed6268 by Ian Lynagh at 2012-08-07T14:48:13+01:00
Follow changes in GHC

- - - - -
0ab30d38 by Ian Lynagh at 2012-08-13T22:12:27+01:00
Improve haddock memory usage

- - - - -
0eaa4e30 by Ian Lynagh at 2012-08-13T23:58:46+01:00
Improve haddock memory usage

- - - - -
659d26cf by Ian Lynagh at 2012-08-14T13:16:48+01:00
Remove some temporary pragmas I accidentally recorded

- - - - -
d97fceb6 by Simon Hengel at 2012-08-25T13:19:34+02:00
Add missing dependency to library

- - - - -
4c910697 by Simon Hengel at 2012-08-28T07:39:14+02:00
Move .ghci to project root

- - - - -
fc3c601a by Simon Hengel at 2012-08-28T07:39:14+02:00
accept.hs: Ignore some files

- - - - -
1af9b984 by Simon Hengel at 2012-08-28T07:40:04+02:00
Update reference renderings (bump version)

- - - - -
980dc253 by Simon Hengel at 2012-08-28T07:40:32+02:00
Update reference renderings (remove links for ())

- - - - -
33651dbf by Simon Hengel at 2012-08-28T07:41:50+02:00
Update documentation of `runInteractiveProcess` in reference rendering

- - - - -
7ab25078 by David Waern at 2012-09-07T10:38:50+02:00
Merge branch 'hiddenInstances2' of http://github.com/feuerbach/haddock into ghc-7.6

- - - - -
c3de3a4b by David Waern at 2012-09-07T14:29:27+02:00
Follow changes in GHC.

- - - - -
298c43ac by David Waern at 2012-09-07T14:59:24+02:00
Update CHANGES.

- - - - -
e797993a by David Waern at 2012-09-07T15:21:30+02:00
Update ANNOUNCE.

- - - - -
d0b44790 by David Waern at 2012-09-07T15:22:43+02:00
Merge branch 'hidden-instances' into ghc-7.6

- - - - -
41a4adc8 by Simon Hengel at 2012-09-08T12:08:37+02:00
Update doc/README

- - - - -
71ad1040 by Simon Hengel at 2012-09-08T12:17:17+02:00
Add documentation for URL labels

- - - - -
9bb41afd by Simon Peyton Jones at 2012-09-20T18:14:26+01:00
Follow data type changes in the tc-untouchables branch

Relating entirely to SynTyConRhs

- - - - -
b8139bfa by Simon Hengel at 2012-09-21T14:24:16+02:00
Disable Unicode test for now

- - - - -
a5fafdd7 by Simon Hengel at 2012-09-21T14:35:45+02:00
Update TypeOperators test for GHC 7.6.1

Type operators can't be used as type variables anymore!

- - - - -
6ccf0025 by Simon Hengel at 2012-09-21T16:02:24+02:00
Remove (Monad (Either e)) instance from ref. rendering of CrossPackageDocs

I do not really understand why the behavior changed, so I'll open a
ticket, so that we can further investigate.

- - - - -
b5c6c138 by Ian Lynagh at 2012-09-27T02:00:57+01:00
Follow changes in GHC build system

- - - - -
b98eded0 by David Waern at 2012-09-27T15:37:02+02:00
Merge branch 'ghc-7.6' of http://darcs.haskell.org/haddock into ghc-7.6

- - - - -
76cc2051 by David Waern at 2012-09-27T15:48:19+02:00
Update hidden instances tests.

- - - - -
aeaa1c59 by David Waern at 2012-09-28T10:21:32+02:00
Make API buildable with GHC 7.6.

- - - - -
d76be1b0 by Simon Peyton Jones at 2012-09-28T15:57:05+01:00
Merge remote-tracking branch 'origin/master' into tc-untouchables

- - - - -
a1922af8 by David Waern at 2012-09-28T19:50:20+02:00
Fix spurious superclass constraints bug.

- - - - -
bc41bdbb by Simon Hengel at 2012-10-01T11:30:51+02:00
Remove old examples

- - - - -
bed7d3dd by Simon Hengel at 2012-10-01T11:30:51+02:00
Adapt parsetests for GHC 7.6.1

- - - - -
dcdb22bb by Simon Hengel at 2012-10-01T11:30:51+02:00
Add test-suite section for parsetests to cabal file

+ get rid of HUnit dependency

- - - - -
1e5263c9 by Simon Hengel at 2012-10-01T11:30:51+02:00
Remove test flag from cabal file

This was not really used.

- - - - -
4beee98b by David Waern at 2012-09-28T23:42:28+02:00
Merge branch 'ghc-7.6' of http://darcs.haskell.org/haddock into ghc-7.6

- - - - -
11dd2256 by Ian Lynagh at 2012-10-03T16:17:35+01:00
Follow change in GHC build system

- - - - -
fbd77962 by Simon Hengel at 2012-10-03T18:49:40+02:00
Remove redundant dependency from cabal file

- - - - -
09218989 by Simon Hengel at 2012-10-04T16:03:05+02:00
Fix typo

- - - - -
93a2d5f9 by Simon Hengel at 2012-10-04T16:11:41+02:00
Remove trailing whitespace from cabal file

- - - - -
c8b46cd3 by Simon Hengel at 2012-10-04T16:12:17+02:00
Export Haddock's main entry point from library

- - - - -
b411e77b by Simon Hengel at 2012-10-04T16:29:46+02:00
Depend on library for executable

The main motivation for this is to increase build speed.  In GHC's
source tree the library is not build, but all modules are now required
for the executable, so that GHC's validate will now detect build
failures for the library.

- - - - -
f8f0979f by Simon Hengel at 2012-10-05T00:32:57+02:00
Set executable flag for Setup.lhs

- - - - -
dd045998 by Simon Hengel at 2012-10-07T16:44:06+02:00
Extend rather than set environment when running HTML tests

On some platforms (e.g. ppc64) GHC requires gcc in the path.

- - - - -
7b39c3ae by Simon Hengel at 2012-10-07T17:05:45+02:00
cross-package test: re-export IsString instead of Monad

There is a monad instance for Q, which is not available on platforms
that do not have GHCi support.  This caused CrossPackageDocs to fail on
those platforms.  Re-exporting IsString should test the same thing, but
it works on all platforms.

- - - - -
0700c605 by Simon Hengel at 2012-10-07T19:06:34+02:00
runtests.hs: Fix some warnings

- - - - -
f78eca79 by Simon Hengel at 2012-10-07T19:06:34+02:00
runtests.hs: Make -Wall proof

- - - - -
6beec041 by Simon Hengel at 2012-10-07T19:06:34+02:00
runtests.hs: Use listToMaybe/fromMaybe instead of safeHead/maybe

- - - - -
44b8ce86 by Ian Lynagh at 2012-10-08T21:59:46+01:00
Follow changes in GHC

- - - - -
6da5f702 by Simon Hengel at 2012-10-09T11:16:19+02:00
Update .ghci

- - - - -
9ac1a1b9 by Kazu Yamamoto at 2012-10-09T12:45:31+02:00
Add markup support for properties

- - - - -
1944cb42 by Simon Hengel at 2012-10-09T12:45:31+02:00
Simplify lexing/parsing of properties

In contrast to what we do for examples, we do not really need to capture
the "prompt" here.

- - - - -
bffd8e62 by Simon Hengel at 2012-10-09T13:40:14+02:00
Add HTML test for properties

- - - - -
2fe9c5cb by Simon Hengel at 2012-10-09T13:40:21+02:00
Add unit tests for properties

- - - - -
874e361b by Simon Hengel at 2012-10-09T13:40:33+02:00
Bump interface version

- - - - -
2506cc37 by Simon Hengel at 2012-10-09T15:15:04+02:00
Fix parser bug

- - - - -
743d2b7d by Simon Hengel at 2012-10-09T15:31:06+02:00
Allow to load interface files with compatible versions

- - - - -
981a1660 by Simon Hengel at 2012-10-10T10:32:05+02:00
Export more types from Documentation.Haddock (fixes haskell/haddock#216)

- - - - -
dff7dc76 by Simon Hengel at 2012-10-10T11:15:19+02:00
Update ANNOUNCE and CHANGES

- - - - -
edd2bb01 by Simon Hengel at 2012-10-10T11:22:50+02:00
Bump version

- - - - -
5039163b by Simon Hengel at 2012-10-10T13:56:04+02:00
Fix typo in documentation

- - - - -
e4ce34da by Simon Hengel at 2012-10-10T14:28:35+02:00
Add documentation for properties

- - - - -
9555ebca by Simon Hengel at 2012-10-11T10:49:04+02:00
Remove redundant if-defs, more source documentation

- - - - -
87aa67e1 by Simon Hengel at 2012-10-11T12:32:51+02:00
Adapt cabal file

- - - - -
c44c1dee by Simon Hengel at 2012-10-11T12:41:58+02:00
Require ghc 7.6

- - - - -
8383bc34 by Simon Hengel at 2012-10-11T12:50:24+02:00
Bump version

- - - - -
1030eb38 by Simon Hengel at 2012-10-11T12:55:44+02:00
Update ANNOUNCE and CHANGES

- - - - -
74955088 by Simon Hengel at 2012-10-12T09:49:31+02:00
Improve note about `binaryInterfaceVersion` (thanks David)

- - - - -
ee30f6b7 by Simon Hengel at 2012-10-13T13:40:59+02:00
Update version in html tests, rpm spec file, and user manual

- - - - -
f2861f18 by Simon Hengel at 2012-10-13T14:40:33+02:00
Remove unused MonadFix constraint

- - - - -
dfdf1a74 by Simon Hengel at 2012-10-13T15:15:38+02:00
Minor code simplification

- - - - -
4ecd1e70 by Simon Hengel at 2012-10-13T15:33:43+02:00
Increase code locality

- - - - -
f7df5cc9 by Simon Hengel at 2012-10-13T16:03:12+02:00
Minor code simplification

- - - - -
e737eb6e by Simon Hengel at 2012-10-13T19:03:04+02:00
Handle HsExplicitListTy in renameer (fixes haskell/haddock#213)

- - - - -
c2dc8f17 by Simon Hengel at 2012-10-13T20:46:31+02:00
Better error messages

- - - - -
14d48b4c by Simon Hengel at 2012-10-14T00:21:07+02:00
Simplify RnM type

- - - - -
6c2cc547 by Simon Hengel at 2012-10-14T00:23:35+02:00
Simplify lookupRn

- - - - -
bc77ce85 by Simon Hengel at 2012-10-14T01:51:32+02:00
Organize unite tests hierarchically

- - - - -
2306d117 by Simon Hengel at 2012-10-14T10:34:58+02:00
Handle more cases in renameType

- - - - -
8a864203 by Simon Hengel at 2012-10-14T11:47:59+02:00
Add mini_HiddenInstances.html.ref and mini_HiddenInstancesB.html.ref

- - - - -
3a978eca by Simon Hengel at 2012-10-14T11:49:28+02:00
Add /tests/html-tests/output/ to .gitignore

- - - - -
db18888a by Simon Hengel at 2012-10-14T13:38:21+02:00
Allow haddock markup in deprecation messages

- - - - -
e7cfee9f by Simon Hengel at 2012-10-14T14:00:23+02:00
If parsing of deprecation message fails, include it verbatim

- - - - -
242a85be by Simon Hengel at 2012-10-14T14:13:24+02:00
Add description for PruneWithWarning test

- - - - -
43d33df1 by Simon Hengel at 2012-10-14T15:40:53+02:00
Minor formatting change

- - - - -
22768c44 by Simon Hengel at 2012-10-14T16:03:43+02:00
Properly handle deprecation messages for re-exported things (fixes haskell/haddock#220)

- - - - -
cb4b9111 by Simon Hengel at 2012-10-14T17:30:28+02:00
Add build artifacts for documentation to .gitignore

- - - - -
854cd8de by Simon Hengel at 2012-10-14T23:34:51+02:00
unit-tests: Improve readability

Add IsString instance for (Doc RdrName) + use <> instead of DocAppend.

- - - - -
c4446d54 by Simon Hengel at 2012-10-14T23:37:21+02:00
unit-tests: Minor refactoring

Rename parse to parseParas.

- - - - -
04f2703c by Simon Hengel at 2012-10-15T00:36:42+02:00
Fix typo

- - - - -
3d109e44 by Simon Hengel at 2012-10-15T10:30:07+02:00
Add description for DeprecatedReExport test

- - - - -
84f0985c by Simon Hengel at 2012-10-15T14:54:19+02:00
Move resources to /resources directory

- - - - -
a5de7ca6 by Simon Hengel at 2012-10-15T15:46:18+02:00
Move HTML tests to directory /html-test/

- - - - -
e21f727d by Simon Hengel at 2012-10-15T19:32:42+02:00
Move HTML reference renderings to /html-test/ref/

- - - - -
3a3c6c75 by Simon Hengel at 2012-10-15T19:32:42+02:00
Copy css, images, etc. on accept

- - - - -
40ead6dc by Simon Hengel at 2012-10-15T19:32:42+02:00
Move unit tests to /test directory

- - - - -
99a28231 by Simon Hengel at 2012-10-15T19:32:42+02:00
Fix Setup.lhs

/usr/bin/runhaskell is not installed on all systems.

- - - - -
95faf45e by Simon Hengel at 2012-10-15T19:32:42+02:00
Make test management scripts more robust

 * They are now independent from the current directory, and hence can be
   called from everywhere

 * On UNIX/Linux they can now be run as scripts

- - - - -
027aaa2d by Simon Hengel at 2012-10-15T19:53:40+02:00
Add 'dev' flag to cabal file, that builds without -O2

That way --disable-optimization can be used, which decreases build time
considerably.

- - - - -
e0266ede by Simon Hengel at 2012-10-15T20:03:43+02:00
Add test case for "spurious superclass constraints bug"

- - - - -
52a2aa92 by Simon Hengel at 2012-10-15T20:28:55+02:00
Adapt accept.lhs, so that it ignores more index files

- - - - -
53530781 by Simon Hengel at 2012-10-15T20:49:39+02:00
Rename html-test/runtests.lhs to html-test/run.lhs

- - - - -
84518797 by Simon Hengel at 2012-10-15T20:49:39+02:00
Move source files for HTML tests to html-test/src

- - - - -
a911dc6c by Simon Hengel at 2012-10-15T20:49:39+02:00
Adapt output directory for HTML tests

- - - - -
d3c15857 by Ian Lynagh at 2012-10-16T16:54:43+01:00
Follow dopt->gopt rename

- - - - -
956665a5 by Simon Hengel at 2012-10-18T08:42:48+02:00
Update html-test/README

- - - - -
903b1029 by Simon Hengel at 2012-10-18T08:50:26+02:00
Use markdown for html-test/README

- - - - -
150b4d63 by Ian Lynagh at 2012-10-18T16:36:00+01:00
Follow changes in GHC: 'flags' has been renamed 'generalFlags'

- - - - -
41e04ff9 by Simon Hengel at 2012-11-28T09:54:35+01:00
Export missing types from Documentation.Haddock

- - - - -
9be59237 by Ian Lynagh at 2012-11-30T23:20:47+00:00
Update dependencies

- - - - -
e06842f5 by Simon Hengel at 2012-12-07T20:58:05+01:00
Bump version

- - - - -
e3dbede0 by Simon Hengel at 2012-12-07T20:58:05+01:00
Add missing test files to cabal file (fixes haskell/haddock#230)

- - - - -
ee0dcca7 by Simon Hengel at 2012-12-07T20:58:05+01:00
Update CHANGES

- - - - -
51601bdb by Simon Peyton Jones at 2012-12-19T17:28:35+00:00
Track changes in UNPACK pragma stuff

- - - - -
f2573bc1 by Richard Eisenberg at 2012-12-21T20:56:25-05:00
Implement overlapping type family instances.

An ordered, overlapping type family instance is introduced by 'type
instance
where', followed by equations. See the new section in the user manual
(7.7.2.2) for details. The canonical example is Boolean equality at the
type
level:

type family Equals (a :: k) (b :: k) :: Bool
type instance where
  Equals a a = True
  Equals a b = False

A branched family instance, such as this one, checks its equations in
order
and applies only the first the matches. As explained in the note
[Instance
checking within groups] in FamInstEnv.lhs, we must be careful not to
simplify,
say, (Equals Int b) to False, because b might later unify with Int.

This commit includes all of the commits on the overlapping-tyfams
branch. SPJ
requested that I combine all my commits over the past several months
into one
monolithic commit. The following GHC repos are affected: ghc, testsuite,
utils/haddock, libraries/template-haskell, and libraries/dph.

Here are some details for the interested:

- The definition of CoAxiom has been moved from TyCon.lhs to a
  new file CoAxiom.lhs. I made this decision because of the
  number of definitions necessary to support BranchList.

- BranchList is a GADT whose type tracks whether it is a
  singleton list or not-necessarily-a-singleton-list. The reason
  I introduced this type is to increase static checking of places
  where GHC code assumes that a FamInst or CoAxiom is indeed a
  singleton. This assumption takes place roughly 10 times
  throughout the code. I was worried that a future change to GHC
  would invalidate the assumption, and GHC might subtly fail to
  do the right thing. By explicitly labeling CoAxioms and
  FamInsts as being Unbranched (singleton) or
  Branched (not-necessarily-singleton), we make this assumption
  explicit and checkable. Furthermore, to enforce the accuracy of
  this label, the list of branches of a CoAxiom or FamInst is
  stored using a BranchList, whose constructors constrain its
  type index appropriately.

I think that the decision to use BranchList is probably the most
controversial decision I made from a code design point of view.
Although I provide conversions to/from ordinary lists, it is more
efficient to use the brList... functions provided in CoAxiom than
always to convert. The use of these functions does not wander far
from the core CoAxiom/FamInst logic.

BranchLists are motivated and explained in the note [Branched axioms] in
CoAxiom.lhs.

- The CoAxiom type has changed significantly. You can see the new
  type in CoAxiom.lhs. It uses a CoAxBranch type to track
  branches of the CoAxiom. Correspondingly various functions
  producing and consuming CoAxioms had to change, including the
  binary layout of interface files.

- To get branched axioms to work correctly, it is important to have a
  notion
  of type "apartness": two types are apart if they cannot unify, and no
  substitution of variables can ever get them to unify, even after type
family
  simplification. (This is different than the normal failure to unify
because
  of the type family bit.) This notion in encoded in tcApartTys, in
Unify.lhs.
  Because apartness is finer-grained than unification, the tcUnifyTys
now
  calls tcApartTys.

- CoreLinting axioms has been updated, both to reflect the new
  form of CoAxiom and to enforce the apartness rules of branch
  application. The formalization of the new rules is in
  docs/core-spec/core-spec.pdf.

- The FamInst type (in types/FamInstEnv.lhs) has changed
  significantly, paralleling the changes to CoAxiom. Of course,
  this forced minor changes in many files.

- There are several new Notes in FamInstEnv.lhs, including one
  discussing confluent overlap and why we're not doing it.

- lookupFamInstEnv, lookupFamInstEnvConflicts, and
  lookup_fam_inst_env' (the function that actually does the work)
  have all been more-or-less completely rewritten. There is a
  Note [lookup_fam_inst_env' implementation] describing the
  implementation. One of the changes that affects other files is
  to change the type of matches from a pair of (FamInst, [Type])
  to a new datatype (which now includes the index of the matching
  branch). This seemed a better design.

- The TySynInstD constructor in Template Haskell was updated to
  use the new datatype TySynEqn. I also bumped the TH version
  number, requiring changes to DPH cabal files. (That's why the
  DPH repo has an overlapping-tyfams branch.)

- As SPJ requested, I refactored some of the code in HsDecls:

 * splitting up TyDecl into SynDecl and DataDecl, correspondingly
   changing HsTyDefn to HsDataDefn (with only one constructor)

 * splitting FamInstD into TyFamInstD and DataFamInstD and
   splitting FamInstDecl into DataFamInstDecl and TyFamInstDecl

 * making the ClsInstD take a ClsInstDecl, for parallelism with
   InstDecl's other constructors

 * changing constructor TyFamily into FamDecl

 * creating a FamilyDecl type that stores the details for a family
   declaration; this is useful because FamilyDecls can appear in classes
but
   other decls cannot

 * restricting the associated types and associated type defaults for a
 * class
   to be the new, more restrictive types

 * splitting cid_fam_insts into cid_tyfam_insts and cid_datafam_insts,
   according to the new types

 * perhaps one or two more that I'm overlooking

None of these changes has far-reaching implications.

- The user manual, section 7.7.2.2, is updated to describe the new type
  family
  instances.

- - - - -
f788d0fb by Simon Peyton Jones at 2012-12-23T15:49:58+00:00
Track changes in HsBang

- - - - -
ca460a0c by Simon Peyton Jones at 2012-12-23T15:50:28+00:00
Merge branch 'master' of http://darcs.haskell.org//haddock

- - - - -
f078fea6 by Simon Peyton Jones at 2013-01-02T08:33:13+00:00
Use InstEnv.instanceSig rather than instanceHead (name change)

- - - - -
88e41305 by Simon Peyton Jones at 2013-01-14T17:10:27+00:00
Track change to HsBang type

- - - - -
e1ad4e19 by Kazu Yamamoto at 2013-02-01T11:59:24+09:00
Merge branch 'ghc-7.6' into ghc-7.6-merge-2

Conflicts:
	haddock.cabal
	src/Haddock/Interface/AttachInstances.hs
	src/Haddock/Interface/Create.hs
	src/Haddock/Interface/LexParseRn.hs
	src/Haddock/InterfaceFile.hs
	src/Haddock/Types.hs

Only GHC HEAD can compile this. GHC 7.6.x cannot compile this.

Some test fail.

- - - - -
62bec012 by Kazu Yamamoto at 2013-02-06T11:12:28+09:00
Using tcSplitSigmaTy in instanceHead' (FIXME is resolved.)

- - - - -
013fd2e4 by Kazu Yamamoto at 2013-02-06T17:56:21+09:00
Refactoring instanceHead'.

- - - - -
3148ce0e by Kazu Yamamoto at 2013-02-07T17:45:10+09:00
Using new syntax in html-test/src/GADTRecords.hs.

- - - - -
626dabe7 by Gabor Greif at 2013-02-15T22:42:01+01:00
Typo

- - - - -
1eb667ae by Ian Lynagh at 2013-02-16T17:02:07+00:00
Follow changes in base

- - - - -
3ef8253a by Ian Lynagh at 2013-03-01T23:23:57+00:00
Follow changes in GHC's build system

- - - - -
1a265a3c by Ian Lynagh at 2013-03-03T23:12:07+00:00
Follow changes in GHC build system

- - - - -
69941c79 by Max Bolingbroke at 2013-03-10T09:38:28-07:00
Use Alex 3's Unicode support to properly lex source files as UTF-8

Signed-off-by: David Waern <david.waern at gmail.com>

- - - - -
ea687dad by Simon Peyton Jones at 2013-03-15T14:16:10+00:00
Adapt to tcRnGetInfo returning family instances too

This API change was part of the fix to Trac haskell/haddock#4175.  But it offers new
information to Haddock: the type-family instances, as well as the
class instances, of this type.

This patch just drops the new information on the floor, but there's an
open opportunity to use it in the information that Haddock displays.

- - - - -
971a30b0 by Andreas Voellmy at 2013-05-19T20:47:39+01:00
Fix for haskell/haddock#7879.

Changed copy of utils/haddock/html/resources/html to use "cp -RL" rather than "cp -R". This allows users to run validate in a build tree, where the build tree was setup using lndir with a relative path to the source directory.

- - - - -
31fb7694 by Ian Lynagh at 2013-05-19T20:47:49+01:00
Use "cp -L" when making $(INPLACE_LIB)/latex too

- - - - -
e9952233 by Simon Hengel at 2013-06-01T18:06:50+02:00
Add -itest to .ghci

- - - - -
b06873b3 by Mateusz Kowalczyk at 2013-06-01T18:06:50+02:00
Workaround for a failing build with --enable-tests.

- - - - -
e7858d16 by Simon Hengel at 2013-06-01T19:29:28+02:00
Fix broken test

- - - - -
0690acb1 by Richard Eisenberg at 2013-06-21T14:08:25+01:00
Updates to reflect changes in HsDecls to support closed type families.

- - - - -
7fd347ec by Simon Hengel at 2013-07-08T10:28:48+02:00
Fix failing test

- - - - -
53ed81b6 by Simon Hengel at 2013-07-08T10:28:48+02:00
Fix failing test

- - - - -
931c4f4f by Richard Eisenberg at 2013-07-24T13:15:59+01:00
Remove (error "synifyKind") to use WithinType, to allow haddock to process base.

- - - - -
55a9c804 by Richard Eisenberg at 2013-08-02T15:54:55+01:00
Changes to reflect changes in GHC's type HsTyVarBndr

- - - - -
b6e9226c by Mathieu Boespflug at 2013-08-04T10:39:43-07:00
Output Copright and License keys in Xhtml backend.

This information is as relevant in the documentation as it is in the
source files themselves.

Signed-off-by: David Waern <david.waern at gmail.com>

- - - - -
4c66028a by David Waern at 2013-08-04T15:27:36-07:00
Bump interface file version.

- - - - -
67340163 by David Waern at 2013-08-09T16:12:51-07:00
Update tests.

- - - - -
2087569b by Mateusz Kowalczyk at 2013-08-25T09:24:13+02:00
Add spec tests.

This adds tests for all elements we can create during regular
parsing. This also adds tests for text with unicode in it.

- - - - -
97f36a11 by Mateusz Kowalczyk at 2013-08-27T06:59:12+01:00
Fix ticket haskell/haddock#247.

I do the same thing that the XHTML backend does: give these no special
treatment and just act as if they are regular functions.

- - - - -
60681b4f by Mateusz Kowalczyk at 2013-08-27T21:22:48+02:00
LaTeX tests setup

- - - - -
fa4c27b2 by Mateusz Kowalczyk at 2013-09-02T23:21:43+01:00
Fixes haskell/haddock#253

- - - - -
1a202490 by Mateusz Kowalczyk at 2013-09-03T01:12:50+01:00
Use Hspec instead of nanospec

This is motivated by the fact that Haddock tests are not ran by the
GHC's ‘validate’ script so we're pretty liberal on dependencies in that
area. Full Hspec gives us some nice features such as Quickcheck integration.

- - - - -
8cde3b20 by David Luposchainsky at 2013-09-08T07:27:28-05:00
Fix AMP warnings

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
d10661f2 by Herbert Valerio Riedel at 2013-09-11T15:15:01+02:00
Update Git repo URL in `.cabal` file

- - - - -
16a44eb5 by Richard Eisenberg at 2013-09-17T09:34:26-04:00
Revision to reflect new role annotation syntax in GHC.

- - - - -
4b9833b9 by Herbert Valerio Riedel at 2013-09-18T10:15:28+02:00
Add missing `traverse` method for `GenLocated`

As `Traversable` needs at least one of `traverse` or `sequenceA` to be
overridden.

Signed-off-by: Herbert Valerio Riedel <hvr at gnu.org>

- - - - -
b71fed5d by Simon Hengel at 2013-09-18T22:43:34+02:00
Add test helper

- - - - -
4fc1ea86 by Mateusz Kowalczyk at 2013-09-18T22:43:34+02:00
Fixes haskell/haddock#231

- - - - -
435872f6 by Mateusz Kowalczyk at 2013-09-18T22:43:34+02:00
Fixes haskell/haddock#256

We inject -dynamic-too into flags before we run all our actions in the
GHC monad.

- - - - -
b8b24abb by Mateusz Kowalczyk at 2013-09-18T22:43:35+02:00
Add new field to DynFlags

- - - - -
49558795 by Simon Hengel at 2013-09-18T22:43:35+02:00
Fallback to ./resources when Cabal data is not found

(so that themes are found during development)

- - - - -
bf79d05c by Mateusz Kowalczyk at 2013-09-18T22:43:35+02:00
Fixes haskell/haddock#5

- - - - -
e1baebc2 by Mateusz Kowalczyk at 2013-09-18T22:43:35+02:00
Print missing documentation. Fixes haskell/haddock#258.

- - - - -
02ea74de by Austin Seipp at 2013-10-09T10:52:22-05:00
Don't consider StaticFlags when parsing arguments.

Instead, discard any static flags before parsing the command line using
GHC's DynFlags parser.

See http://ghc.haskell.org/trac/ghc/ticket/8276

Based off a patch from Simon Hengel.

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
704fd5bb by Simon Hengel at 2013-11-09T00:15:13+01:00
Update HTML tests

- - - - -
f9fed49e by Simon Hengel at 2013-11-10T18:43:58+01:00
Bump version

- - - - -
97ae1999 by Simon Peyton Jones at 2013-11-25T17:25:14+00:00
Track changes in HsSpliceTy data constructor

- - - - -
59ad8268 by Simon Peyton Jones at 2014-01-10T18:17:43+00:00
Adapt to small change in Pretty's exports

- - - - -
8b12e6aa by Simon Hengel at 2014-01-12T14:48:35-06:00
Some code simplification by using traverse

- - - - -
fc5ea9a2 by Simon Hengel at 2014-01-12T14:48:35-06:00
Fix warnings in test helper

- - - - -
6dbb3ba5 by Mateusz Kowalczyk at 2014-01-12T14:48:35-06:00
Add ByteString version of Attoparsec

- - - - -
968d7774 by Mateusz Kowalczyk at 2014-01-12T14:48:35-06:00
One pass parser and tests.

We remove the HTML test as it is no longer necessary. We cover the
test case in spec tests and other HTML tests but keeping this around
fails: this is because the new parser has different semantics there.
In fact, I suspect the original behaviour was a bug that wasn't
caught/fixed but simply included as-is during the testing.

- - - - -
37a07c9c by Simon Hengel at 2014-01-12T14:48:35-06:00
Rename Haddock.ParseSpec to Haddock.ParserSpec

- - - - -
f0f68fe9 by Simon Hengel at 2014-01-12T14:48:35-06:00
Don't append newline to parseString input

We also check that we have parsed everything with endOfInput.

- - - - -
95d60093 by Simon Hengel at 2014-01-12T14:48:35-06:00
Fix totality, unicode, examples, paragraph parsing

Also simplify specs and parsers while we're at it. Some parsers were
made more generic.

This commit is a part of GHC pre-merge squash, email
fuuzetsu at fuuzetsu.co.uk if you need the full commit history.

- - - - -
7d99108c by Simon Hengel at 2014-01-12T14:48:35-06:00
Update acceptance tests

- - - - -
d1b59640 by Mateusz Kowalczyk at 2014-01-12T14:48:35-06:00
Support for bold.

Conflicts:
	src/Haddock/Backends/Hoogle.hs
	src/Haddock/Interface/Rename.hs
	src/Haddock/Parser.hs

- - - - -
4b412b39 by Mateusz Kowalczyk at 2014-01-12T14:48:35-06:00
Allow for headings inside function documentation.

LaTeX will treat the h3-h6 headings the same as we'd have to hack the
style file heavily otherwise and it would make the headings tiny
anyway.

Hoogle upstream said they will put in the functionality on their end.

Conflicts:
	src/Haddock/Interface/Rename.hs
	src/Haddock/Types.hs
	test/Haddock/ParserSpec.hs

- - - - -
fdcca428 by Mateusz Kowalczyk at 2014-01-12T14:48:35-06:00
Per-module extension flags and language listing.

Any extensions that are not enabled by a used language (Haskell2010
&c) will be shown. Furthermore, any implicitly enabled are also going
to be shown. While we could eliminate this either by using the GHC API
or a dirty hack, I opted not to: if a user doesn't want the implied
flags to show, they are recommended to use enable extensions more
carefully or individually. Perhaps this will encourage users to not
enable the most powerful flags needlessly. Enabled with show-extensions.

Conflicts:
	src/Haddock/InterfaceFile.hs

- - - - -
368942a2 by Mateusz Kowalczyk at 2014-01-12T14:48:36-06:00
Bump interface version

There were some breaking changes over the last few patches so we bump
the interface version. This causes a big problem with testing:

1. To generate cross package docs, we first need to generate docs for
the package used.
2. To generate package docs with new interface version, we need to use
Haddock which has the version bumped.
3. To get Haddock with the version bump, we first need to test cross
package docs
4. GOTO 1

So the problem is the chicken and the egg problem. It seems that the
only solution would be to generate some interface files on the fly but
it is non-trivial.

To run this test, you'll have to:

* build Haddock without the test (make sure everything else passes)
* rebuild the packages used in the test with your shiny new binary
  making sure they are visible to Haddock
* remove the ‘_hidden’ suffix and re-run the tests

Note: because the packages currently used for this test are those
provided by GHC, it's probably non-trivial to just re-build them.
Preferably something less tedious to rebuild should be used and
something that is not subject to change.

- - - - -
124ae7a9 by Mateusz Kowalczyk at 2014-01-12T14:48:36-06:00
Allow for nesting of paragraphs under lists.

The nesting rules are similar to Markdown's with the exception that we
can not simply indent the first line of a hard wrapped indented
paragraph and have it treated as if it was fully indented. The reason is
differences in markup as some of our constructs care about whitespace
while others just swallow everything up so it's just a lot easier to not
bother with it rather than making arbitrary rules.

Note that we now drop trailing for string entities inside of lists. They
weren't needed and it makes the output look uniform whether we use a
single or double newline between list elements.

Conflicts:
	src/Haddock/Parser.hs
	test/Haddock/ParserSpec.hs

- - - - -
c7913535 by Mateusz Kowalczyk at 2014-01-12T14:48:36-06:00
Allow escaping in URLs and pictures.

Some tests were moved under parseString as they weren't about paragraph
level markup.

Conflicts:
	src/Haddock/Parser.hs
	test/Haddock/ParserSpec.hs

- - - - -
32326680 by Mateusz Kowalczyk at 2014-01-12T14:48:36-06:00
Update documentation.

- - - - -
fbef6406 by Mateusz Kowalczyk at 2014-01-12T14:48:36-06:00
Update maintainer

- - - - -
b40e82f4 by Mateusz Kowalczyk at 2014-01-13T02:39:25-06:00
Fixes haskell/haddock#271

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
f4eafbf8 by Gergő Érdi at 2014-01-19T15:35:16-06:00
Support for -XPatternSynonyms

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
a8939591 by Austin Seipp at 2014-01-29T08:09:04-06:00
Update CPP check for __GLASGOW_HASKELL__

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
30d7e9d5 by Gergő Érdi at 2014-01-31T00:15:01+08:00
<+>: Don't insert a space when concatenating empty nodes

- - - - -
a25ccd4d by Mateusz Kowalczyk at 2014-01-30T17:22:34+01:00
Fix @ code blocks

In cases where we had some horizontal space before the closing ‘@’, the
parser would not accept the block as a code block and we'd get ugly
output.

- - - - -
0f67305a by Mateusz Kowalczyk at 2014-01-30T17:22:34+01:00
Update tests

This updates tests due to Haddock Trac haskell/haddock#271 fix and due to removal of
TypeHoles as an extension from GHC.

- - - - -
157322a7 by Gergő Érdi at 2014-01-31T01:03:17+08:00
Handle infix vs prefix names correctly everywhere, by explicitly specifying the context

The basic idea is that "a" and "+" are either pretty-printed as "a" and "(+)"  or "`a`" and "+"

- - - - -
aa6d9685 by Mateusz Kowalczyk at 2014-01-30T17:21:50+00:00
Correct whitespace in ‘hidden’ test for <+> change

- - - - -
121872f0 by Mateusz Kowalczyk at 2014-02-09T17:59:12+00:00
Document module header.

Fixes Haddock Trac haskell/haddock#270.

- - - - -
e3253746 by Mateusz Kowalczyk at 2014-02-10T21:37:48+00:00
Insert a space between module link and description

Fixes Haddock Trac haskell/haddock#277.

- - - - -
771d2384 by Mateusz Kowalczyk at 2014-02-10T23:27:21+00:00
Ensure a space between type signature and ‘Source’

This is briefly related to Haddock Trac haskell/haddock#249 and employs effectively the
suggested fix _but_ it doesn't actually fix the reported issue. This
commit simply makes copying the full line a bit less of a pain.

- - - - -
8cda9eff by nand at 2014-02-11T15:48:30+00:00
Add support for type/data families

This adds support for type/data families with their respective
instances, as well as closed type families and associated type/data
families.

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
3f22c510 by nand at 2014-02-11T15:53:50+00:00
Improve display of poly-kinded type operators

This now displays them as (==) k a b c ... to mirror GHC's behavior,
instead of the old (k == a) b c ... which was just wrong.

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
effb2d6b by nand at 2014-02-11T15:56:50+00:00
Add test case for PatternSynonyms

This just tests various stuff including poly-kinded patterns and
operator patterns to make sure the rendering isn't broken.

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
b38faf0d by Niklas Haas at 2014-02-13T21:53:32+00:00
Get rid of re-implementation of sortBy

I have no idea what this was doing lying around here, and due to the
usage of tuples it's actually slower, too.

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
ac1e0413 by Mateusz Kowalczyk at 2014-02-13T23:57:16+00:00
Only warn about missing docs when docs are missing

This fixes the ‘Missing documentation for…’ message for modules with
100% coverage.

- - - - -
cae2e36a by Niklas Haas at 2014-02-15T21:56:18+00:00
Add test case for inter-module type/data family instances

These should show up in every place where the class is visible, and
indeed they do right now.

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
8bea5c3a by Mateusz Kowalczyk at 2014-02-19T05:11:34+00:00
Use a bespoke data type to indicate fixity

This deals with what I imagine was an ancient TODO and makes it much
clearer what the argument actually does rather than having the user
chase down the comment.

- - - - -
5b52d57c by Niklas Haas at 2014-02-22T21:31:03+01:00
Strip a single leading space from bird tracks (#201)

This makes bird tracks in the form

> foo
> bar
> bat

parse as if they had been written as

>foo
>bar
>bat

ie. without the leading whitespace in front of every line.

Ideally we also want to look into how leading whitespace affects code
blocks written using the @ @ syntax, which are currently unaffected by
this patch.

- - - - -
5a1315a5 by Simon Hengel at 2014-02-22T21:55:35+01:00
Turn a source code comment into specs

- - - - -
784cfe58 by Mateusz Kowalczyk at 2014-02-23T05:02:22+00:00
Update test case for lifted GADT type rendering

The parsing of these seems to have been fixed by GHC folk and it now
renders differently. IMHO it now renders in a better way so I'm updating
the test to reflect this.

- - - - -
c3c88c2f by Mateusz Kowalczyk at 2014-02-23T06:37:14+00:00
Don't shadow ‘strip’.

-Wall complains

- - - - -
293031d8 by Niklas Haas at 2014-02-23T15:21:52+01:00
Make ImplicitParams render correctly (#260)

This introduces a new precedence level for single contexts (because
implicit param contexts always need parens around them, but other types
of contexts don't necessarily, even when alone)

- - - - -
4200842d by Niklas Haas at 2014-02-23T15:37:13+01:00
Lower precedence of equality constraints

This drops them to the new precedence pREC_CTX, which makes single
eqaulity constraints show up as (a ~ b) => ty, in line with GHC's
rendering. Additional tests added to make sure other type operators
render as intended. Current behavior matches GHC

- - - - -
b59e3227 by Niklas Haas at 2014-02-23T16:11:22+01:00
Add RankNTypes test case to ImplicitParams.hs

This test actually tests what haskell/haddock#260 originally reported - I omitted the
RankNTypes scenario from the original fix because I realized it's not
relevant to the underlying issue and indeed, this renders as intended
now. Still good to have more tests.

- - - - -
c373dbf7 by Mateusz Kowalczyk at 2014-02-24T06:09:54+00:00
Fix rendering of Contents when links are present

Fixes Haddock Trac haskell/haddock#267.

- - - - -
9ecb0e56 by Mateusz Kowalczyk at 2014-02-24T06:26:50+00:00
Fix wording in the docs

- - - - -
4f4dcd8e by Mateusz Kowalczyk at 2014-02-27T03:00:33+00:00
Change rendering of duplicate record field docs

See Haddock Trac haskell/haddock#195. We now change this behaviour to only rendering
the documentation attached to the first instance of a duplicate field.

Perhaps we could improve this by rendering the first instance that has
documentation attached to it but for now, we'll stick with this.

- - - - -
ad8aa609 by Niklas Haas at 2014-03-08T09:43:26+01:00
Render fixity information

Affects functions, type synonyms, type families, class names, data type
names, constructors, data families, associated TFs/DFs, type synonyms,
pattern synonyms and everything else I could think of.

- - - - -
6a39c917 by Niklas Haas at 2014-03-09T07:43:39+01:00
Reorder topDeclElem to move the source/wiki links to the top

They appear in the same position due to the float: right attribute but
now they're always at the top of the box instead of at the bottom.

- - - - -
2d34b3b4 by Niklas Haas at 2014-03-09T07:53:46+01:00
Use optLast instead of listToMaybe for sourceUrls/wikiUrls

This lets you override them using eg. cabal haddock --haddock-options,
which can come in handy if you want to use a different layout or URL for
your source code links than cabal-install generates.

- - - - -
0eff4624 by Niklas Haas at 2014-03-09T07:53:46+01:00
Differentiate between TH splices (line-links) and regular names

This adds a new type of source code link, to a specific line rather than
a specific declaration/name - this is used to link to the location of a
TH splice that defines a certain name.

Rather hefty changes throughout and still one unresolved issue (the line
URLs aren't parsed from the third form of --read-interface which means
they're currently restricted to same-interface links). Not sure if
this issue is really worth all the hassle, especially since we could
just use line links in general.

This commit also contains some cleanup/clarification of the types in
Haddock.Backends.Xhtml.Decl and shortens some overlong lines in the
process. Notably, the Bool parameter was replaced by a Unicode type
synonym to help clarify its presence in type signatures.

- - - - -
66d6f77b by Niklas Haas at 2014-03-09T20:02:43+01:00
Group similar fixities together

Identical fixities declared for the same line should now render using
syntax like: infix 4 <, >=, >, <=

- - - - -
6587f9f5 by Mateusz Kowalczyk at 2014-03-10T04:24:18+00:00
Update changelog

- - - - -
7387ddad by Niklas Haas at 2014-03-11T10:26:04+01:00
Include fixity information in the Interface file

This resolves fixity information not appearing across package borders.

The binary file version has been increased accordingly.

- - - - -
ab46ef44 by Niklas Haas at 2014-03-11T10:26:04+01:00
Update changelog

- - - - -
565cab6f by Niklas Haas at 2014-03-11T10:26:04+01:00
Update appearance of fixity annotations

This moves them in-line with their corresponding lines, similar to a
presentation envision by @hvr and described in #ghc.

Redundant operator names are also omitted when no ambiguity is present.

- - - - -
5d7afd67 by Niklas Haas at 2014-03-11T10:26:05+01:00
Filter family instances of hidden types

Currently, this check does not extend to hidden right hand sides,
although it probably should hide them in that case.

- - - - -
ec291b0c by Niklas Haas at 2014-03-11T10:26:05+01:00
Add documentation for --source-entity-line

- - - - -
0922e581 by Niklas Haas at 2014-03-11T10:37:32+01:00
Revert "Reorder topDeclElem to move the source/wiki links to the top"

This reverts commit 843c42c4179526a2ad3526e4c7d38cbf4d50001d.

This change is no longer needed with the new rendering style, and it
messes with copy/pasting lines.

- - - - -
30618e8b by Mateusz Kowalczyk at 2014-03-11T09:41:07+00:00
Bump version to 2.15.0

- - - - -
adf3f1bb by Mateusz Kowalczyk at 2014-03-11T09:41:09+00:00
Fix up some whitespace

- - - - -
8905f57d by Niklas Haas at 2014-03-13T19:18:06+00:00
Hide RHS of TFs with non-exported right hand sides

Not sure what to do about data families yet, since technically it would
not make a lot of sense to display constructors that cannot be used by
the user.

- - - - -
5c44d5c2 by Niklas Haas at 2014-03-13T19:18:08+00:00
Add UnicodeSyntax alternatives for * and ->

I could not find a cleaner way to do this other than checking for
string equality with the given built-in types. But seeing as it's
actually equivalent to string rewriting in GHC's implementation of
UnicodeSyntax, it's probably fitting.

- - - - -
b04a63e6 by Niklas Haas at 2014-03-13T19:18:10+00:00
Display minimal complete definitions for type classes

This corresponds to the new {-# MINIMAL #-} pragma present in GHC 7.8+.
I also cleaned up some of the places in which ExportDecl is used to make
adding fields easier in the future.

Lots of test cases have been updated since they now render with
minimality information.

- - - - -
a4a20b16 by Niklas Haas at 2014-03-13T19:18:12+00:00
Strip links from recently added html tests

These were accidentally left there when the tests were originally added

- - - - -
d624f315 by Mateusz Kowalczyk at 2014-03-13T19:19:31+00:00
Update changelog

- - - - -
d27a21ac by Mateusz Kowalczyk at 2014-03-13T21:19:07+00:00
Always read in prologue files as UTF8 (#286).

- - - - -
54b2fd78 by Mateusz Kowalczyk at 2014-03-13T21:28:09+00:00
Style only

- - - - -
fa4fe650 by Simon Hengel at 2014-03-15T09:04:18+01:00
Add Fuuzetsu maintainers field in cabal file

- - - - -
f83484b7 by Niklas Haas at 2014-03-15T18:20:24+00:00
Hide minimal definition for only-method classes

Previously this was not covered by the All xs check since here it is not
actually an All, rather a single Var n.

This also adds the previously missing html-test/src/Minimal.hs.

- - - - -
0099d276 by Niklas Haas at 2014-03-15T18:20:26+00:00
Fix issue haskell/haddock#281

This is a regression from the data family instances change. Data
instances are now distinguished from regular lists by usage of the new
class "inst", and the style has been updated to only apply to those.

I've also updated the appropriate test case to test this a bit better,
including GADT instances with GADT-style records.

- - - - -
1f9687bd by Mateusz Kowalczyk at 2014-03-21T17:48:37+00:00
Please cabal sdist

- - - - -
75542693 by Mateusz Kowalczyk at 2014-03-22T16:36:16+00:00
Drop needless --split-objs which slows us down.

Involves tiny cleanup of all the dynflag bindings. Fixes haskell/haddock#292.

- - - - -
31214dc3 by Herbert Valerio Riedel at 2014-03-23T18:01:01+01:00
Fix a few typos

Signed-off-by: Herbert Valerio Riedel <hvr at gnu.org>

- - - - -
0b73e638 by Mateusz Kowalczyk at 2014-03-31T05:34:36+01:00
Print kind signatures on GADTs

- - - - -
2bab42f3 by Mateusz Kowalczyk at 2014-03-31T16:53:25+01:00
Add default for new PlatformConstraints field

- - - - -
42647c5f by Mateusz Kowalczyk at 2014-03-31T18:29:04+01:00
Drop leading whitespace in @-style blocks.

Fixes haskell/haddock#201.

- - - - -
98208294 by Niklas Haas at 2014-03-31T20:09:58+02:00
Crash when exporting record selectors of data family instances

This fixes bug haskell/haddock#294.

This also fixes a related but never-before-mentioned bug about the
display of GADT record selectors with non-polymorphic type signatures.

Note: Associated data type constructors fail to show up if nothing is
exported that they could be attached to. Exporting any of the data types
in the instance head, or the class + data family itself, causes them to
show up, but in the absence of either of these, exporting just the
associated data type with the constructor itself will result in it
being hidden.

The only scenario I can come up that would involve this kind of
situation involved OverlappingInstances, and even then it can be
mitigated by just exporting the class itself, so I'm not going to solve
it since the logic would most likely be very complicated.

- - - - -
3832d171 by Mateusz Kowalczyk at 2014-04-01T19:07:33+01:00
Make CHANGES consistent with what's now in 2.14.2

- - - - -
c386ae89 by Mateusz Kowalczyk at 2014-04-01T19:18:36+01:00
Actually bundle extra spec tests in sdist

- - - - -
bd57a6d3 by Mateusz Kowalczyk at 2014-04-03T21:13:48+01:00
Update test cases for GHC bug haskell/haddock#8945, Haddock haskell/haddock#188

The order of signature groups has been corrected upstream. Here we add a
test case and update some existing test-cases to reflect this change. We
remove grouped signature in test cases that we can (Minimal,
BugDeprecated &c) so that the test is as self-contained as possible.

- - - - -
708b88b1 by Mateusz Kowalczyk at 2014-04-03T21:16:07+01:00
Enforce strict GHC version in cabal file

This stops people with 7.6.3 trying to install 2.15.x which clearly
won't work. Unfortunately we shipped 2.14.x without realising this.

- - - - -
60334f7c by Mateusz Kowalczyk at 2014-04-03T21:19:24+01:00
Initialise some new PlatformConstants fields

- - - - -
ea77f668 by Mateusz Kowalczyk at 2014-04-11T16:52:23+01:00
We don't actually want unicode here

- - - - -
0b651cae by Mateusz Kowalczyk at 2014-04-11T18:13:30+01:00
Parse identifiers with ^ and ⋆ in them.

Fixes haskell/haddock#298.

- - - - -
e8ad0f5f by Mateusz Kowalczyk at 2014-04-11T18:47:41+01:00
Ignore version string during HTML tests.

- - - - -
de489089 by Mateusz Kowalczyk at 2014-04-11T18:59:30+01:00
Update CHANGES to follow 2.14.3

- - - - -
beb464a9 by Gergő Érdi at 2014-04-13T16:31:10+08:00
remove Origin flag from LHsBindsLR

- - - - -
cb16f07c by Herbert Valerio Riedel at 2014-04-21T17:16:50+02:00
Replace local `die` by new `System.Exit.die`

Starting with GHC 7.10, System.Exit exports the new `die`
which is essentially the same as Haddock.Util.die, so this
commit changes Haddock.Util.die to be a simple re-export
of System.Exit.die. See also

  https://ghc.haskell.org/trac/ghc/ticket/9016

for more details.

Signed-off-by: Herbert Valerio Riedel <hvr at gnu.org>

- - - - -
9b9b23c7 by Mateusz Kowalczyk at 2014-05-03T15:40:11+02:00
Disambiguate ‘die’ in test runners.

- - - - -
5d28a2b8 by Mateusz Kowalczyk at 2014-05-05T09:19:49+02:00
Prepare modules for parser split.

We have to generalise the Doc (now DocH) slightly to remove the
dependency on GHC-supplied type.

- - - - -
d3967ff3 by Mateusz Kowalczyk at 2014-05-05T11:00:41+02:00
Move parser + parser tests out to own package.

We move some types out that are necessary as well and then
re-export and specialise them in the core Haddock.

Reason for moving out spec tests is that if we're working on the parser,
we can simply work on that and we can ignore the rest of Haddock. The
downside is that it's a little inconvenient if at the end of the day we
want to see that everything passes.

- - - - -
522a448d by Mateusz Kowalczyk at 2014-05-05T11:14:47+02:00
Move out Show and Eq instances to Types

They are much more useful to the users here.

- - - - -
11a6f0f2 by Mateusz Kowalczyk at 2014-05-06T13:50:31+02:00
Remove no longer necessary parser error handling.

We can now drop some Maybe tests and even lets us strip an error
handling monad away in a few places.

- - - - -
6992c924 by Mateusz Kowalczyk at 2014-05-14T02:23:55+02:00
Please the GHC build-system.

As I can not figure out how to do this properly, if we're in GHC tree,
we treat the library as being the same package. If we're not in the
tree, we require that the library be installed separately.

- - - - -
7a8ad763 by Mateusz Kowalczyk at 2014-05-14T14:50:25+02:00
Update issue tracker URL

- - - - -
f616c521 by Mateusz Kowalczyk at 2014-05-14T14:53:32+02:00
Update issue tracker URL for haddock-library

- - - - -
66580ded by Gergő Érdi at 2014-05-25T14:24:16+08:00
Accomodate change in PatSyn representation

- - - - -
0e43b988 by Mateusz Kowalczyk at 2014-05-29T03:15:29+02:00
Revert "Accomodate change in PatSyn representation"

This reverts commit 57aa591362d7c8ba21285fccd6a958629a422091. I am
reverting this because I pushed it to master when it was meant to stay
on a wip-branch. Sorry Gergo and everyone who had trouble due to this.

- - - - -
e10d7ec8 by Mateusz Kowalczyk at 2014-05-29T03:24:11+02:00
Revert "Revert "Accomodate change in PatSyn representation""

This reverts commit e110e6e70e40eed06c06676fd2e62578da01d295.

Apparently as per GHC commit ac2796e6ddbd54c5762c53e2fcf29f20ea162fd5
this was actually intended. Embarrasing for me.

- - - - -
5861aca9 by Mateusz Kowalczyk at 2014-06-05T19:49:27+02:00
Clear up highlighting of identifiers with ‘'’s.

- - - - -
d7cc420f by Simon Peyton Jones at 2014-06-06T12:41:09+01:00
Follow change in patSynSig

- - - - -
938b4fd8 by Mateusz Kowalczyk at 2014-06-12T07:24:29+02:00
Slightly update the readme.

Style-sheets are no longer a recent thing, dead links, old maintainers,
different formats.

- - - - -
c7799dea by Mateusz Kowalczyk at 2014-06-18T00:05:56+02:00
Update cabal files

Update repository urls, use subdir property for haddock-library and use
a separate versioning scheme for haddock-library in preparation for release.

- - - - -
a2750b6a by Simon Hengel at 2014-06-18T11:01:18+08:00
Compatibility with older versions of base and bytestring

- - - - -
009b4b03 by Simon Hengel at 2014-06-18T11:14:01+08:00
Enable travis-ci for haddock-library

- - - - -
9b5862eb by Simon Hengel at 2014-06-18T11:14:01+08:00
haddock-library: Do not depend on haddock-library in test suite

I think you either add src to hs-source-dirs or the library to
build-depends.  But doing both does not make sense (AFAICT).

- - - - -
fb1f3279 by Simon Hengel at 2014-06-18T11:49:05+08:00
haddock-library: Use -Wall for specs

- - - - -
649340e1 by Mateusz Kowalczyk at 2014-06-18T06:58:54+02:00
Use Travis with multiple GHC versions

When using HEAD, we build haddock-library directly from repository as a
dependency (and thanks to --enable-tests, the tests get ran anyway). In
all other cases, we manually run the tests on haddock-library only and
don't test the main project.

- - - - -
d7eeeec2 by Mateusz Kowalczyk at 2014-06-18T07:49:04+02:00
Comment improvements + few words in cabal file

- - - - -
0f8db914 by Simon Hengel at 2014-06-18T13:52:23+08:00
Use doctest to check examples in documentation

- - - - -
2888a8dc by Simon Hengel at 2014-06-18T14:16:48+08:00
Remove doctest dependency

(so that we can use haddock-library with doctest)

- - - - -
626d5e85 by Mateusz Kowalczyk at 2014-06-18T08:41:25+02:00
Travis tweaks

- - - - -
41d4f9cc by Mateusz Kowalczyk at 2014-06-18T08:58:43+02:00
Don't actually forget to install specified GHC.

- - - - -
c6aa512a by John MacFarlane at 2014-06-18T10:43:57-07:00
Removed reliance on LambdaCase (which breaks build with ghc 7.4).

- - - - -
b9b93b6f by John MacFarlane at 2014-06-18T10:54:56-07:00
Fixed haddock warnings.

- - - - -
a41b0ab5 by Mateusz Kowalczyk at 2014-06-19T01:20:10+02:00
Update Travis, bump version

- - - - -
864bf62a by Mateusz Kowalczyk at 2014-06-25T10:36:54+02:00
Fix anchors. Closes haskell/haddock#308.

- - - - -
53df91bb by Mateusz Kowalczyk at 2014-06-25T15:04:49+02:00
Drop DocParagraph from front of headers

I can not remember why they were wrapped in paragraphs to begin with and
it seems unnecessary now that I test it. Closes haskell/haddock#307.

- - - - -
29b5f2fa by Mateusz Kowalczyk at 2014-06-25T15:17:20+02:00
Don't mangle append order for nested lists.

The benefit of this is that the ‘top-level’ element of such lists is
properly wrapped in <p> tags so any CSS working with these will be
applied properly. It also just makes more sense.

Pointed out at jgm/pandoc#1346.

- - - - -
05cb6e9c by Mateusz Kowalczyk at 2014-06-25T15:19:45+02:00
Bump haddock-library to 1.1.0 for release

- - - - -
70feab15 by Iavor Diatchki at 2014-07-01T03:37:07-07:00
Propagate overloading-mode for instance declarations in haddock (#9242)

- - - - -
d4ca34a7 by Simon Peyton Jones at 2014-07-14T16:23:15+01:00
Adapt to new definition of HsDecls.TyFamEqn

This is a knock-on from the refactoring from Trac haskell/haddock#9063.
I'll push the corresponding changes to GHC shortly.

- - - - -
f91e2276 by Edward Z. Yang at 2014-07-21T08:14:19-07:00
Track GHC PackageId to PackageKey renaming.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

Conflicts:
	src/Haddock/Interface/Create.hs

- - - - -
b010f9ef by Edward Z. Yang at 2014-07-25T16:28:46-07:00
Track changes for module reexports.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

Conflicts:
	src/Haddock/Interface/Create.hs

- - - - -
8b85f9f9 by Mateusz Kowalczyk at 2014-07-28T13:25:43+02:00
Catch mid-line URLs. Fixes haskell/haddock#314.

- - - - -
4c613a78 by Edward Z. Yang at 2014-08-05T03:11:00-07:00
Track type signature change of lookupModuleInAllPackages

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
e80b051c by Edward Z. Yang at 2014-08-05T17:34:26+01:00
If GhcProfiled, also build Haddock profiled.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
f9cccd29 by Edward Z. Yang at 2014-08-07T14:23:35+01:00
Ignore TAGS files.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
00b3af52 by Mateusz Kowalczyk at 2014-08-08T04:58:19+02:00
Update to attoparsec-0.12.1.1

There seems to be memory and speed improvement.

- - - - -
5457dc71 by Mateusz Kowalczyk at 2014-08-08T18:24:02+02:00
Fix forgotten src

- - - - -
3520cb04 by Mateusz Kowalczyk at 2014-08-14T20:19:07+01:00
Bump down the version for master to 2.14.4

- - - - -
dc98c21b by Mateusz Kowalczyk at 2014-08-14T20:23:27+01:00
Revert "Track type signature change of lookupModuleInAllPackages"

This reverts commit d59fec2c9551b5662a3507c0011e32a09a9c118f.

- - - - -
3f2038c0 by Mateusz Kowalczyk at 2014-08-14T20:23:31+01:00
Revert "Track changes for module reexports."

This reverts commit b99b57c0df072d12b67816b45eca2a03cb1da96d.

- - - - -
56d4e49e by Mateusz Kowalczyk at 2014-08-14T20:23:42+01:00
Revert "Track GHC PackageId to PackageKey renaming."

This reverts commit 8ac42d3327473939c013551750425cac191ff0fd.

- - - - -
726ea3cb by Mateusz Kowalczyk at 2014-08-14T20:23:47+01:00
Revert "Adapt to new definition of HsDecls.TyFamEqn"

This reverts commit cb96b4f1ed0462b4a394b9fda6612c3bea9886bd.

- - - - -
61a88ff0 by Mateusz Kowalczyk at 2014-08-14T20:23:52+01:00
Revert "Propagate overloading-mode for instance declarations in haddock (#9242)"

This reverts commit 8d20ca8d5a9bee73252ff2035ec45f9c03d0820c.

- - - - -
a32ba674 by Mateusz Kowalczyk at 2014-08-14T20:26:03+01:00
Revert "Disambiguate ‘die’ in test runners."

This reverts commit dba02d6df32534aac5d257f2d28596238d248942.

- - - - -
f335820f by Mateusz Kowalczyk at 2014-08-14T20:26:09+01:00
Revert "Replace local `die` by new `System.Exit.die`"

This reverts commit 08aa509ebac58bfb202ea79c7c41291ec280a1c5.

- - - - -
107078e4 by Mateusz Kowalczyk at 2014-08-14T20:27:34+01:00
Merge branch 'reverts'

This reverts any changes that were made to have Haddock compile with
7.9. When 7.10 release comes, we can simply re-apply all the patches and
any patches that occur on ghc-head branch from now on.

This allows us to build master with 7.8.3

- - - - -
b44b3871 by Mateusz Kowalczyk at 2014-08-15T02:47:40+01:00
Fix haskell/haddock#313 by doing some list munging.

I get rid of the Monoid instance because we weren't satisfying the laws.
Convenience of having <> didn't outweigh the shock-factor of having it
behave badly.

- - - - -
e1a62cde by Mateusz Kowalczyk at 2014-08-15T02:52:56+01:00
Stop testing haskell/haddock#188.

Because the change is in GHC 7.9 and we now work against 7.8.3, this
test no longer makes sense. We revert it until 7.10 becomes the standard
version. If anything, there should be a test for this in GHC itself.

- - - - -
54e8286d by Mateusz Kowalczyk at 2014-08-15T05:31:57+01:00
Add haskell/haddock#313 to CHANGES

- - - - -
9df7ad5d by Simon Hengel at 2014-08-20T11:25:32+08:00
Fix warning

- - - - -
ee2574d6 by Simon Hengel at 2014-08-20T12:07:01+08:00
Fix travis builds

- - - - -
384cf2e6 by Simon Hengel at 2014-08-20T12:14:31+08:00
Require GHC 7.8.3

- - - - -
d4779863 by Simon Hengel at 2014-08-22T12:14:16+08:00
Move Haddock API to a separate package

- - - - -
80f3e0e1 by Simon Hengel at 2014-08-22T14:57:38+08:00
Bump version to 2.15.0 and add version constraints

- - - - -
309a94ce by Simon Hengel at 2014-08-22T15:18:06+08:00
Add deprecated compatibility module

- - - - -
4d1e4e3f by Luite Stegeman at 2014-08-22T20:46:45+02:00
export things to allow customizing how the Ghc session is run

- - - - -
47884591 by Luite Stegeman at 2014-08-22T20:46:51+02:00
ghc 7.8.2 compatibility

- - - - -
5ea94e2c by Luite Stegeman at 2014-08-22T22:08:58+02:00
install dependencies for haddock-api on travis

- - - - -
9fb845b2 by Mateusz Kowalczyk at 2014-08-23T10:09:34+01:00
Move sources under haddock-api/src

- - - - -
85817dc4 by Mateusz Kowalczyk at 2014-08-23T10:10:48+01:00
Remove compat stuff

- - - - -
151c6169 by Niklas Haas at 2014-08-24T08:14:10+02:00
Fix extra whitespace on signatures and update all test cases

This was long overdue, now running ./accept.lhs on a clean test from
master will not generate a bunch of changes.

- - - - -
d320e0d2 by Niklas Haas at 2014-08-24T08:14:35+02:00
Omit unnecessary foralls and fix haskell/haddock#315

This also fixes haskell/haddock#86.

- - - - -
bdafe108 by Mateusz Kowalczyk at 2014-08-24T15:06:46+01:00
Update CHANGES

- - - - -
fafa6d6e by Mateusz Kowalczyk at 2014-08-24T15:14:23+01:00
Delete few unused/irrelevant/badly-place files.

- - - - -
3634923d by Duncan Coutts at 2014-08-27T13:49:31+01:00
Changes due to ghc api changes in package representation

Also fix a bug with finding the package name and version given a
module. This had become wrong due to the package key changes (it was
very hacky in the first place). We now look up the package key in the
package db to get the package info properly.

- - - - -
539a7e70 by Herbert Valerio Riedel at 2014-08-31T11:36:32+02:00
Import Data.Word w/o import-list

This is needed to keep the compilation warning free (and thus pass GHC's
./validate) regardless of whether Word is re-exported from Prelude or not

See https://ghc.haskell.org/trac/ghc/ticket/9531 for more details

- - - - -
9e3a0e5b by Mateusz Kowalczyk at 2014-08-31T12:54:43+01:00
Bump version in doc

- - - - -
4a177525 by Mateusz Kowalczyk at 2014-08-31T13:01:23+01:00
Bump haddock-library version

- - - - -
f99c1384 by Mateusz Kowalczyk at 2014-08-31T13:05:25+01:00
Remove references to deleted files

- - - - -
5e51a247 by Mateusz Kowalczyk at 2014-08-31T14:18:44+01:00
Make the doc parser not complain

- - - - -
2cedb49a by Mateusz Kowalczyk at 2014-09-03T03:33:15+01:00
CONTRIBUTING file for issues

- - - - -
88027143 by Mateusz Kowalczyk at 2014-09-04T00:46:59+01:00
Mention --print-missing-docs

- - - - -
42f6754f by Alan Zimmerman at 2014-09-05T18:13:24-05:00
Follow changes to TypeAnnot in GHC HEAD

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
e712719e by Austin Seipp at 2014-09-09T01:03:27-05:00
Fix import of 'empty' due to AMP.

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
71c29755 by Herbert Valerio Riedel at 2014-09-09T17:35:20+02:00
Bump `base` constraint for AMP

- - - - -
0bf9f3ed by Mateusz Kowalczyk at 2014-09-12T19:18:32+01:00
Delete stale ANNOUNCE

- - - - -
cac89ee6 by Krzysztof Gogolewski at 2014-09-14T17:17:09+02:00
Followup changes to addition of -fwarn-context-quantification (GHC Trac haskell/haddock#4426)

- - - - -
4d683426 by Edward Z. Yang at 2014-09-18T13:38:11-07:00
Properly render package ID (not package key) in index, fixes haskell/haddock#329.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
80697fd5 by Herbert Valerio Riedel at 2014-09-19T00:07:52+02:00
Disambiguate string-literals

GHC fails type-inference with `OverloadedStrings` + `Data.Foldable.elem`
otherwise.

- - - - -
c015eb70 by Herbert Valerio Riedel at 2014-09-19T00:10:36+02:00
Revert "Followup changes to addition of -fwarn-context-quantification"

This reverts commit 4023817d7c0e46db012ba2eea28022626841ca9b temporarily
as the respective feature hasn't landed in GHC HEAD yet, but this commit
blocks later commits from being referenced in GHC HEAD.

- - - - -
38ded784 by Edward Z. Yang at 2014-09-18T15:32:15-07:00
Revert "Revert "Followup changes to addition of -fwarn-context-quantification""

This reverts commit db14fd8ab4fab43694139bc203808b814eafb2dc.
It's in HEAD now.

- - - - -
f55d59c9 by Herbert Valerio Riedel at 2014-09-26T19:18:28+02:00
Revert "Fix import of 'empty' due to AMP."

This reverts commit 0cc5bc85e9fca92ab712b68a2ba2c0dd9d3d79f4 since
it turns out we don't need to re-export `empty` from Control.Monad after
all.

- - - - -
467050f1 by David Feuer at 2014-10-09T20:07:36-04:00
Fix improper lazy IO use

Make `getPrologue` force `parseParas dflags str` before returning. Without this, it will attempt to read from the file after it is closed, with unspecified and generally bad results.
- - - - -
cc47b699 by Edward Z. Yang at 2014-10-09T21:38:19-07:00
Fix use-after-close lazy IO bug

Make `getPrologue` force `parseParas dflags str` before returning. Without this,
it will attempt to read from the file after it is closed, with unspecified and
generally bad results.

Signed-off-by: David Feuer <David.Feuer at gmail.com>
Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
87babcbe by Austin Seipp at 2014-10-20T20:05:27-05:00
Add an .arcconfig file.

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
ab259516 by Austin Seipp at 2014-10-20T20:07:01-05:00
Add .arclint file.

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
b918093c by Mateusz Kowalczyk at 2014-10-29T03:59:39+00:00
Experimental support for collapsable headers

Closes haskell/haddock#335

- - - - -
849db129 by Mateusz Kowalczyk at 2014-10-29T10:07:26+01:00
Experimental support for collapsable headers

(cherry picked from commit e2ed3b9d8dfab09f1b1861dbc8e74f08e137ebcc)

- - - - -
a4cc4789 by Herbert Valerio Riedel at 2014-10-31T11:08:26+01:00
Collapse user-defined section by default (re haskell/haddock#335)

- - - - -
9da1b33e by Yuras Shumovich at 2014-10-31T16:11:04-05:00
reflect ForeignType constructore removal

Reviewers: austin

Reviewed By: austin

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

- - - - -
c625aefc by Austin Seipp at 2014-10-31T19:34:10-05:00
Remove overlapping pattern match

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
c7738e5e by Simon Hengel at 2014-11-02T07:25:30+08:00
Remove -fobject-code from .ghci

(this slows down reloads on modifications)

- - - - -
d4a86e95 by Simon Hengel at 2014-11-03T09:26:11+08:00
Get rid of StandaloneDeriving

- - - - -
a974e311 by Simon Hengel at 2014-11-03T09:26:11+08:00
Derive more instances

- - - - -
8aa0c4d7 by Simon Hengel at 2014-11-03T09:27:08+08:00
Remove unused language extensions

- - - - -
3052d46a by Simon Hengel at 2014-11-03T09:30:46+08:00
Minor refactoring

- - - - -
4281d3cb by Simon Hengel at 2014-11-03T09:30:46+08:00
parser: Try to parse definition lists right before text paragraphs

- - - - -
8ba12bf9 by Simon Hengel at 2014-11-03T09:34:19+08:00
Add support for markdown links (closes haskell/haddock#336)

- - - - -
a2f8d747 by Simon Hengel at 2014-11-03T09:34:19+08:00
Allow markdown links at the beginning of a paragraph

- - - - -
53b11207 by Simon Hengel at 2014-11-03T09:34:20+08:00
Update documentation

- - - - -
652267c6 by Simon Hengel at 2014-11-03T09:34:20+08:00
Add support for markdown images

- - - - -
9d667502 by Simon Hengel at 2014-11-03T09:34:20+08:00
Allow an optional colon after the closing bracket of definition lists

This is to disambiguate them from markdown links and will be require
with a future release.

- - - - -
8167fc32 by Mateusz Kowalczyk at 2014-11-04T01:16:51+00:00
whitespace only

- - - - -
3da62981 by Mateusz Kowalczyk at 2014-11-04T01:17:31+00:00
Fix re-exports of built-in type families

Fixes haskell/haddock#310

- - - - -
edc76b34 by Mateusz Kowalczyk at 2014-11-04T02:54:28+00:00
Turn some uses of error into recoverable warnings

This should at the very least not abort when something weird happens. It
does feel like we should have a type that carries these errors until the
end however as the user might not see them unless they are printed at
the end.

- - - - -
0a137400 by Mateusz Kowalczyk at 2014-11-04T04:09:44+00:00
Fix warnings

- - - - -
d068fc21 by Mateusz Kowalczyk at 2014-11-04T21:04:07+00:00
Fix parsing of identifiers written in infix way

- - - - -
1a9f2f3d by Simon Hengel at 2014-11-08T11:32:42+08:00
Minor code simplification

- - - - -
6475e9b1 by Simon Hengel at 2014-11-08T17:28:33+08:00
newtype-wrap parser monad

- - - - -
dc1ea105 by Herbert Valerio Riedel at 2014-11-15T11:55:43+01:00
Make compatible with `deepseq-1.4.0.0`

...by not relying on the default method implementation of `rnf`

- - - - -
fbb1aca4 by Simon Hengel at 2014-11-16T08:51:38+08:00
State intention rather than implementation details in Haddock comment

- - - - -
97851ab2 by Simon Hengel at 2014-11-16T10:20:19+08:00
(wip) Add support for @since (closes haskell/haddock#26)

- - - - -
34bcd18e by Gergő Érdi at 2014-11-20T22:35:38+08:00
Update Haddock to new pattern synonym type signature syntax

- - - - -
304b7dc3 by Jan Stolarek at 2014-11-20T17:48:43+01:00
Follow changes from haskell/haddock#9812

- - - - -
920f9b03 by Richard Eisenberg at 2014-11-20T16:52:50-05:00
Changes to reflect refactoring in GHC as part of haskell/haddock#7484

- - - - -
0bfe4e78 by Alan Zimmerman at 2014-11-21T11:23:09-06:00
Follow API changes in D426

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
356ed45a by Thomas Winant at 2014-11-28T16:11:22-06:00
Support for PartialTypeSignatures

- - - - -
5dc8f3b1 by Gergő Érdi at 2014-11-29T15:39:09+08:00
For pattern synonyms, render "pattern" as a keyword

- - - - -
fe704480 by Mateusz Kowalczyk at 2014-12-09T03:38:32+00:00
List new module in cabal file

- - - - -
b9ad5a29 by Mateusz Kowalczyk at 2014-12-10T00:58:24+00:00
Allow the parser to spit out meta-info

Currently we only use it only for ‘since’ annotations but with these
patches it should be fairly simple to add new attributes if we wish to.

Closes haskell/haddock#26. It seems to work fine but due to 7.10 rush I don't have the
chance to do more exhaustive testing right now. The way the meta is
output (emphasis at the end of the whole comment) is fairly arbitrary
and subject to bikeshedding.

Note that this makes test for Bug310 fail due to interface version bump:
it can't find the docs for base with this interface version so it fails.
There is not much we can do to help this because it tests for ’built-in’
identifier, not something we can provide ourselves.

- - - - -
765af0e3 by Mateusz Kowalczyk at 2014-12-10T01:17:19+00:00
Update doctest parts of comments

- - - - -
8670272b by jpmoresmau at 2014-12-10T01:35:31+00:00
header could contain several lines

Closes haskell/haddock#348

- - - - -
4f9ae4f3 by Mateusz Kowalczyk at 2014-12-12T06:22:31+00:00
Revert "Merge branch 'reverts'"

This reverts commit 5c93cc347773c7634321edd5f808d5b55b46301f, reversing
changes made to 5b81a9e53894d2ae591ca0c6c96199632d39eb06.

Conflicts:
	haddock-api/src/Haddock/Convert.hs

- - - - -
e974ac94 by Duncan Coutts at 2014-12-12T06:26:11+00:00
Changes due to ghc api changes in package representation

Also fix a bug with finding the package name and version given a
module. This had become wrong due to the package key changes (it was
very hacky in the first place). We now look up the package key in the
package db to get the package info properly.

Conflicts:
	haddock-api/src/Haddock.hs

- - - - -
2f3a2365 by Herbert Valerio Riedel at 2014-12-12T06:26:51+00:00
Import Data.Word w/o import-list

This is needed to keep the compilation warning free (and thus pass GHC's
./validate) regardless of whether Word is re-exported from Prelude or not

See https://ghc.haskell.org/trac/ghc/ticket/9531 for more details

- - - - -
1dbd6390 by Alan Zimmerman at 2014-12-12T06:32:07+00:00
Follow changes to TypeAnnot in GHC HEAD

Signed-off-by: Austin Seipp <aseipp at pobox.com>

Conflicts:
	haddock-api/src/Haddock/Convert.hs

- - - - -
bb6ff1f4 by Mateusz Kowalczyk at 2014-12-12T06:35:07+00:00
Bump ‘base’ constraint

Follows the similar commit made on ghc-head branch

- - - - -
466fe4ab by Krzysztof Gogolewski at 2014-12-12T06:37:42+00:00
Followup changes to addition of -fwarn-context-quantification (GHC Trac haskell/haddock#4426)

- - - - -
97e080c9 by Edward Z. Yang at 2014-12-12T06:39:35+00:00
Properly render package ID (not package key) in index, fixes haskell/haddock#329.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

Conflicts:
	haddock-api/src/Haddock/ModuleTree.hs

- - - - -
20b2af56 by Herbert Valerio Riedel at 2014-12-12T06:42:50+00:00
Disambiguate string-literals

GHC fails type-inference with `OverloadedStrings` + `Data.Foldable.elem`
otherwise.

Conflicts:
	haddock-library/src/Documentation/Haddock/Parser.hs

- - - - -
b3ad269d by Austin Seipp at 2014-12-12T06:44:14+00:00
Add an .arcconfig file.

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
072df0dd by Austin Seipp at 2014-12-12T06:45:01+00:00
Add .arclint file.

Signed-off-by: Austin Seipp <austin at well-typed.com>

- - - - -
dbb9294a by Herbert Valerio Riedel at 2014-12-12T06:46:17+00:00
Collapse user-defined section by default (re haskell/haddock#335)

Conflicts:
	haddock-api/src/Haddock/Backends/Xhtml/DocMarkup.hs

- - - - -
f23ab545 by Yuras Shumovich at 2014-12-12T06:46:41+00:00
reflect ForeignType constructore removal

Reviewers: austin

Reviewed By: austin

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

- - - - -
753a4b67 by Austin Seipp at 2014-12-12T06:46:51+00:00
Remove overlapping pattern match

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
8954e8f5 by Herbert Valerio Riedel at 2014-12-12T06:50:53+00:00
Make compatible with `deepseq-1.4.0.0`

...by not relying on the default method implementation of `rnf`

- - - - -
d2b06d61 by Gergő Érdi at 2014-12-12T07:07:30+00:00
Update Haddock to new pattern synonym type signature syntax

Conflicts:
	haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
	haddock-api/src/Haddock/Convert.hs

- - - - -
1ff02426 by Jan Stolarek at 2014-12-12T07:13:24+00:00
Follow changes from haskell/haddock#9812

Conflicts:
	haddock-api/src/Haddock/Convert.hs

- - - - -
06ad7600 by Richard Eisenberg at 2014-12-12T07:13:43+00:00
Changes to reflect refactoring in GHC as part of haskell/haddock#7484

- - - - -
8fd2aa8b by Alan Zimmerman at 2014-12-12T07:22:25+00:00
Follow API changes in D426

Signed-off-by: Austin Seipp <aseipp at pobox.com>

Conflicts:
	haddock-api/src/Haddock/Backends/LaTeX.hs
	haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
	haddock-api/src/Haddock/Convert.hs

- - - - -
95c3db98 by Thomas Winant at 2014-12-12T07:35:49+00:00
Support for PartialTypeSignatures

Conflicts:
	haddock-api/src/Haddock/Backends/Xhtml/Decl.hs
	haddock-api/src/Haddock/Convert.hs
	haddock-api/src/Haddock/Interface/Create.hs

- - - - -
45494428 by Gergő Érdi at 2014-12-12T07:36:18+00:00
For pattern synonyms, render "pattern" as a keyword

- - - - -
a237e3eb by Mateusz Kowalczyk at 2014-12-12T12:27:13+00:00
Various fixups and bumps for next release

- - - - -
22918bcd by Herbert Valerio Riedel at 2014-12-14T10:11:47+01:00
Remove redundant wild-card pattern match

(this would otherwise cause a build-failure with `-Werror`)

- - - - -
1d6ce947 by Herbert Valerio Riedel at 2014-12-14T10:17:06+01:00
Treat GHC 7.10 the same as GHC 7.9

...since the current GHC 7.9 is going to become GHC 7.10 real-soon-now anyway

- - - - -
f434ea89 by Herbert Valerio Riedel at 2014-12-14T18:26:50+01:00
Fixup ghc.mk (follow-up to 1739375eb23342)

This makes the GHC build-system aware of the data-files to be copied
into the bindist (as haddock.cabal doesn't list those anymore)

- - - - -
6fb839eb by Mateusz Kowalczyk at 2014-12-17T09:28:59+00:00
Only keep one Version instead of blindly appending

- - - - -
40645489 by Mateusz Kowalczyk at 2014-12-18T07:09:44+00:00
Fix dependency version

- - - - -
8b3b927b by Mateusz Kowalczyk at 2014-12-18T07:14:23+00:00
Print missing docs by default

Adds --no-print-missing-docs

- - - - -
59666694 by Mateusz Kowalczyk at 2014-12-18T07:21:37+00:00
update changelog

- - - - -
aa6d168e by Mateusz Kowalczyk at 2014-12-18T07:30:58+00:00
Update docs for @since

- - - - -
2d7043ee by Luite Stegeman at 2014-12-19T18:29:35-06:00
hide projectVersion from DynFlags since it clashes with Haddock.Version.projectVersion

- - - - -
aaa70fc0 by Luite Stegeman at 2014-12-22T15:58:43+01:00
Add missing import for standalone haddock-api package

- - - - -
9ce01269 by Herbert Valerio Riedel at 2014-12-22T17:48:45+01:00
Reset ghc-head with master's tree

(this is an overwriting git merge of master into ghc-head)

- - - - -
fcd6fec1 by Herbert Valerio Riedel at 2014-12-22T17:51:52+01:00
Bump versions for ghc-7.11

- - - - -
525ec900 by Mateusz Kowalczyk at 2014-12-23T13:36:24+00:00
travis-ci: test with HEAD

- - - - -
cbf494b5 by Simon Peyton Jones at 2014-12-23T15:22:56+00:00
Eliminate instanceHead' in favour of GHC's instanceSig

This is made possible by the elimination of "silent superclass
parameters" in GHC

- - - - -
50e01c99 by Mateusz Kowalczyk at 2014-12-29T15:28:47+00:00
Make travis use 7.10.x

- - - - -
475e60b0 by Njagi Mwaniki at 2014-12-29T15:30:44+00:00
Turn the README into GitHub Markdown format.

Closes haskell/haddock#354

- - - - -
8cacf48e by Luite Stegeman at 2015-01-05T16:25:37+01:00
bump haddock-api ghc dependency to allow release candidate and first release

- - - - -
6ed6cf1f by Simon Peyton Jones at 2015-01-06T16:37:47+00:00
Remove redundant constraints from haddock, discovered by -fwarn-redundant-constraints

- - - - -
8b484f33 by Simon Peyton Jones at 2015-01-08T15:50:22+00:00
Track naming change in DataCon

- - - - -
23c5c0b5 by Alan Zimmerman at 2015-01-16T10:15:11-06:00
Follow API changes in D538

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
e7a5532c by JP Moresmau at 2015-01-22T17:19:03+00:00
Ignore warnings, install Cabal 1.22

- - - - -
86942c84 by jpmoresmau at 2015-01-22T17:19:04+00:00
solve dataDir ambiguity

- - - - -
5ceb743e by jpmoresmau at 2015-01-22T19:17:32+00:00
support GHC 7.10: no Safe-Inferred, Foldable instance

- - - - -
6a3b3fb5 by Mateusz Kowalczyk at 2015-01-22T19:32:10+00:00
Update test files

Test: a correct behaviour for fields comma-separating values. I'm
surprised we had no bug open for this. Maybe it affects how haskell/haddock#301 renders
now but I doubt.

Operators: Seems GHC is giving us a new order for operators, something
must have changed on their side again. cc @haasn , this makes the fixity
to the side not match the order on the LHS which is a bit unpleasant.
Maybe the fixity can be made to match the GHC order?

Bug335: We expand examples by default now.

Bug310: Now inferred safe.

- - - - -
708f8b2f by jpmoresmau at 2015-01-22T19:36:59+00:00
Links to source location of class instance definitions

- - - - -
5cf8a6da by Vincent Berthoux at 2015-01-22T19:59:58+00:00
Filter '\r' from comments due to Windows problems.

On Windows this was causing newline to be rendered twice in code blocks.
Closes haskell/haddock#359, fixes haskell/haddock#356.

- - - - -
1749e6f0 by Mateusz Kowalczyk at 2015-01-22T20:31:27+00:00
Changelog only

- - - - -
c8145f90 by Mateusz Kowalczyk at 2015-01-22T23:34:05+00:00
--package-name and --package-version flags

Used for --hoogle amongst other things. Now we need to teach cabal to
use it. The situation is still a bit sub-par because if the flags aren't
passed in, the crash will occur. Closes haskell/haddock#353.

- - - - -
14248254 by Mateusz Kowalczyk at 2015-01-22T23:43:18+00:00
Sort out some module import warnings

- - - - -
d8a38989 by Simon Peyton Jones at 2015-01-23T07:10:16-06:00
Track naming change in DataCon

(cherry picked from commit 04cf63d0195837ed52075ed7d2676e71831e8a0b)

- - - - -
d3ac6ae4 by Alan Zimmerman at 2015-01-23T07:17:19-06:00
Follow API changes in D538

Signed-off-by: Austin Seipp <aseipp at pobox.com>
(cherry picked from commit d61bbc75890e4eb0ad508b9c2a27b91f691213e6)

- - - - -
4c1ffeb0 by Simon Peyton Jones at 2015-02-10T12:10:33+00:00
Track changes in HsSyn for quasi-quotes

- - - - -
775d20f7 by Mateusz Kowalczyk at 2015-03-15T08:11:48+01:00
--package-name and --package-version flags

Used for --hoogle amongst other things. Now we need to teach cabal to
use it. The situation is still a bit sub-par because if the flags aren't
passed in, the crash will occur. Closes haskell/haddock#353.

(cherry picked from commit 8e06728afb0784128ab2df0be7a5d7a191d30ff4)

- - - - -
f9245e72 by Phil Ruffwind at 2015-03-16T04:32:01-04:00
Prevent Synopsis from using up too much horizontal space

When long type signatures occur in the Synopsis, the element is
stretched beyond the width of the window.  Scrollbars don't appear, so
it's impossible to read anything when this happens.

- - - - -
cd8fa415 by Mateusz Kowalczyk at 2015-03-17T21:59:39+00:00
Update changelog

Closes haskell/haddock#151 due to 71170fc77962f10d7d001e3b8bc8b92bfeda99bc

- - - - -
b5248b47 by Ben Gamari at 2015-03-25T17:12:17+00:00
Make the error encountered when a package can't be found more
user-friendly

Closes haskell/haddock#369

- - - - -
b756b772 by Mateusz Kowalczyk at 2015-03-26T16:31:40+00:00
Remove now redundant imports

- - - - -
5ea5e8dd by Mateusz Kowalczyk at 2015-03-26T16:45:52+00:00
Update test to account for \r filtering

- - - - -
6539bfb3 by Mateusz Kowalczyk at 2015-03-27T00:20:09+00:00
Test for anchor defaulting

I delete the old tests because it turns out that:

* test runner would never put them in scope of each other even with
  imports so just one would suffice
* test runner actually needed some hacking to keep links so in the end
  we would end up with no anchors making them useless

- - - - -
1a01d950 by Mateusz Kowalczyk at 2015-03-27T00:20:09+00:00
Clearly default to variables in out of scope case

- - - - -
7943abe8 by Mateusz Kowalczyk at 2015-03-27T01:14:11+00:00
Fix Hoogle display of constructors

Fixes haskell/haddock#361

- - - - -
6d6e587e by Mateusz Kowalczyk at 2015-03-27T01:45:18+00:00
Fully qualify names in Hoogle instances output

Closes haskell/haddock#263

- - - - -
52dac365 by Mateusz Kowalczyk at 2015-03-27T01:55:01+00:00
Update changelog

- - - - -
ca5af9a8 by Mateusz Kowalczyk at 2015-03-27T02:43:55+00:00
Output method documentation in Hoogle backend

One thing of note is that we no longer preserve grouping of methods and
print each method on its own line. We could preserve it if no
documentation is present for any methods in the group if someone asks
for it though.

Fixes haskell/haddock#259

- - - - -
a33f0c10 by Mateusz Kowalczyk at 2015-03-27T03:04:21+00:00
Don't print instance safety information in Hoogle

Fixes haskell/haddock#168

- - - - -
df6c935a by Mateusz Kowalczyk at 2015-03-28T00:11:47+00:00
Post-release version bumps and changelog

- - - - -
dde8f7c0 by Mateusz Kowalczyk at 2015-03-28T20:39:10+00:00
Loosen bounds on haddock-*

- - - - -
de93bf89 by Mateusz Kowalczyk at 2015-03-28T20:39:10+00:00
Expand response files in arguments

Closes haskell/haddock#285

- - - - -
1f0b0856 by Zejun Wu at 2015-04-26T16:35:35-07:00
Do not insert anchor for section headings in contents box

- - - - -
860439d7 by Simon Peyton Jones at 2015-05-01T09:36:47+01:00
Track change in API of TyCon

- - - - -
a32f3e5f by Adam Gundry at 2015-05-04T15:32:59+01:00
Track API changes to support empty closed type familes

- - - - -
77e98bee by Ben Gamari at 2015-05-06T20:17:08+01:00
Ignore doc/haddock.{ps,pdf}

- - - - -
663d0204 by Murray Campbell at 2015-05-11T04:47:37-05:00
Change ModuleTree Node to carry PackageKey and SourcePackageId to resolve haskell/haddock#385

Signed-off-by: Austin Seipp <aseipp at pobox.com>

- - - - -
8bb0dcf5 by Murray Campbell at 2015-05-11T06:35:06-05:00
Change ModuleTree Node to carry PackageKey and SourcePackageId to resolve haskell/haddock#385

Signed-off-by: Austin Seipp <aseipp at pobox.com>
(cherry picked from commit 2380f07c430c525b205ce2eae6dab23c8388d899)

- - - - -
bad900ea by Adam Bergmark at 2015-05-11T15:29:39+01:00
haddock-library: require GHC >= 7.4

`Data.Monoid.<>` was added in base-4.5/GHC-7.4

Closes haskell/haddock#394

Signed-off-by: Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk>

- - - - -
daceff85 by Simon Peyton Jones at 2015-05-13T12:04:21+01:00
Track the new location of setRdrNameSpace

- - - - -
1937d1c4 by Alan Zimmerman at 2015-05-25T21:27:15+02:00
ApiAnnotations : strings in warnings do not return SourceText

The strings used in a WARNING pragma are captured via

strings :: { Located ([AddAnn],[Located FastString]) }
    : STRING { sL1 $1 ([],[L (gl $1) (getSTRING $1)]) }
..

The STRING token has a method getSTRINGs that returns the original
source text for a string.

A warning of the form

{-# WARNING Logic
          , mkSolver
          , mkSimpleSolver
          , mkSolverForLogic
          , solverSetParams
          , solverPush
          , solverPop
          , solverReset
          , solverGetNumScopes
          , solverAssertCnstr
          , solverAssertAndTrack
          , solverCheck
          , solverCheckAndGetModel
          , solverGetReasonUnknown
          "New Z3 API support is still incomplete and fragile: \
          \you may experience segmentation faults!"
  #-}

returns the concatenated warning string rather than the original source.

- - - - -
ee0fb6c2 by Łukasz Hanuszczak at 2015-05-27T11:51:31+02:00
Create simple method for indentation parsing.
- - - - -
7d6fcad5 by Łukasz Hanuszczak at 2015-05-27T21:36:13+02:00
Make nested lists count indentation according to first item.
- - - - -
d6819398 by Łukasz Hanuszczak at 2015-05-27T22:46:13+02:00
Add simple test case for arbitrary-depth list nesting.
- - - - -
2929c54d by Łukasz Hanuszczak at 2015-06-03T02:11:31+02:00
Add arbitrary-indent spec test for parser.
- - - - -
9a0a9bb0 by Mateusz Kowalczyk at 2015-06-03T05:25:29+01:00
Update docs with info on new list nesting rule

Fixes haskell/haddock#278 through commits from PR haskell/haddock#401

- - - - -
12efc92c by Mateusz Kowalczyk at 2015-06-03T05:29:26+01:00
Update some meta data at the top of the docs

- - - - -
765ee49f by Bartosz Nitka at 2015-06-07T08:40:59-07:00
Add some Hacking docs for getting started

- - - - -
19aaf851 by Bartosz Nitka at 2015-06-07T08:44:30-07:00
Fix markdown

- - - - -
2a90cb70 by Mateusz Kowalczyk at 2015-06-08T15:08:36+01:00
Refine hacking instructions slightly

- - - - -
0894da6e by Thomas Winant at 2015-06-08T23:47:28-05:00
Update after wild card renaming refactoring in D613

Summary:
* Move `Post*` type instances to `Haddock.Types` as other modules than
  `Haddock.Interface.Rename` will rely on these type instances.
* Update after wild card renaming refactoring in D613.

Reviewers: simonpj, austin

Reviewed By: austin

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

GHC Trac Issues: haskell/haddock#10098

- - - - -
10a9bb76 by Emanuel Borsboom at 2015-06-12T02:46:23+01:00
Build executable with '-threaded' (fixes haskell/haddock#399)

- - - - -
7696b94f by Mateusz Kowalczyk at 2015-06-12T02:59:19+01:00
Update changelog for -threaded

Closes haskell/haddock#400

- - - - -
d3c118ec by Bartosz Nitka at 2015-06-12T03:00:58+01:00
Fix haddock: internal error: spliceURL UnhelpfulSpan (#207)

Inferred type signatures don't have SrcSpans, so let's use the one from
the declaration.

I've tested this manually on the test-case from haskell/haddock#207, but I got stuck at
trying to run the test-suite.

- - - - -
b67e843b by Mateusz Kowalczyk at 2015-06-12T03:01:50+01:00
Changelog for haskell/haddock#207

Fixes haskell/haddock#207, closes haskell/haddock#402

- - - - -
841d785e by jpmoresmau at 2015-06-12T16:03:16+01:00
Attach to instance location the name that has the same location file

Fixes haskell/haddock#383

- - - - -
98791cae by Mateusz Kowalczyk at 2015-06-12T16:08:27+01:00
Update changelog

Closes haskell/haddock#398

- - - - -
7c0b5a87 by Phil Ruffwind at 2015-06-12T13:07:25-04:00
Fix alignment of Source links in instance table in Firefox

Due to a Firefox bug [1], a combination of 'whitespace: nowrap' on the
parent element with 'float: right' on the inner element can cause the
floated element to be displaced downwards for no apparent reason.

To work around this, the left side is wrapped in its own <span> and set
to 'float: left'.  As a precautionary measure to prevent the parent
element from collapsing entirely, we also add the classic "clearfix"
hack.  The latter is not strictly needed but it helps prevent bugs if
the layout is altered again in the future.

Fixes haskell/haddock#384.

Remark: line 159 of src/Haddock/Backends/Xhtml/Layout.hs was indented to
        prevent confusion over the operator precedence of (<+>) vs (<<).

[1]: https://bugzilla.mozilla.org/show_bug.cgi?id=488725

- - - - -
cfe86e73 by Mateusz Kowalczyk at 2015-06-14T10:49:01+01:00
Update tests for the CSS changes

- - - - -
2d4983c1 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Create scaffolding for Haskell source parser module.

- - - - -
29548785 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Implement function for tagging parsed chunks with source spans.
- - - - -
6a5e4074 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Implement simple string chunking based on HsColour library.
- - - - -
6e52291f by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Create basic token classification method.
- - - - -
da971a27 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Adapt source span tagging to work with current whitespace handling.
- - - - -
4feb5a22 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add record accessors to exports of hyperlinker parser module.
- - - - -
a8cc4e39 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Make parser module export all types and associated accessors.
- - - - -
fb8d468f by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Create simple HTML renderer for parsed source file.
- - - - -
80747822 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add support for specifying the CSS file path in HTML source renderer.
- - - - -
994dc1f5 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Fix identifier recognition in Haskell source parser.
- - - - -
b1bd0430 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Fix comment recognition in Haskell source parser.
- - - - -
11db85ae by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add support for recognizing compiler pragmas in source parser.
- - - - -
736c7bd3 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Create scaffolding of module for associating tokens with AST names.

- - - - -
7e149bc2 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Implement utility method for extracting variable identifiers from AST.

- - - - -
32eb640a by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Create simple mechanism for associating tokens with AST names.

- - - - -
d4eba5bc by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add dummy support for hyperlinking named tokens.
- - - - -
2b76141f by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Fix span matcher bug causing wrong items being hyperlinked.
- - - - -
2d48002e by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Constrain elements exported by hyperlinker modules.
- - - - -
9715eec6 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add support for type token recognition.
- - - - -
8fa401cb by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Add support for binding token recognition.
- - - - -
d062400b by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Implement go-to-definition mechanism for local bindings.
- - - - -
f4dc229b by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Implement module export- and import-list item hyperlinking.
- - - - -
c9a46d58 by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Fix span matching to allow parenthesized operators hyperlinking.
- - - - -
03aad95a by Łukasz Hanuszczak at 2015-06-30T22:37:48+02:00
Fix weird hyperlinking of parenthesized operators.
- - - - -
b4694a7d by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add support for type declaration anchors.
- - - - -
7358d2d2 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add support for top-level function declaration anchors.
- - - - -
dfc24b24 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Fix external anchors to contain HTML file extension.
- - - - -
a045926c by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Refactor the way AST names are handled within detailed tokens.
- - - - -
c76049b4 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Implement hyperlinking of imported module names.
- - - - -
2d2a1572 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Fix parsing of single line comments with broken up newlines.
- - - - -
11afdcf2 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Fix bug with improper newline handling.
- - - - -
8137f104 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Fix issues with escaped newlines in comments.
- - - - -
34759b19 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add support for parsing C preprocessor macros.
- - - - -
09f0f847 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add some documentation for parser module of source hyperlinker.
- - - - -
709a8389 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add some documentation for AST module of source hyperlinker.
- - - - -
4df5c227 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add command line option for generating hyperlinked source.
- - - - -
7a755ea2 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Extend module interface with rich source token stream field.
- - - - -
494f4ab1 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Implement source tokenization during interface creation process.
- - - - -
5f21c953 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Create hyperlinker module and plug it into the Haddock pipeline.
- - - - -
0cc8a216 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add support for providing custom CSS files for hyperlinked source.
- - - - -
a32bbdc1 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add support for fancy highlighting upon hovering over identifier.
- - - - -
d16d642a by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Make source hyperlinker generate output in apropriate directory.
- - - - -
ae12953d by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Create module with hyperlinker utility functions.
- - - - -
6d4952c5 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Make external hyperlinks point to locations specified by source URLs.
- - - - -
8417555d by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Rewrite source generation to fixed links and directory structure.
- - - - -
ce9cec01 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Add basic support for cross-package hyperlink generation.
- - - - -
7eaf025c by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Disable generating hyperlinks for module references.
- - - - -
a50bf92e by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Make Haddock generate source for all interfaces (also hidden ones).
- - - - -
f5ae2838 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Prevent source parser from throwing exception when lexing fails.
- - - - -
db9ffbe0 by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Implement workaround for Chrome highlighting issues.
- - - - -
0b6b453b by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Make hyperlinker generate correct anchors for data constructors.
- - - - -
c86d38bc by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Make hyperlinker generate anchors for record field declarations.
- - - - -
063abf7f by Łukasz Hanuszczak at 2015-06-30T22:37:49+02:00
Fix issue with hyperlink highlight styling in Chrome browser.
- - - - -
880fc611 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add support for hyperlinking constructor names in patters.
- - - - -
c9e89b95 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add support for hyperlinking field names in record patterns.
- - - - -
17a11996 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add support for hyperlinking field names in record expressions.
- - - - -
0eef932d by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Make hyperlinker respect pretty-printer flag and add documentation.
- - - - -
f87c1776 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Unexpose hyperlinker modules in Cabal configuration.
- - - - -
4c9e2b06 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Setup HSpec framework for Haddock API package.
- - - - -
4b20cb30 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add basic tests related to comment parsing.
- - - - -
6842e919 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add tests related to parsing basic language constructs.

- - - - -
87bffb35 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add simple tests for do-notation parsing.

- - - - -
e7af1841 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add very simple QuickCheck properties for source parser spec.
- - - - -
c84efcf1 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Create simple test runner for hyperlinker tests.
- - - - -
76b90447 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add test case for basic identifier hyperlinking.
- - - - -
0fbf4df6 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add test case for operator hyperlinking.
- - - - -
731aa039 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add test case for constructor hyperlinking.
- - - - -
995a78a2 by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add test case for record expressions and patterns hyperlinking.
- - - - -
3566875a by Łukasz Hanuszczak at 2015-06-30T22:37:50+02:00
Add test case for literal syntax highlighting.
- - - - -
68469a35 by Łukasz Hanuszczak at 2015-06-30T22:38:33+02:00
Add hyperlinker test runner to .cabal and .gitignore files. 
- - - - -
aa946c93 by Łukasz Hanuszczak at 2015-06-30T22:38:33+02:00
Adapt hyperlinker test runner to have the same interface as HTML one.
- - - - -
ce34da16 by Łukasz Hanuszczak at 2015-06-30T22:38:33+02:00
Fix hyperlinker test runner file paths and add pretty-printing option.
- - - - -
0d7dd65e by Łukasz Hanuszczak at 2015-06-30T22:38:33+02:00
Add reference files for hyperlinker test cases.
- - - - -
efa4a1e0 by Łukasz Hanuszczak at 2015-07-01T00:47:32+02:00
Make hyperlinker test runner strip local links from generated source.
- - - - -
3e96e584 by Łukasz Hanuszczak at 2015-07-01T01:14:59+02:00
Create simple script for accepting hyperlinker test case references.
- - - - -
526fe610 by Łukasz Hanuszczak at 2015-07-01T01:16:41+02:00
Re-accept hyperlinker test cases with local references stripped out.
- - - - -
892e2cb3 by Łukasz Hanuszczak at 2015-07-01T01:22:09+02:00
Fix bug with diffing wrong files in hyperlinker test runner.
- - - - -
9ff46039 by Łukasz Hanuszczak at 2015-07-01T18:04:46+02:00
Remove unused dependencies in Haddock API spec configuration.
- - - - -
47969c07 by Łukasz Hanuszczak at 2015-07-01T18:32:19+02:00
Add support for hyperlinking synonyms in patterns.
- - - - -
a73449e0 by Łukasz Hanuszczak at 2015-07-01T18:33:44+02:00
Create test case for hyperlinking @-patterns.
- - - - -
c2077ed8 by Łukasz Hanuszczak at 2015-07-01T19:06:04+02:00
Add support for hyperlinking universally quantified type variables.
- - - - -
68017342 by Łukasz Hanuszczak at 2015-07-01T19:28:32+02:00
Create hyperlinker test case with quantified type variables.
- - - - -
51c01a78 by Łukasz Hanuszczak at 2015-07-01T19:34:22+02:00
Add scoped type variables test for polymorphism test case.
- - - - -
13181ae2 by Łukasz Hanuszczak at 2015-07-01T19:56:27+02:00
Add record wildcards test for records hyperlinking test case.
- - - - -
991b81dd by Łukasz Hanuszczak at 2015-07-01T21:01:42+02:00
Document some functions in XHTML utlity module.
- - - - -
98c8dfe5 by Łukasz Hanuszczak at 2015-07-01T22:25:21+02:00
Make hyperlinker render qualified names as one entity.
- - - - -
75e13b9b by Łukasz Hanuszczak at 2015-07-01T22:27:38+02:00
Add qualified name test for identifiers hyperlinking test case.
- - - - -
de1e143f by Łukasz Hanuszczak at 2015-07-02T12:32:59+02:00
Fix crash happening when hyperlinking type family declarations.
- - - - -
7a8fb175 by Łukasz Hanuszczak at 2015-07-02T12:47:03+02:00
Add support for anchoring data family constructor declarations.
- - - - -
3b404e49 by Łukasz Hanuszczak at 2015-07-02T13:31:05+02:00
Improve support for hyperlinking type families.
- - - - -
59eb7143 by Łukasz Hanuszczak at 2015-07-02T13:33:34+02:00
Add hyperlinker test case for checking type and type family declarations.
- - - - -
d1cda0c0 by Łukasz Hanuszczak at 2015-07-02T13:41:38+02:00
Fix issue with operators being recognized as preprocessor directives.
- - - - -
da206c9d by Łukasz Hanuszczak at 2015-07-02T17:18:12+02:00
Fix broken tests for parsing and hyperlinking hash operators.
- - - - -
53750d1b by Łukasz Hanuszczak at 2015-07-02T18:53:28+02:00
Add support for anchoring signatures in type class declarations.
- - - - -
1fa5bb10 by Łukasz Hanuszczak at 2015-07-02T19:04:47+02:00
Make hyperlinker generate anchors only to top-level value bindings.
- - - - -
a542305c by Łukasz Hanuszczak at 2015-07-02T19:05:58+02:00
Create hyperlinker test case for type classes.
- - - - -
b0dd4581 by Łukasz Hanuszczak at 2015-07-04T16:28:26+02:00
Update docs with information about source hyperlinking.
- - - - -
9795302a by Łukasz Hanuszczak at 2015-07-04T16:52:15+02:00
Update docs on using `--read-interface` option.
- - - - -
9acdc002 by Łukasz Hanuszczak at 2015-07-04T17:15:26+02:00
Remove potentially dangerous record access in hyperlinker AST module.
- - - - -
fb3ab7be by Łukasz Hanuszczak at 2015-07-04T17:40:10+02:00
Make Haddock generate warnings about potential misuse of hyperlinker.
- - - - -
a324c504 by Łukasz Hanuszczak at 2015-07-04T17:43:22+02:00
Fix incorrect specification of source style option in doc file.
- - - - -
3f01a8e4 by Łukasz Hanuszczak at 2015-07-05T17:06:36+02:00
Refactor source path mapping to use modules as indices.
- - - - -
ac70f5b1 by Łukasz Hanuszczak at 2015-07-05T17:47:34+02:00
Fix bug where not all module interfaces were added to source mapping.
- - - - -
f5e57da9 by Łukasz Hanuszczak at 2015-07-06T16:39:57+02:00
Extract main hyperlinker types to separate module.
- - - - -
43974905 by Łukasz Hanuszczak at 2015-07-06T16:52:13+02:00
Move source paths types to hyperlinker types module.
- - - - -
3e236055 by Łukasz Hanuszczak at 2015-07-06T17:06:19+02:00
Add support for hyperlinking modules in import lists.
- - - - -
58233d9f by Łukasz Hanuszczak at 2015-07-06T17:26:49+02:00
Add short documentation for hyperlinker source map type.
- - - - -
14da016d by Łukasz Hanuszczak at 2015-07-06T18:07:20+02:00
Fix bug with module name being hyperlinked to `Prelude`.
- - - - -
8f79db52 by Łukasz Hanuszczak at 2015-07-06T18:23:47+02:00
Fix problem with spec build in Haddock API configuration.
- - - - -
e7cc056c by Adam Sandberg Eriksson at 2015-07-07T23:22:21+01:00
StrictData: print correct strictness marks

- - - - -
e8253ca8 by Mateusz Kowalczyk at 2015-07-07T23:58:28+01:00
Update changelog

- - - - -
0aba676b by Mateusz Kowalczyk at 2015-07-07T23:58:33+01:00
Relax upper bound on GHC a bit

- - - - -
7a595381 by Mateusz Kowalczyk at 2015-07-07T23:58:52+01:00
Delete trailing whitespace

- - - - -
50976d5e by Adam Sandberg Eriksson at 2015-07-08T15:03:04+02:00
StrictData: changes in HsBang type

- - - - -
83b045fa by Mateusz Kowalczyk at 2015-07-11T14:35:18+01:00
Fix expansion icon for user-collapsible sections

Closes haskell/haddock#412

- - - - -
b2a3b0d1 by Mateusz Kowalczyk at 2015-07-22T22:03:21+01:00
Make some version changes after 2.16.1 release

- - - - -
a8294423 by Ben Gamari at 2015-07-27T13:16:07+02:00
Merge pull request haskell/haddock#422 from adamse/adamse-D1033

Merge for GHC D1033
- - - - -
c0173f17 by randen at 2015-07-30T14:49:08-07:00
Break the response file by line termination rather
than spaces, since spaces may be within the parameters.
This simple approach avoids having the need for any
quoting and/or escaping (although a newline char will
not be possible in a parameter and has no escape
mechanism to allow it).

- - - - -
47c0ca14 by Alan Zimmerman at 2015-07-31T10:41:52+02:00
Replace (SourceText,FastString) with WithSourceText data type

Phab:D907 introduced SourceText for a number of data types, by replacing
FastString with (SourceText,FastString). Since this has an Outputable
instance, no warnings are generated when ppr is called on it, but
unexpected output is generated. See Phab:D1096 for an example of this.

Replace the (SourceText,FastString) tuples with a new data type

data WithSourceText = WithSourceText SourceText FastString

Trac ticket: haskell/haddock#10692

- - - - -
45a9d770 by Mateusz Kowalczyk at 2015-07-31T09:47:43+01:00
Update changelog

- - - - -
347a20a3 by Phil Ruffwind at 2015-08-02T23:15:26+01:00
Avoid JavaScript error during page load in non-frame mode

In non-frame mode, parent.window.synopsis refers to the synopsis div
rather than the nonexistent frame.  Unfortunately, the script wrongly
assumes that if it exists it must be a frame, leading to an error where
it tries to access the nonexistent attribute 'replace' of an undefined
value (synopsis.location).

Closes haskell/haddock#406

- - - - -
54ebd519 by Phil Ruffwind at 2015-08-02T23:27:10+01:00
Link to the definitions to themselves

Currently, the definitions already have an anchor tag that allows URLs
with fragment identifiers to locate them, but it is rather inconvenient
to obtain such a URL (so-called "permalink") as it would require finding
the a link to the corresponding item in the Synopsis or elsewhere.  This
commit adds hyperlinks to the definitions themselves, allowing users to
obtain links to them easily.

To preserve the original aesthetics of the definitions, we alter the
color of the link so as to be identical to what it was, except it now
has a hover effect indicating that it is clickable.

Additionally, the anchor now uses the 'id' attribute instead of the
(obsolete) 'name' attribute.

Closes haskell/haddock#407

- - - - -
02cc8bb7 by Phil Ruffwind at 2015-08-02T23:28:02+01:00
Fix typo in Haddock.Backends.Xhtml.Layout: divSynposis -> divSynopsis

Closes haskell/haddock#408

- - - - -
2eb0a458 by Phil Ruffwind at 2015-08-02T23:30:07+01:00
Fix record field alignment when name is too long

Change <dl> to <ul> and use display:table rather than floats to layout
the record fields.  This avoids bug haskell/haddock#301 that occurs whenever the field
name gets too long.

Slight aesthetic change: the entire cell of the field's source code is
now shaded gray rather than just the area where text exists.

Fixes haskell/haddock#301. Closes haskell/haddock#421

- - - - -
7abb3402 by Łukasz Hanuszczak at 2015-08-02T23:32:14+01:00
Add some utility definitions for generating line anchors.

- - - - -
e0b1d79b by Łukasz Hanuszczak at 2015-08-02T23:32:15+01:00
Make hyperlinked source renderer generate line anchors.
- - - - -
24dd4c9f by Łukasz Hanuszczak at 2015-08-02T23:32:15+01:00
Re-accept test cases after adding line anchors for each of them.
- - - - -
0372cfcb by Łukasz Hanuszczak at 2015-08-02T23:32:15+01:00
Override source line flags when source hyperlinker is enabled.
- - - - -
a81bcd07 by Mateusz Kowalczyk at 2015-08-02T23:58:25+01:00
Update tests to follow HTML changes

- - - - -
d2d7426f by Łukasz Hanuszczak at 2015-08-06T20:54:59+02:00
Fix quote syntax for promoted types.
- - - - -
668cf029 by Łukasz Hanuszczak at 2015-08-06T21:12:00+02:00
Apply promoted type quoting to type-level consing.
- - - - -
89f8e7c6 by Łukasz Hanuszczak at 2015-08-06T21:17:10+02:00
Extend advanced types test case with other examples.
- - - - -
86494bca by Łukasz Hanuszczak at 2015-08-06T21:22:06+02:00
Rename advanced types test case and accept new output.
- - - - -
dbb7c7c0 by Adam Sandberg Eriksson at 2015-08-09T23:01:05+02:00
HsBang is split into HsSrcBang and HsImplBang

With recent changes in GHC handling of strictness annotations in Haddock
is simplified.

- - - - -
2a7704fa by Ben Gamari at 2015-08-10T13:18:05+02:00
Merge pull request haskell/haddock#433 from adamse/split-hsbang

HsBang is split into HsSrcBang and HsImplBang
- - - - -
891954bc by Thomas Miedema at 2015-08-15T14:51:18+02:00
Follow changes in GHC build system

- - - - -
b55d32ab by Mateusz Kowalczyk at 2015-08-21T18:06:09+01:00
Make Travis use 7.10.2

- - - - -
97348b51 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Move SYB utilities to standalone module.
- - - - -
748ec081 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Implement `everywhere` transformation in SYB module.
- - - - -
011cc543 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Implement generic transformation constructor.
- - - - -
b9510db2 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Create simple utility module for type specialization.
- - - - -
43229fa6 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Make type of type specialization function more general.
- - - - -
fd844e90 by Łukasz Hanuszczak at 2015-08-21T18:22:29+01:00
Add basic HTML test case for checking instance specialization.
- - - - -
6ea0ad04 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Make HTML class instance printer take optional signature argument.
- - - - -
65aa41b6 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Refactor instance head type to record instead of a meaningless tuple.
- - - - -
3fc3bede by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Add expandable method section for each class instance declaration.
- - - - -
99ceb107 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Move dummy post-family instances for `DocName` to `Types` module.
- - - - -
e98f4708 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Create convenience functions for type specialization module.
- - - - -
b947552f by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Hook type specialization logic with HTML pretty-printer.
- - - - -
dcaa8030 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Create stub functions for sugaring specialized types.
- - - - -
fa84bc65 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Implement list syntax sugaring logic for specialized types.
- - - - -
e8b05b07 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Implement tuple syntax sugaring logic for specialized types.
- - - - -
68a2e5bc by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Get rid of code duplication in type specialization module.
- - - - -
4721c336 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Create scaffolding of a framework for renaming specialized types.
- - - - -
271b488d by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Fill in missing cases in specialized type renaming function.
- - - - -
bfa5f2a4 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Remove code duplication in specialized type renamer.
- - - - -
ea6bd0e8 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Change state of the type renaming monad.
- - - - -
77c5496e by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Implement simple mechanism for generating new type names.
- - - - -
91bfb48b by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Fill in stub behaviour with actual environment renaming.
- - - - -
d244517b by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Fix logic behind binder type renaming.
- - - - -
f3c5e360 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Add SYB-like utility function for performing stateful queries.
- - - - -
eb3f9154 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Create function for retrieving free variables from given type.
- - - - -
a94561d3 by Łukasz Hanuszczak at 2015-08-21T18:22:30+01:00
Fix compilation error caused by incorrect type signature.
- - - - -
8bb707cf by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Move `SetName` class definition to types module.
- - - - -
5800b13b by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Hook type renamer with instance method HTML pretty-printer.
- - - - -
6a480164 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Add some test cases for type renamer.
- - - - -
839842f7 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Make specialized signatures refer to original signature declaration.
- - - - -
4880f7c9 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Make specialized methods be nicely formatted again.
- - - - -
ab5a6a2e by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Attach source locations to the specialized class methods.
- - - - -
43f8a559 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Extend instances test case to also test multi-name type signatures.
- - - - -
59bc751c by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Fix tab-based indentation in instances test case.
- - - - -
c2126815 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Improve placement of instance methods expander button.
- - - - -
0a32e287 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Add new data type declaration to instance specialization test case. 
- - - - -
5281af1f by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Make type renamer first try single-letter names as  alternatives.
- - - - -
7d509475 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Fix type renamer bug with incorrect names being generated.
- - - - -
0f35bf7c by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Add some documentation and refactor type specialization module.
- - - - -
da1d0803 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Fix another bug where type renamer was generating incorrect names.
- - - - -
cd39b5cb by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Refactor type renamer to rebinding and pure renaming phases.
- - - - -
850251f4 by Łukasz Hanuszczak at 2015-08-21T18:22:31+01:00
Fix unwitting compilation bug.
- - - - -
e5e9fc01 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Integrate instance specification type into class instance definition.
- - - - -
825b0ea0 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Get rid of no longer neccessary instance specification type.
- - - - -
cdba44eb by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Fix declaration converter to use more appropriate mode for methods.
- - - - -
bc45c309 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Fix bug with types not being specialized at all.
- - - - -
5d8e5d89 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Fix bug where instance expander was opening wrong section.
- - - - -
6001ee41 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Fix another type renamer bug where not all names were rebound.
- - - - -
5f58ce2a by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Fix yet another renamer bug where some names were not unique.
- - - - -
8265e521 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Split instance subsection layout method to top-level declarations.
- - - - -
e5e66298 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Rearrange layout of instance methods in generated documentation.
- - - - -
a50b4eea by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Get rid of no longer used layout method.
- - - - -
2ff36ec2 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Attach section title to the instance methods block.
- - - - -
7ac15300 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Add basic tests for associated types in instances test case.
- - - - -
db0ea2f9 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Attach associated types information to instance header.
- - - - -
71cad4d5 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Make instance details section contain associated types information.
- - - - -
deee2809 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Improve look of rendered associated families in instance details.
- - - - -
839d13a5 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Introduce alternative type for family declarations.
- - - - -
d397f03f by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Make instance details record use new type for family declarations.
- - - - -
2b23fe97 by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Split printer of type family header to separate functions.
- - - - -
c3498cdc by Łukasz Hanuszczak at 2015-08-21T18:22:32+01:00
Implement HTML renderer for pseudo-family declarations.
- - - - -
c12bbb04 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Apply type specializer to associated type family declarations. 
- - - - -
2fd69ff2 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Create helper method for specializing type signatures.
- - - - -
475826e7 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Refactor specializer module to be independent from XHTML backend.
- - - - -
f00b431c by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Add some documentation for instance head specializer.
- - - - -
a9fef2dc by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Fix bug with missing space in documentation for associated types.
- - - - -
50e29056 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Fix issue with incorrect instance details sections being expanded.
- - - - -
e6dfdd03 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Accept tests affected by adding instance details section.
- - - - -
75565b2a by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Make section identifier of instance details more GHC-independent.
- - - - -
add0c23e by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Re-accept tests after applying deterministic section identifiers.
- - - - -
878f2534 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Make identifier generation also architecture-independent.
- - - - -
48be69f8 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Fix issue with instance expander hijacking type hyperlink click.
- - - - -
47830c1f by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Get rid of dreadful hashing function for generating identifiers.
- - - - -
956cd5af by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Move `InstOrigin` type declaration to more appropriate module.
- - - - -
bf672ed3 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Accept tests affected by changes related to instance expander.
- - - - -
8f2a949a by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Add examples with type operators to the instances test case.
- - - - -
64600a84 by Łukasz Hanuszczak at 2015-08-21T18:22:33+01:00
Add basic support for sugaring infix type operators.
- - - - -
747d71b8 by Łukasz Hanuszczak at 2015-08-21T18:22:34+01:00
Add support for sugaring built-in function syntax.
- - - - -
d4696ffb by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Remove default methods from Hoogle class output.
- - - - -
bf0e09d7 by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Add fixity declarations in Hoogle backend output.
- - - - -
90e91a51 by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Fix bug with incorrect fixities being generated in Hoogle backend.
- - - - -
48f11d35 by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Improve class type family declarations output in Hoogle backend.
- - - - -
661e8e8f by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Add missing default family equations in Hoogle output.
- - - - -
e2d64103 by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Improve formatting of class details output in Hoogle backend.
- - - - -
490fc377 by Łukasz Hanuszczak at 2015-08-21T18:31:31+01:00
Fix weird-looking Hoogle output for familyless classes.
- - - - -
ea115b64 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Create script file for new HTML test runner.
- - - - -
609913d3 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Set default behaviour if no arguments given.
- - - - -
dc115f67 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Add support for providing optional arguments for test runner.
- - - - -
d93ec867 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Improve output of test runner error messages.
- - - - -
0be9fe12 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Add support for executing Haddock process in test runner.
- - - - -
4e4d00d9 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Add GHC path to test runner configuration.
- - - - -
d67a2086 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Make GHC path a test runner command-line argument.
- - - - -
c810079a by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Extend test runner configuration with Haddock arguments.
- - - - -
fee18845 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Refactor test runner and create stub functions.
- - - - -
ff7c161f by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Make test runner actually run Haddock executable.
- - - - -
391f73e6 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Fix bug with test runner not producing any output files.
- - - - -
81a74e2d by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Setup skeleton of framework for running tests.
- - - - -
f8a79ec4 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Fix bug with modules not being found in global search mode.
- - - - -
7e700b4d by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Make Haddock standard output redirection be more configurable.
- - - - -
53b4c17a by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Incorporate old, ugly functions for comparing output files.
- - - - -
8277c8aa by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Refactor architecture of test runner output checking functions.
- - - - -
587bb414 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Implement actual diffing mechanism.
- - - - -
9ed2b5e4 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Improve code style to match popular guidelines.
- - - - -
14bffaf8 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Make it possible to choose alternative diff tool.
- - - - -
5cdfb005 by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Create stub methods for processing test output as XML documents.
- - - - -
7ef8e12e by Łukasz Hanuszczak at 2015-08-22T23:40:26+02:00
Implement link-stripping logic as simple SYB transformation.
- - - - -
8a1fcd4f by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Incorporate link stripping to output diffing mechanism.
- - - - -
37dba2bc by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Implement footer-stripping logic.
- - - - -
9cd52120 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Add missing dependencies in Cabal configuration file.
- - - - -
e0f83c6e by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Fix issue with output being printed in incorrect order.
- - - - -
0a94fbb0 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Make it possible to run tests without generating diff.
- - - - -
76a58c6f by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Refactor HTML test suite boilerplate to external package.
- - - - -
af41e6b0 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Create utilities for storing directory configuration.
- - - - -
d8f0698f by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Move IO-dependent config of HTML test suite to test package.
- - - - -
17369fa0 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Enable all compiler warnings in Haddock test package configuration.
- - - - -
9d03b47a by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Move Haddock runner of HTML test suite to Haddock test package.
- - - - -
4b3483c5 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Make Haddock test package more generic.
- - - - -
03754194 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Create convenience wrappers to simplify in test entry points.
- - - - -
27476ab7 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Adjust module visibility and items they export.
- - - - -
c40002ba by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Remove no longer useful test option.
- - - - -
55ab2541 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Change extension of test files used for diffing.
- - - - -
136bf4e4 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Refactor and simplify XHTML helper module of test package.
- - - - -
69f7e3df by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Fix typo in link stripper of HTML test suite runner.
- - - - -
0c3c1c6b by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Create convenience script for running specific HTML tests.
- - - - -
489e1b05 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Implement utility functions for conditional link stripping.
- - - - -
0f985dc3 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Adapt `hypsrc-test` module to work with new testing framework.
- - - - -
927406f9 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Implement output accepting mechanism in test package.
- - - - -
8545715e by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Create utility function for recursive obtaining directory contents.
- - - - -
cb70381f by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Make Haddock test package more generic.
- - - - -
019599b5 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Fix path handling in test runner.
- - - - -
399b985b by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Make it possible to specify ignored files for test output.
- - - - -
41b3d93d by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Adapt HTML test runner to use new ignoring functionality.
- - - - -
e2091c8b by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Fix bug with not all test output files being checked.
- - - - -
b22134f9 by Łukasz Hanuszczak at 2015-08-22T23:40:27+02:00
Specify ignored files for hyperlinker source test runner.
- - - - -
3301dfa1 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Copy test runner script for hyperlinked source case.
- - - - -
d39a6dfa by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Fix bug with test runner invoking Haddock in incorrect mode.
- - - - -
f32c8ff3 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Fix path handling in test module loader.
- - - - -
10f94ee9 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Make test runner ignore test packages with no modules.
- - - - -
5dc4239c by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Create test runner entry points for LaTeX test suite.
- - - - -
58d1f7cf by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Fix bug with unnecessary checking old test output.
- - - - -
c7ce76e1 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Re-implement test acceptance functionality.
- - - - -
13bbabe8 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Fix warning about no longer needed definition.
- - - - -
958a99b8 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Adapt Cabal configuration to execute LaTeX suite with new runner.
- - - - -
550ff663 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Setup test suite for Hoogle backend.
- - - - -
3aa969c4 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Make Hoogle backend create output directory if needed.
- - - - -
eb085b02 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Add appropriate .gitignore entry and configure Hoogle test suite.
- - - - -
a50bf915 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Fix bug with test runner failing when run on multiple test packages.
- - - - -
bf5368b8 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Create simple test cases for Hoogle backend.
- - - - -
6121ba4b by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Create helper function for conversion between XML and XHTML.
- - - - -
cb516061 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Refactor existing code to use XHTML printer instead of XML one.
- - - - -
e2de8c82 by Łukasz Hanuszczak at 2015-08-22T23:40:28+02:00
Improve portability of test runner scripts.
- - - - -
9563e774 by Łukasz Hanuszczak at 2015-08-22T23:43:16+02:00
Remove redundant import statement.
- - - - -
55353df1 by Łukasz Hanuszczak at 2015-08-24T23:09:20+02:00
Fix bug with accepting to non-existing directory.
- - - - -
00a334ca by Łukasz Hanuszczak at 2015-08-24T23:09:47+02:00
Accept output for Hoogle and LaTeX backends.
- - - - -
29191d8b by Łukasz Hanuszczak at 2015-08-24T23:14:18+02:00
Get rid of obsolete testing utilities.
- - - - -
bbb25db3 by Łukasz Hanuszczak at 2015-08-24T23:18:50+02:00
Update sandbox setup guide to work with Haddock test package.
- - - - -
cfd45248 by Łukasz Hanuszczak at 2015-08-24T23:51:30+02:00
Make Travis aware of Haddock test package.
- - - - -
74185b7a by Łukasz Hanuszczak at 2015-08-25T17:41:59+02:00
Fix test suite failure when used with Stack.
- - - - -
18769697 by Łukasz Hanuszczak at 2015-08-25T18:02:09+02:00
Add sample Stack setup to the hacking guide.

- - - - -
22715eeb by Łukasz Hanuszczak at 2015-08-25T18:04:47+02:00
Fix Markdown formatting of README file.
- - - - -
b49ec386 by Łukasz Hanuszczak at 2015-08-25T18:13:36+02:00
Setup Haddock executable path in Travis configuration.
- - - - -
5d29eb03 by Eric Seidel at 2015-08-30T09:55:58-07:00
account for changes to ipClass

- - - - -
f111740a by Ben Gamari at 2015-09-02T13:20:37+02:00
Merge pull request haskell/haddock#443 from bgamari/ghc-head

account for changes to ipClass
- - - - -
a2654bf6 by Jan Stolarek at 2015-09-03T01:32:57+02:00
Follow changes from haskell/haddock#6018

- - - - -
2678bafe by Richard Eisenberg at 2015-09-21T12:00:47-04:00
React to refactoring CoAxiom branch lists.

- - - - -
ebc56e24 by Edward Z. Yang at 2015-09-21T11:53:46-07:00
Track msHsFilePath change.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
4a8c4198 by Tamar Christina at 2015-09-27T13:59:08+02:00
Create Process: removed PhaseFailed

- - - - -
7e99b790 by Oleg Grenrus at 2015-09-27T20:52:10+03:00
Generate docs for orphan instances

- - - - -
32e932e2 by Oleg Grenrus at 2015-09-28T07:21:11+03:00
Have source links for orphan instances

- - - - -
c2eb9f4f by Oleg Grenrus at 2015-09-28T07:24:58+03:00
Print orphan instances header only if required

- - - - -
ff96f978 by Oleg Grenrus at 2015-09-28T07:40:54+03:00
Add orphan instances link to contents box

- - - - -
d72490a6 by Oleg Grenrus at 2015-09-28T16:37:44+03:00
Fix orphan instance collapsing

- - - - -
25d3dfe5 by Ben Gamari at 2015-10-03T12:38:09+02:00
Merge pull request haskell/haddock#448 from Mistuke/fix-silent-death-of-runInteractive

Remove PhaseFailed
- - - - -
1e45e43b by Edward Z. Yang at 2015-10-11T13:10:10-07:00
s/PackageKey/UnitId/g and s/packageKey/unitId/g

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
b1370ac1 by Adam Gundry at 2015-10-16T16:26:42+01:00
Roughly fix up haddock for DuplicateRecordFields changes

This compiles, but will probably need more work to produce good
documentation when the DuplicateRecordFields extension is used.

- - - - -
60bef421 by Simon Peyton Jones at 2015-10-26T12:52:36+00:00
Track wip/spj-wildcard-refactor on main repo

- - - - -
4c1898ca by Simon Peyton Jones at 2015-10-27T14:24:56+00:00
Track change to PatSyn.patSynSig

- - - - -
25108e85 by Simon Peyton Jones at 2015-10-27T17:34:18+00:00
Follow changes to HsTYpe

Not yet complete (but on a wip/ branch)

- - - - -
693643ac by Ben Gamari at 2015-10-28T14:33:06+01:00
Account for Typeable changes

The treatment of type families changed.

- - - - -
cd7c2221 by Simon Peyton Jones at 2015-10-30T13:03:51+00:00
Work on updating Haddock to wip/spj-wildard-recactor

Still incomplete

- - - - -
712032cb by Herbert Valerio Riedel at 2015-10-31T11:01:45+01:00
Relax upper bound on `base` to allow base-4.9

- - - - -
0bfa0475 by Simon Peyton Jones at 2015-10-31T19:08:13+00:00
More adaption to wildcard-refactor

- - - - -
0a3c0cb7 by Simon Peyton Jones at 2015-10-31T22:14:43+00:00
Merge remote-tracking branch 'origin/ghc-head' into wip/spj-wildcard-refactor

Conflicts:
	haddock-api/src/Haddock/Convert.hs

- - - - -
c4fd4ec9 by Alan Zimmerman at 2015-11-01T11:16:34+01:00
Matching change GHC haskell/haddock#11017 BooleanFormula located

- - - - -
42cdd882 by Matthew Pickering at 2015-11-06T20:02:16+00:00
Change for IEThingWith

- - - - -
f368b7be by Ben Gamari at 2015-11-11T11:35:51+01:00
Eliminate support for deprecated GADT syntax

Follows from GHC D1460.

- - - - -
e32965b8 by Simon Peyton Jones at 2015-11-13T12:18:17+00:00
Merge with origin/head

- - - - -
ebcf795a by Edward Z. Yang at 2015-11-13T21:56:27-08:00
Undo msHsFilePath change.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
4e23989f by Simon Peyton Jones at 2015-11-18T11:32:54+00:00
Wibbles to Haddock

- - - - -
2289cd4a by Simon Peyton Jones at 2015-11-20T23:12:49+00:00
Merge remote-tracking branch 'origin/ghc-head' into wip/spj-wildcard-refactor

- - - - -
695975a6 by Alan Zimmerman at 2015-11-21T21:16:12+02:00
Update to match GHC wip/T11019

- - - - -
bbba21e7 by Simon Peyton Jones at 2015-11-23T13:54:31+00:00
merge with origin/ghc-head

- - - - -
3d664258 by Simon Peyton Jones at 2015-11-23T17:17:18+00:00
Wibble

- - - - -
e64cf586 by Herbert Valerio Riedel at 2015-12-05T00:29:55+01:00
Canonicalise Monad instances

- - - - -
a2de15a7 by Alan Zimmerman at 2015-12-05T17:33:52+02:00
Matching changes for haskell/haddock#11028

- - - - -
cc29a3e4 by Alan Zimmerman at 2015-12-05T19:45:33+02:00
Placeholder for record style GADT declaration

A GADT Declaration is now presented as

    CmmCondBranch :: {..} -> CmmNode O C
        cml_pred :: CmmExpr
        cml_true, cml_false :: !Label
        cml_likely :: Maybe Bool
for

    CmmCondBranch :: {              -- conditional branch
        cml_pred :: CmmExpr,
        cml_true, cml_false :: ULabel,
        cml_likely :: Maybe Bool    -- likely result of the conditional,
                                    -- if known
    } -> CmmNode O C

- - - - -
95dd15d1 by Richard Eisenberg at 2015-12-11T17:33:39-06:00
Update for type=kinds

- - - - -
cb5fd9ed by Herbert Valerio Riedel at 2015-12-14T15:07:30+00:00
Bump versions for ghc-7.11

- - - - -
4f286d96 by Simon Peyton Jones at 2015-12-14T15:10:56+00:00
Eliminate instanceHead' in favour of GHC's instanceSig

This is made possible by the elimination of "silent superclass
parameters" in GHC

- - - - -
13ea2733 by Simon Peyton Jones at 2015-12-14T15:10:58+00:00
Remove redundant constraints from haddock, discovered by -fwarn-redundant-constraints

- - - - -
098df8b8 by Simon Peyton Jones at 2015-12-14T15:10:58+00:00
Track changes in HsSyn for quasi-quotes

- - - - -
716a64de by Simon Peyton Jones at 2015-12-14T15:10:58+00:00
Track change in API of TyCon

- - - - -
77a66bca by Adam Gundry at 2015-12-14T15:10:58+00:00
Track API changes to support empty closed type familes

- - - - -
f2808305 by Simon Peyton Jones at 2015-12-14T15:10:58+00:00
Track the new location of setRdrNameSpace

- - - - -
ba8b08a4 by Alan Zimmerman at 2015-12-14T15:10:59+00:00
ApiAnnotations : strings in warnings do not return SourceText

The strings used in a WARNING pragma are captured via

strings :: { Located ([AddAnn],[Located FastString]) }
    : STRING { sL1 $1 ([],[L (gl $1) (getSTRING $1)]) }
..

The STRING token has a method getSTRINGs that returns the original
source text for a string.

A warning of the form

{-# WARNING Logic
          , mkSolver
          , mkSimpleSolver
          , mkSolverForLogic
          , solverSetParams
          , solverPush
          , solverPop
          , solverReset
          , solverGetNumScopes
          , solverAssertCnstr
          , solverAssertAndTrack
          , solverCheck
          , solverCheckAndGetModel
          , solverGetReasonUnknown
          "New Z3 API support is still incomplete and fragile: \
          \you may experience segmentation faults!"
  #-}

returns the concatenated warning string rather than the original source.

- - - - -
a4ded87e by Thomas Winant at 2015-12-14T15:14:05+00:00
Update after wild card renaming refactoring in D613

Summary:
* Move `Post*` type instances to `Haddock.Types` as other modules than
  `Haddock.Interface.Rename` will rely on these type instances.
* Update after wild card renaming refactoring in D613.

Reviewers: simonpj, austin

Reviewed By: austin

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

GHC Trac Issues: haskell/haddock#10098

- - - - -
25c78107 by Adam Sandberg Eriksson at 2015-12-14T15:14:06+00:00
StrictData: print correct strictness marks

- - - - -
6cbc41c4 by Adam Sandberg Eriksson at 2015-12-14T15:14:06+00:00
StrictData: changes in HsBang type

- - - - -
ad46821a by Alan Zimmerman at 2015-12-14T15:14:06+00:00
Replace (SourceText,FastString) with WithSourceText data type

Phab:D907 introduced SourceText for a number of data types, by replacing
FastString with (SourceText,FastString). Since this has an Outputable
instance, no warnings are generated when ppr is called on it, but
unexpected output is generated. See Phab:D1096 for an example of this.

Replace the (SourceText,FastString) tuples with a new data type

data WithSourceText = WithSourceText SourceText FastString

Trac ticket: haskell/haddock#10692

- - - - -
abc0ae5b by Adam Sandberg Eriksson at 2015-12-14T15:14:06+00:00
HsBang is split into HsSrcBang and HsImplBang

With recent changes in GHC handling of strictness annotations in Haddock
is simplified.

- - - - -
3308d06c by Thomas Miedema at 2015-12-14T15:14:07+00:00
Follow changes in GHC build system

- - - - -
6c763deb by Eric Seidel at 2015-12-14T15:14:07+00:00
account for changes to ipClass

- - - - -
ae5b4eac by Jan Stolarek at 2015-12-14T15:17:00+00:00
Follow changes from haskell/haddock#6018

- - - - -
ffbc40e0 by Richard Eisenberg at 2015-12-14T15:17:02+00:00
React to refactoring CoAxiom branch lists.

- - - - -
d1f531e9 by Edward Z. Yang at 2015-12-14T15:17:02+00:00
Track msHsFilePath change.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
79f73754 by Tamar Christina at 2015-12-14T15:17:02+00:00
Create Process: removed PhaseFailed

- - - - -
3d37bebb by Edward Z. Yang at 2015-12-14T15:20:46+00:00
s/PackageKey/UnitId/g and s/packageKey/unitId/g

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
5f8a9e44 by Adam Gundry at 2015-12-14T15:20:48+00:00
Roughly fix up haddock for DuplicateRecordFields changes

This compiles, but will probably need more work to produce good
documentation when the DuplicateRecordFields extension is used.

- - - - -
79dda70f by Simon Peyton Jones at 2015-12-14T15:26:02+00:00
Track wip/spj-wildcard-refactor on main repo

- - - - -
959930fb by Simon Peyton Jones at 2015-12-14T15:37:50+00:00
Follow changes to HsTYpe

Not yet complete (but on a wip/ branch)

- - - - -
e18a8df5 by Simon Peyton Jones at 2015-12-14T15:37:52+00:00
Work on updating Haddock to wip/spj-wildard-recactor

Still incomplete

- - - - -
aa35ab52 by Simon Peyton Jones at 2015-12-14T15:40:18+00:00
More adaption to wildcard-refactor

- - - - -
8ceef94b by Simon Peyton Jones at 2015-12-14T15:46:04+00:00
Track change to PatSyn.patSynSig

- - - - -
cd81e83d by Ben Gamari at 2015-12-14T15:46:06+00:00
Account for Typeable changes

The treatment of type families changed.

- - - - -
63c9117c by Herbert Valerio Riedel at 2015-12-14T15:46:34+00:00
Relax upper bound on `base` to allow base-4.9

- - - - -
a484c613 by Alan Zimmerman at 2015-12-14T15:47:46+00:00
Matching change GHC haskell/haddock#11017 BooleanFormula located

- - - - -
2c26fa51 by Matthew Pickering at 2015-12-14T15:47:47+00:00
Change for IEThingWith

- - - - -
593baa0f by Ben Gamari at 2015-12-14T15:49:21+00:00
Eliminate support for deprecated GADT syntax

Follows from GHC D1460.

- - - - -
b6b5ca78 by Edward Z. Yang at 2015-12-14T15:49:54+00:00
Undo msHsFilePath change.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
b5b0e072 by Alan Zimmerman at 2015-12-14T15:54:20+00:00
Update to match GHC wip/T11019

- - - - -
14ddeb68 by Simon Peyton Jones at 2015-12-14T15:54:22+00:00
Wibble

- - - - -
10a90ad8 by Herbert Valerio Riedel at 2015-12-14T15:54:22+00:00
Canonicalise Monad instances

- - - - -
ed68ac50 by Alan Zimmerman at 2015-12-14T15:55:48+00:00
Matching changes for haskell/haddock#11028

- - - - -
3f7e5a2d by Alan Zimmerman at 2015-12-14T15:55:49+00:00
Placeholder for record style GADT declaration

A GADT Declaration is now presented as

    CmmCondBranch :: {..} -> CmmNode O C
        cml_pred :: CmmExpr
        cml_true, cml_false :: !Label
        cml_likely :: Maybe Bool
for

    CmmCondBranch :: {              -- conditional branch
        cml_pred :: CmmExpr,
        cml_true, cml_false :: ULabel,
        cml_likely :: Maybe Bool    -- likely result of the conditional,
                                    -- if known
    } -> CmmNode O C

- - - - -
6543a73f by Richard Eisenberg at 2015-12-14T15:59:55+00:00
Update for type=kinds

- - - - -
193a5c48 by Matthew Pickering at 2015-12-14T18:17:00+00:00
Changes to compile with 8.0

- - - - -
add669ec by Matthew Pickering at 2015-12-14T18:47:12+00:00
Warnings

- - - - -
223f3fb4 by Ben Gamari at 2015-12-15T23:45:05+01:00
Update for D1200

- - - - -
d058388f by Ben Gamari at 2015-12-16T05:40:17-05:00
Types: Add Outputable[Bndr] DocName instances

- - - - -
62ecd7fb by Ben Gamari at 2015-12-16T09:23:09-05:00
Fix fallout from wildcards refactoring

The wildcard refactoring was introduced a new type of signature,
`ClassOpSig`, which is carried by typeclasses. The original patch
adapting Haddock for this change missed a few places where this
constructor needed to be handled, resulting in no class methods
in documentation produced by Haddock.

Additionally, this moves and renames the `isVanillaLSig` helper from
GHC's HsBinds module into GhcUtils, since it is only used by Haddock.

- - - - -
ddbc187a by Ben Gamari at 2015-12-16T17:54:55+01:00
Update for D1200

- - - - -
cec83b52 by Ben Gamari at 2015-12-16T17:54:55+01:00
Types: Add Outputable[Bndr] DocName instances

- - - - -
d12ecc98 by Ben Gamari at 2015-12-16T17:54:55+01:00
Fix fallout from wildcards refactoring

The wildcard refactoring was introduced a new type of signature,
`ClassOpSig`, which is carried by typeclasses. The original patch
adapting Haddock for this change missed a few places where this
constructor needed to be handled, resulting in no class methods
in documentation produced by Haddock.

Additionally, this moves and renames the `isVanillaLSig` helper from
GHC's HsBinds module into GhcUtils, since it is only used by Haddock.

- - - - -
ada1616f by Ben Gamari at 2015-12-16T17:54:58+01:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
a4f0383d by Ben Gamari at 2015-12-16T23:32:38+01:00
Fix Hyperlinker

GHC.con_names is now GHC.getConNames

- - - - -
a10e6849 by Ben Gamari at 2015-12-20T00:54:11+01:00
Merge remote-tracking branch 'mrhania/testing-framework-improvements' into ghc-head

- - - - -
f078b4fd by Ben Gamari at 2015-12-20T00:59:51+01:00
test: Compatibility with Cabal 1.23

- - - - -
88a511a9 by Ben Gamari at 2015-12-20T01:14:35+01:00
Merge remote-tracking branch 'phadej/orphans' into ghc-head

- - - - -
4e250f36 by Ben Gamari at 2015-12-20T01:14:52+01:00
Add html-test for orphan instances output

- - - - -
87fffbad by Alan Zimmerman at 2015-12-20T09:50:42+02:00
Update for GHC trac#11258

Adding locations to RdrName in FieldOcc and AmbiguousFieldOcc

- - - - -
6b7e51c9 by idontgetoutmuch at 2015-12-20T21:01:47+00:00
Merge pull request haskell/haddock#1 from haskell/ghc-head

Ghc head
- - - - -
229c1fb5 by Dominic Steinitz at 2015-12-21T07:19:16+00:00
Handle inline math with mathjax.

- - - - -
57902d66 by Dominic Steinitz at 2015-12-21T08:07:11+00:00
Fix the documentation for haddock itself.

Change notation and add support for inline math.

Allow newlines in display math.

Add a command line option for the mathjax url (you might want to use a
locally installed version).

Rebase tests because of extra url and version change.

Respond to (some of the) comments.

Fix warnings in InterfaceFile.hs

- - - - -
0e69f236 by Herbert Valerio Riedel at 2015-12-21T18:30:43+01:00
Fix-up left-over assumptions of GHC 7.12 into GHC 8.0

- - - - -
c67f8444 by Simon Peyton Jones at 2015-12-22T16:26:56+00:00
Follow removal of NamedWildCard from HsType

- - - - -
da40327a by Ben Gamari at 2015-12-23T14:15:28+01:00
html-test/Operators: Clear up ambiguous types

For reasons that aren't entirely clear a class with ambiguous types was
accepted by GHC <8.0. I've added a functional dependency to clear up
this ambiguity.

- - - - -
541b7fa4 by Ben Gamari at 2015-12-23T14:18:51+01:00
Merge remote-tracking branch 'origin/ghc-head' into ghc-head

- - - - -
0febc947 by Ben Gamari at 2015-12-24T00:30:20+01:00
hoogle-test/AssocTypes: Allow AmbiguousTypes

GHC 8.0 complains otherwise

- - - - -
25810841 by Ben Gamari at 2015-12-24T00:33:18+01:00
OrphanInstances: Accept test output

- - - - -
841987f3 by Ben Gamari at 2015-12-25T11:03:11+01:00
Merge remote-tracking branch 'idontgetoutmuch/ghc-head' into ghc-head

- - - - -
358391f0 by Ben Gamari at 2015-12-26T10:44:50+01:00
Add missing import

- - - - -
a8896885 by Ben Gamari at 2015-12-26T10:45:27+01:00
travis: Use Travis containers

- - - - -
85e82134 by Herbert Valerio Riedel at 2015-12-30T17:25:39+01:00
tweak version bounds for GHC-8.1

- - - - -
672a5f75 by randen at 2016-01-01T23:45:25-08:00
The Haddock part for fully gcc-like response files

" driver/Main.hs
  * Moved the response file handling into ResponseFile.hs,
    updating import section as appropriate.
* driver/ResponseFile.hs
  * New file. In anticipation that maybe some day this could
    be provided by another library, and to make it possible
    to unit test, this functionality is pulled out of the
    Main.hs module, and expanded to support the style/format
    of response files which gcc uses.
  * The specification for the format of response files which
    gcc generates and consumes, seems to be best derived from
    the gcc code itself (libiberty/argv.c), so that is what
    has been done here.
  * This is intended to fix haskell/haddock#379
* driver-test/Main.hs
  * New file for testing code in the driver source tree
* driver-test/ResponseFileSpec.hs
  * Tests, adapted/adopted from the same gcc code where the
    escaping/unescaping is from, in the hspec style of unit
    tests
* haddock.cabal
  * Add the driver-test test-suite.  Introduces a new library
    dependency (upon hspec) for the haddock driver target in
    the haddock.cabal file, but practically, this should not
    be a problem as the haddock-api tests already depend on
    hspec.

- - - - -
498781df by Ben Gamari at 2016-01-06T13:41:04+01:00
Version bumps and changelog

- - - - -
8451e46a by Ben Gamari at 2016-01-06T13:47:17+01:00
Merge remote-tracking branch 'randen/bug468'

- - - - -
fb2d9181 by Ben Gamari at 2016-01-06T08:14:42-05:00
Add ResponseFile to OtherModules

- - - - -
2cb2d2e3 by Ben Gamari at 2016-01-06T14:35:00+01:00
Merge branch 'master' into ghc-head

- - - - -
913477d4 by Eric Seidel at 2016-01-11T14:57:57-08:00
deal with un-wiring of IP class

- - - - -
c557a4b3 by Alan Zimmerman at 2016-01-15T11:14:35+02:00
Update to match wip/T11430 in GHC

- - - - -
3e135093 by Alan Zimmerman at 2016-01-16T18:21:59+01:00
Update to match wip/T11430 in GHC

- - - - -
c48ef2f9 by Ben Gamari at 2016-01-18T09:50:06+01:00
Merge remote-tracking branch 'gridaphobe/ghc-head' into ghc-head

- - - - -
9138a1b0 by Eric Seidel at 2016-01-18T12:50:15+01:00
deal with un-wiring of IP class

(cherry picked from commit 17388b0f0029d969d79353be7737eb01c7b8dc5f)

- - - - -
b48c172e by Joachim Breitner at 2016-01-19T00:11:38+01:00
Make sure --mathjax affects all written HTML files

This fixes haskell/haddock#475.

- - - - -
af61fe63 by Ryan Scott at 2016-02-07T23:25:57+01:00
Render */# instead of TYPE 'Lifted/TYPE 'Unlifted (fixes haskell/haddock#473)

- - - - -
b6458693 by Ben Gamari at 2016-02-07T23:29:27+01:00
Merge pull request haskell/haddock#477 from haskell/issue-475

Make sure --mathjax affects all written HTML files
- - - - -
adcc0071 by Ben Gamari at 2016-02-07T23:34:52+01:00
Merge branch 'master' into ghc-head

- - - - -
d0404e61 by Ben Gamari at 2016-02-08T12:46:49+01:00
doc: Switch to Sphinx

- - - - -
acb153b3 by Ben Gamari at 2016-02-08T12:46:56+01:00
Document --use-unicode flag

- - - - -
c20bdf1d by Ben Gamari at 2016-02-08T13:41:24+01:00
Fix GHC and haddock-library dependency bounds

- - - - -
8d946801 by Ben Gamari at 2016-02-08T14:54:56+01:00
testsuite: Rework handling of output sanitization

Previously un-cleaned artifacts were kept as reference output, making
it difficult to tell what has changed and causing spurious changes in
the version control history. Here we rework this, cleaning the output
during acceptance. To accomplish this it was necessary to move to strict
I/O to ensure the reference handle was closed before accept attempts to
open the reference file.

- - - - -
c465705d by Ben Gamari at 2016-02-08T15:36:05+01:00
test: Compare on dump

For reasons I don't understand the Xml representations differ despite
their textual representations being identical.

- - - - -
1ec0227a by Ben Gamari at 2016-02-08T15:36:05+01:00
html-test: Accept test output

- - - - -
eefbd63a by Ben Gamari at 2016-02-08T15:36:08+01:00
hypsrc-test: Accept test output

And fix impredicative Polymorphism testcase.

- - - - -
d1df4372 by Ben Gamari at 2016-02-08T15:40:44+01:00
Merge branch 'fix-up-testsuite'

- - - - -
206a3859 by Phil Ruffwind at 2016-02-08T17:51:21+01:00
Move the permalinks to "#" on the right side

Since pull request haskell/haddock#407, the identifiers have been permalinked to
themselves, but this makes it difficult to copy the identifier by
double-clicking.  To work around this usability problem, the permalinks
are now placed on the far right adjacent to "Source", indicated by "#".

Also, 'namedAnchor' now uses 'id' instead of 'name' (which is obsolete).

- - - - -
6c89fa03 by Phil Ruffwind at 2016-02-08T17:54:44+01:00
Update tests for previous commit

- - - - -
effaa832 by Ben Gamari at 2016-02-08T17:56:17+01:00
Merge branch 'anchors-redux'

- - - - -
9a2bec90 by Ben Gamari at 2016-02-08T17:58:40+01:00
Use -fprint-unicode-syntax when --use-unicode is enabled

This allows GHC to render `*` as its Unicode representation, among other
things.

- - - - -
28ecac5b by Ben Gamari at 2016-02-11T18:53:03+01:00
Merge pull request haskell/haddock#480 from bgamari/sphinx

Move documentation to ReStructuredText
- - - - -
222e5920 by Ryan Scott at 2016-02-11T15:42:42-05:00
Collapse type/data family instances by default

- - - - -
a80ac03b by Ryan Scott at 2016-02-11T20:17:09-05:00
Ensure expanded family instances render correctly

- - - - -
7f985231 by Ben Gamari at 2016-02-12T10:04:22+01:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
d4eda086 by Ben Gamari at 2016-02-18T00:05:56+01:00
Xhtml.Decl: Various cleanups

- - - - -
79bee48d by Ben Gamari at 2016-02-18T00:05:56+01:00
Xhtml.Decl: Show kind signatures for type family variables

Addresses GHC haskell/haddock#11588.

- - - - -
b2981d98 by Ben Gamari at 2016-02-18T00:05:56+01:00
Xhtml.Decl: Show 'where ...' after closed type family

Seems like we should ideally show the actual equations as well but that
seems like it would be a fair amount of work

- - - - -
cfc0e621 by Ben Gamari at 2016-02-18T22:48:12+01:00
Merge pull request haskell/haddock#483 from bgamari/T11588

Fix GHC haskell/haddock#11588

This fixes GHC haskell/haddock#11588:
  * Show where ... after closed type families
  * Show kind signatures on type family type variables


- - - - -
256e8a0d by Ben Gamari at 2016-02-18T23:15:39+01:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
32402036 by Richard Eisenberg at 2016-02-24T13:21:44-05:00
Follow-on changes to support RuntimeRep

- - - - -
2b1c572d by Matthew Pickering at 2016-03-04T21:04:02+00:00
Remove unused functions

- - - - -
eb906f50 by Richard Eisenberg at 2016-03-13T21:17:20+01:00
Follow-on changes to support RuntimeRep

(cherry picked from commit ab954263a793d8ced734459d6194a5d89214b66c)

- - - - -
8c34ef34 by Richard Eisenberg at 2016-03-14T23:47:23-04:00
Changes due to fix for GHC#11648.

- - - - -
0e022014 by Richard Eisenberg at 2016-03-15T14:06:45+01:00
Changes due to fix for GHC#11648.

(cherry picked from commit bb994de1ab0c76d1aaf1e39c54158db2526d31f1)

- - - - -
ed3f78ab by Rik Steenkamp at 2016-04-02T22:20:36+01:00
Fix printing of pattern synonym types

Removes the call to `patSynType :: PatSyn -> Type` in `Convert.hs` as this
function will be removed from GHC. Instead, we use the function `patSynSig`
and build the `HsDecl` manually. This also fixes the printing of the two
contexts and the quantified type variables in a pattern synonym type.

Reviewers: goldfire, bgamari, mpickering

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

- - - - -
d3210042 by Rik Steenkamp at 2016-04-04T15:43:32+02:00
Fix printing of pattern synonym types

Removes the call to `patSynType :: PatSyn -> Type` in `Convert.hs` as this
function will be removed from GHC. Instead, we use the function `patSynSig`
and build the `HsDecl` manually. This also fixes the printing of the two
contexts and the quantified type variables in a pattern synonym type.

Reviewers: goldfire, bgamari, mpickering

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

(cherry picked from commit 3ddcbd6b8e6884bd95028381176eb33bee6896fb)

- - - - -
236eec90 by Ben Gamari at 2016-04-10T23:40:15+02:00
doc: Fix option references

(cherry picked from commit f915fb3c74328fb994235bbbd42092a691539197)

- - - - -
692ee7e0 by Ben Gamari at 2016-04-10T23:40:15+02:00
doc: Only install if BUILD_SPHINX_HTML==YES

Fixes GHC haskell/haddock#11818.

- - - - -
79619f57 by Ben Gamari at 2016-04-10T23:46:22+02:00
doc: Only install if BUILD_SPHINX_HTML==YES

Fixes GHC haskell/haddock#11818.

(cherry picked from commit c6d6a18d85e5e2d9bb5904e6919e8a8d7e31c4c5)

- - - - -
3358ccb4 by Ben Gamari at 2016-04-10T23:47:27+02:00
doc: Fix option references

(cherry picked from commit f915fb3c74328fb994235bbbd42092a691539197)

- - - - -
264949b1 by Ben Gamari at 2016-04-16T17:50:23+02:00
Merge pull request haskell/haddock#482 from RyanGlScott/ghc-head

Collapse type/data family instances by default
- - - - -
478c483a by Ben Gamari at 2016-04-16T17:51:09+02:00
Merge pull request haskell/haddock#489 from mpickering/unused-functions

Remove some unused functions
- - - - -
c94e55f0 by Ryan Scott at 2016-04-16T17:57:54+02:00
Collapse type/data family instances by default

(cherry picked from commit 2da130a8db8f995c119b544fad807533236cf088)

- - - - -
31e633d3 by Ryan Scott at 2016-04-16T17:58:06+02:00
Ensure expanded family instances render correctly

(cherry picked from commit 1338b5d7c32939de6bbc31af0049477e4f847103)

- - - - -
03e4d197 by Matthew Pickering at 2016-04-16T17:58:21+02:00
Remove unused functions

(cherry picked from commit b89d1c2456bdb2d4208d94ded56155f7088a37d0)

- - - - -
ed4116f6 by Ben Gamari at 2016-04-20T10:46:57+02:00
ghc: Install files for needed --hyperlinked-source

- - - - -
0be999c4 by Ben Gamari at 2016-04-20T11:37:54+02:00
ghc: Install files for needed --hyperlinked-source

(cherry picked from commit 5c82c9fc2d21ddaae4a2470f1c375426968f19c6)

- - - - -
4d17544c by Simon Peyton Jones at 2016-04-20T12:42:28+01:00
Track change to HsGroup

This relates to a big GHC patch for Trac haskell/haddock#11348

- - - - -
1700a50d by Ben Gamari at 2016-05-01T13:19:27+02:00
doc: At long last fix ghc.mk

The variable reference was incorrectly escaped, meaning that Sphinx
documentation was never installed.

- - - - -
0b7c8125 by Ben Gamari at 2016-05-01T13:21:43+02:00
doc: At long last fix ghc.mk

The variable reference was incorrectly escaped, meaning that Sphinx
documentation was never installed.

(cherry picked from commit 609018dd09c4ffe27f9248b2d8b50f6196cd42b9)

- - - - -
af115ce0 by Ryan Scott at 2016-05-04T22:15:50-04:00
Render Haddocks for derived instances

Currently, one can document top-level instance declarations, but derived
instances (both those in `deriving` clauses and standalone `deriving`
instances) do not enjoy the same privilege. This makes the necessary
changes to the Haddock API to enable rendering Haddock comments for
derived instances.

This is part of a fix for Trac haskell/haddock#11768.

- - - - -
76fa1edc by Ben Gamari at 2016-05-10T18:13:25+02:00
haddock-test: A bit of refactoring for debuggability

- - - - -
7d4c4b20 by Ben Gamari at 2016-05-10T18:13:25+02:00
Create: Mark a comment as TODO

- - - - -
2a6d0c90 by Ben Gamari at 2016-05-10T18:13:25+02:00
html-test: Update reference output

- - - - -
bd60913d by Ben Gamari at 2016-05-10T18:13:25+02:00
hypsrc-test: Fix reference file path in cabal file

It appears the haddock insists on prefixing --hyperlinked-sourcer output
with directory which the source appeared in.

- - - - -
c1548057 by Ben Gamari at 2016-05-10T18:22:12+02:00
doc: Update extra-source-files in Cabal file

- - - - -
41d5bae3 by Ben Gamari at 2016-05-10T18:29:21+02:00
Bump versions

- - - - -
ca75b779 by Ben Gamari at 2016-05-11T16:03:44+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
4e3cfd62 by Ben Gamari at 2016-05-11T16:06:45+02:00
Merge remote-tracking branch 'RyanGlScott/ghc-head' into ghc-head

- - - - -
a2379970 by Ben Gamari at 2016-05-11T23:15:11+02:00
doc: Add clean targets

- - - - -
f275212e by Ben Gamari at 2016-05-11T23:15:14+02:00
doc: Add html as an all-target for ghc

Otherwise the html documentation won't be installed for binary-dist.

- - - - -
388fc0af by Ben Gamari at 2016-05-12T09:49:12+02:00
Update CHANGES

- - - - -
bad81ad5 by Ben Gamari at 2016-05-12T09:49:38+02:00
Version bump

- - - - -
c01688a7 by Ben Gamari at 2016-05-12T10:04:58+02:00
Revert "Version bump"

This bump was a bit premature.

This reverts commit 7b238d9c5be9b07aa2d10df323b5c7b8d1634dc8.

- - - - -
7ed05724 by Ben Gamari at 2016-05-12T10:05:33+02:00
doc: Fix GHC clean rule

Apparently GHC's build system doesn't permit wildcards in clean paths.

- - - - -
5d9611f4 by Ben Gamari at 2016-05-12T17:43:50+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
653566b2 by Ben Gamari at 2016-05-14T09:57:31+02:00
Version bump to 2.17.2

- - - - -
b355c439 by Ben Gamari at 2016-05-14T09:57:51+02:00
doc: Use `$(MAKE)` instead of `make`

This is necessary to ensure we use gmake.

- - - - -
8a18537d by Ben Gamari at 2016-05-14T10:15:45+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
b3290ef1 by Sebastian Meric de Bellefon at 2016-05-14T11:29:47-04:00
Fix haskell/haddock#303. Hide footer when printing

The "Produced by Haddock" footer was overlapping the page's body when printing.
This patch hides the footer with a css media rule.

- - - - -
b4a76f89 by Sebastian Meric de Bellefon at 2016-05-15T02:12:46-04:00
Fix haskell/haddock#280. Parsing of module header

The initial newlines were counted as indentation spaces, thus disturbing the parsing of next lines

- - - - -
ba797c9e by Ben Gamari at 2016-05-16T14:53:46+02:00
doc: Vendorize alabaster Sphinx theme

Alabaster is now the default sphinx theme and is a significant
improvement over the previous default that it's worthproviding it when
unavailable (e.g. Sphinx <1.3).

- - - - -
c9283e44 by Ben Gamari at 2016-05-16T14:55:17+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
1c9ea198 by Sebastian Méric de Bellefon at 2016-05-16T12:30:40-04:00
Merge pull request haskell/haddock#502 from Helkafen/master

Fix haskell/haddock#303. Hide footer when printing
- - - - -
33631016 by Ben Gamari at 2016-05-16T19:56:11+02:00
Revert "doc: Vendorize alabaster Sphinx theme"

This ended up causes far too many issues to be worthwhile. We'll just
have to live with inconsistent haddock documentation.

This reverts commit cec21957001143794e71bcd9420283df18e7de40.

- - - - -
93317d26 by Ben Gamari at 2016-05-16T19:56:11+02:00
cabal: Fix README path

- - - - -
c8695b22 by Ben Gamari at 2016-05-16T19:58:51+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
0b50eaaa by Ben Gamari at 2016-05-16T21:02:08+02:00
doc: Use whichever theme sphinx deems appropriate

- - - - -
857c1c9c by Ben Gamari at 2016-05-16T21:07:08+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
15fc5637 by Ben Gamari at 2016-05-22T12:43:59+02:00
Create: Remove redundant imports

- - - - -
132ddc6a by Ben Gamari at 2016-05-22T12:43:59+02:00
Create: Better debug output

For tracking down haskell/haddock#505

- - - - -
2252a149 by Ben Gamari at 2016-05-22T12:43:59+02:00
Don't consider default class ops when looking for decls

When we are looking for an operation within a class we don't care about
`default`-type declarations. This was the cause of haskell/haddock#505.

- - - - -
4886b2ec by Oleg Grenrus at 2016-05-24T16:19:48+03:00
UnfelpfulSpan line number omitted

Kind of resolves https://github.com/haskell/haddock/issues/508

- - - - -
a4befd36 by Oleg Grenrus at 2016-05-24T16:53:35+03:00
Change Hyperlinked lexer to know about DataKinds ticks

- - - - -
f45cb52e by David Feuer at 2016-05-24T18:48:53-04:00
Make parser state a newtype

Previously, it was `data` wrapping a `Maybe`, which seems a bit
silly. Obviously, this can be changed back if anyone wants to add
more fields some day.

- - - - -
05013dd7 by Sebastian Meric de Bellefon at 2016-05-24T22:03:55-04:00
remove framed view of the HTML documentation (see haskell/haddock#114 and haskell/haddock#274)

Frames are a bit broken, ignored by Hackage, and considered obsolete in general.
This patch disables frames generation. The mini_*.html files are still used in the synopsis.

- - - - -
b8163a88 by Ben Gamari at 2016-05-25T14:44:15+02:00
Merge pull request haskell/haddock#507 from bgamari/T505

Fix haskell/haddock#505
- - - - -
ea1b30c6 by Sebastian Meric de Bellefon at 2016-05-25T14:17:00-04:00
Update CHANGES

- - - - -
eddfc258 by Sebastian Méric de Bellefon at 2016-05-25T15:17:40-04:00
Merge pull request haskell/haddock#514 from Helkafen/frames

remove framed view of the HTML documentation (see haskell/haddock#114 and haskell/haddock#274)
- - - - -
0e506818 by Alex Biehl at 2016-05-26T12:43:09+02:00
Remove misplaced haddock comment

- - - - -
a07d28c0 by Ben Gamari at 2016-05-27T11:34:59+02:00
Merge pull request haskell/haddock#515 from alexbiehl/master

Remove misplaced haddock comment
- - - - -
9001d267 by Ben Gamari at 2016-05-27T11:35:46+02:00
Merge pull request haskell/haddock#513 from treeowl/newtype-since

Make parser state a newtype
- - - - -
74e1a018 by Sebastian Méric de Bellefon at 2016-05-28T17:28:15-04:00
Merge pull request haskell/haddock#504 from Helkafen/issue-280

Fix haskell/haddock#280. Parsing of module header
- - - - -
37557f4f by Alan Zimmerman at 2016-05-29T23:36:50+02:00
Matching changes for haskell/haddock#12105

- - - - -
7d09e5d6 by Sebastian Meric de Bellefon at 2016-06-03T18:07:48-04:00
Version bumps (2.17.3, 1.4.2)

- - - - -
85b4bc15 by Sebastian Méric de Bellefon at 2016-06-06T18:35:13-04:00
Merge pull request haskell/haddock#521 from Helkafen/master

Version bumps (2.17.3, 1.4.2)
- - - - -
e95f0dee by Sebastian Meric de Bellefon at 2016-06-06T19:11:35-04:00
publish haddock-test library

- - - - -
4de40586 by Sebastian Méric de Bellefon at 2016-06-06T20:26:30-04:00
Merge pull request haskell/haddock#512 from phadej/oleg-fixes

Fixes for haskell/haddock#508 and haskell/haddock#510
- - - - -
ddfd0789 by Dominic Steinitz at 2016-06-09T09:27:28+01:00
Documentation for LaTeX markup.

- - - - -
697a503a by Dominic Steinitz at 2016-06-09T09:33:59+01:00
Fix spelling mistake.

- - - - -
246f6fff by Dominic Steinitz at 2016-06-09T09:37:15+01:00
Camel case MathJax.

- - - - -
4684bd23 by Dominic Steinitz at 2016-06-09T09:44:53+01:00
Fix math typo and add link.

- - - - -
f20c037c by Simon Peyton Jones at 2016-06-13T18:26:03+01:00
Follow changes to LHsSigWcType

- - - - -
0c58996d by Simon Peyton Jones at 2016-06-15T12:56:01+01:00
Follow GHC re-adding FunTy

- - - - -
401b5ca7 by Sebastian Méric de Bellefon at 2016-06-15T12:16:47-04:00
Merge pull request haskell/haddock#525 from idontgetoutmuch/master

Documentation for LaTeX markup.
- - - - -
92d263b7 by Sebastian Méric de Bellefon at 2016-06-15T12:17:29-04:00
Merge pull request haskell/haddock#522 from Helkafen/master

publish haddock-test library
- - - - -
0953a2ca by Sebastian Meric de Bellefon at 2016-06-16T00:46:46-04:00
Copyright holders shown on several lines. Fix haskell/haddock#279

- - - - -
65453e14 by Ben Gamari at 2016-06-16T11:16:32+02:00
ocean: Ensure that synopsis fully covers other content

Previously MathJax content was being rendered on top of the synopsis due
to ambiguous z-ordering. Here we explicitly give the synopsis block a
higher z-index to ensure it is rendered on top. Fixes haskell/haddock#531.

- - - - -
68e411a1 by Sebastian Méric de Bellefon at 2016-06-16T23:34:39-04:00
Merge pull request haskell/haddock#534 from bgamari/T531

ocean: Ensure that synopsis fully covers other content
- - - - -
fad6491b by Sebastian Méric de Bellefon at 2016-06-18T23:57:20-04:00
Merge pull request haskell/haddock#533 from Helkafen/master

Copyright holders shown on several lines. Fix haskell/haddock#279
- - - - -
6108e21b by Sebastian Meric de Bellefon at 2016-06-22T23:08:28-04:00
do not create empty src directory

Fix haskell/haddock#536.

- - - - -
1ef23823 by Sebastian Méric de Bellefon at 2016-06-24T00:04:48-04:00
Merge pull request haskell/haddock#537 from Helkafen/master

do not create empty src directory
- - - - -
966baa96 by Omari Norman at 2016-06-29T21:59:34-04:00
Add $ as a special character

If this character is not escaped, documentation built with Haddock
2.17.2 will fail.  This was not an issue with 2.16 series, which
causes builds to fail and there is nothing in the docs or error
message giving a clue about why builds that used to succeed now
don't.

- - - - -
324adb60 by Ben Gamari at 2016-07-01T12:18:51+02:00
GhcUtils: Changes for multi-pattern signatures

- - - - -
d7571675 by Ömer Sinan Ağacan at 2016-07-21T13:30:47+02:00
Add support for unboxed sums

- - - - -
29d0907b by Simon Marlow at 2016-07-22T13:55:48+01:00
Disable NFData instances for GHC types when GHC >= 8.2

- - - - -
702d95f3 by Simon Marlow at 2016-08-02T15:57:30+02:00
Disable NFData instances for GHC types when GHC >= 8.0.2

(cherry picked from commit a3309e797c42dae9bccdeb17ce52fcababbaff8a)

- - - - -
f4fa79c3 by Ben Gamari at 2016-08-07T13:51:18+02:00
ghc.mk: Don't attempt to install html/frames.html

The frames business has been removed.

- - - - -
9cd63daf by Ben Gamari at 2016-08-07T13:51:40+02:00
Haddock.Types: More precise version guard

This allows haddock to be built with GHC 8.0.2 pre-releases.

- - - - -
f3d7e03f by Mateusz Kowalczyk at 2016-08-29T20:47:45+01:00
Merge pull request haskell/haddock#538 from massysett/master

Add $ as a special character
- - - - -
16dbf7fd by Bartosz Nitka at 2016-09-20T19:44:04+01:00
Fix rendering of class methods for Eq and Ord

See haskell/haddock#549 and GHC issue haskell/haddock#12519

- - - - -
7c31c1ff by Bartosz Nitka at 2016-09-27T17:32:22-04:00
Fix rendering of class methods for Eq and Ord

See haskell/haddock#549 and GHC issue haskell/haddock#12519

(cherry picked from commit 073d899a8f94ddec698f617a38d3420160a7fd0b)

- - - - -
33a90dce by Ryan Scott at 2016-09-30T20:53:41-04:00
Haddock changes for T10598

See https://ghc.haskell.org/trac/ghc/ticket/10598

- - - - -
1f32f7cb by Ben Gamari at 2016-10-13T20:01:26-04:00
Update for refactoring of NameCache

- - - - -
1678ff2e by Ben Gamari at 2016-11-15T17:42:48-05:00
Bump upper bound on base

- - - - -
9262a7c5 by Alan Zimmerman at 2016-12-07T21:14:28+02:00
Match changes in GHC wip/T3384 branch

- - - - -
ac0eaf1a by Ben Gamari at 2016-12-09T09:48:41-05:00
haddock-api: Don't use stdcall calling convention on 64-bit Windows

See GHC haskell/haddock#12890.

- - - - -
04afe4f7 by Alan Zimmerman at 2016-12-12T20:07:21+02:00
Matching changes for GHC wip/T12942

- - - - -
e1d1701d by Ben Gamari at 2016-12-13T16:50:41-05:00
Bump base upper bound

- - - - -
3d3eacd1 by Alan Zimmerman at 2017-01-10T16:59:38+02:00
HsIParamTy now has a Located name

- - - - -
7dbceefd by Kyrill Briantsev at 2017-01-12T13:23:50+03:00
Prevent GHC API from doing optimization passes.

- - - - -
d48d1e33 by Richard Eisenberg at 2017-01-19T08:41:41-05:00
Upstream changes re levity polymorphism

- - - - -
40c25ed6 by Alan Zimmerman at 2017-01-26T15:16:18+02:00
Changes to match haskell/haddock#13163 in GHC

- - - - -
504f586d by Ben Gamari at 2017-02-02T17:19:37-05:00
Kill remaining static flags

- - - - -
49147ea0 by Justus Adam at 2017-03-02T15:33:34+01:00
Adding MDoc to exports of Documentation.Haddock

- - - - -
1cfba9b4 by Justus Adam at 2017-03-09T11:41:44+01:00
Also exposing toInstalledIface

- - - - -
53f0c0dd by Ben Gamari at 2017-03-09T13:10:08-05:00
Bump for GHC 8.3

- - - - -
c7902d2e by Ben Gamari at 2017-03-09T23:46:02-05:00
Bump for GHC 8.2

- - - - -
4f3a74f8 by Ben Gamari at 2017-03-10T10:21:55-05:00
Merge branch 'ghc-head'

- - - - -
e273b72f by Richard Eisenberg at 2017-03-14T13:34:04-04:00
Update Haddock w.r.t. new HsImplicitBndrs

- - - - -
6ec3d436 by Richard Eisenberg at 2017-03-14T15:15:52-04:00
Update Haddock w.r.t. new HsImplicitBndrs

- - - - -
eee3cda1 by Ben Gamari at 2017-03-15T15:19:59-04:00
Adapt to EnumSet

- - - - -
017cf58e by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Correctly handle Backpack identity/semantic modules.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
736d6773 by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Add a field marking if interface is a signature or not.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
475f84a0 by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Render signature module tree separately from modules.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
13240b53 by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Documentation.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
cd16d529 by Edward Z. Yang at 2017-03-15T22:50:46-07:00
More docs.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
3bea97ae by Edward Z. Yang at 2017-03-15T22:50:46-07:00
TODO on moduleExports.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
b2b051ce by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Better Backpack support with signature merging.

When we merge signatures, we gain exports that don't
necessarily have a source-level declaration corresponding
to them.  This meant Haddock dropped them.

There are two big limitations:

* If there's no export list, we won't report inherited
  signatures.

* If the type has a subordinate, the current hiDecl
  implementation doesn't reconstitute them.

These are probably worth fixing eventually, but this gets
us to minimum viable functionality.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
0f082795 by Edward Z. Yang at 2017-03-15T22:50:46-07:00
Fix haddock-test to work with latest version of Cabal.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
20ef63c9 by Edward Z. Yang at 2017-03-22T13:48:12-07:00
Annotate signature docs with (signature)

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
45692dcb by Edward Z. Yang at 2017-03-22T14:11:25-07:00
Render help documentation link next to (signature) in title.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
4eae8caf by Ben Gamari at 2017-03-23T09:25:33-04:00
Merge commit '240bc38b94ed2d0af27333b23392d03eeb615e82' into HEAD

- - - - -
0bbe03f5 by Ben Gamari at 2017-03-23T09:27:28-04:00
haddock-api: Bump bound on GHC

- - - - -
65f3ac9d by Alex Biehl at 2017-03-23T17:36:11+01:00
Merge pull request haskell/haddock#581 from JustusAdam/master

Adding more exports to Documentation.Haddock
- - - - -
37d49a47 by Alex Biehl at 2017-03-23T17:39:14+01:00
Merge pull request haskell/haddock#568 from awson/ghc-head

Prevent GHC API from doing optimization passes.
- - - - -
1ed047e4 by Brian Huffman at 2017-03-23T17:45:58+01:00
Print any user-supplied kind signatures on type parameters.

This applies to type parameters on data, newtype, type, and class
declarations, and also to forall-bound type vars in type signatures.

- - - - -
1b78ca5c by Brian Huffman at 2017-03-23T17:45:58+01:00
Update test suite to expect kind annotations on type parameters.

- - - - -
a856b162 by Alex Biehl at 2017-03-23T17:49:32+01:00
Include travis build indication badge
- - - - -
8e2e2c56 by Ben Gamari at 2017-03-23T17:20:08-04:00
haddock-api: Bump bound on GHC

- - - - -
4d2d9995 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Correctly handle Backpack identity/semantic modules.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 26d6c150b31bc4580ab17cfd07b6e7f9afe10737)

- - - - -
a650e20f by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Add a field marking if interface is a signature or not.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 930cfbe58e2e87f5a4d431d89a3c204934e6e858)

- - - - -
caa282c2 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Render signature module tree separately from modules.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 2067a2d0afa9cef381d26fb7140b67c62f433fc0)

- - - - -
49684884 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Documentation.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 0671abfe7e8ceae2269467a30b77ed9d9656e2cc)

- - - - -
4dcfeb1a by Edward Z. Yang at 2017-03-23T17:20:08-04:00
More docs.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 3d77b373dd5807d5d956719dd7c849a11534fa6a)

- - - - -
74dd19d2 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
TODO on moduleExports.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 94610e9b446324f4231fa6ad4c6ac51e4eba8c0e)

- - - - -
a9b19a23 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Better Backpack support with signature merging.

When we merge signatures, we gain exports that don't
necessarily have a source-level declaration corresponding
to them.  This meant Haddock dropped them.

There are two big limitations:

* If there's no export list, we won't report inherited
  signatures.

* If the type has a subordinate, the current hiDecl
  implementation doesn't reconstitute them.

These are probably worth fixing eventually, but this gets
us to minimum viable functionality.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 6cc832dfb1de6088a4abcaae62b25a7e944d55c3)

- - - - -
d3631064 by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Fix haddock-test to work with latest version of Cabal.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit bf3c4d72a0fda38561376eac7eda216158783267)

- - - - -
ef2148fc by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Annotate signature docs with (signature)

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 07b88c5d4e79b87a319fbb08f8ea01dbb41063c1)

- - - - -
2f29518b by Edward Z. Yang at 2017-03-23T17:20:08-04:00
Render help documentation link next to (signature) in title.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit 4eb765ca4205c79539d60b7afa9b7e261a4a49fe)

- - - - -
37de047d by Phil Ruffwind at 2017-04-03T11:57:14+02:00
Update MathJax URL

MathJax is shutting down their CDN:
https://www.mathjax.org/cdn-shutting-down/

They recommend migrating to cdnjs.

- - - - -
e9d24ba8 by David C. Turner at 2017-04-03T14:58:01+02:00
Add highlight for :target to ocean.css

- - - - -
4819a202 by Alex Biehl at 2017-04-11T19:36:48+02:00
Allow base-4.10 for haddock-test

- - - - -
44cec69c by Alex Biehl at 2017-04-11T19:39:22+02:00
cabal.project for haddock-api, haddock-library and haddock-test

- - - - -
935d0f6a by Alex Biehl at 2017-04-11T19:46:29+02:00
Move dist scripts to scripts/

- - - - -
128e150c by Alex Biehl at 2017-04-11T20:34:46+02:00
Add haddock to cabal.project

- - - - -
cc8e08ea by Alex Biehl at 2017-04-11T20:35:08+02:00
Read files for hyperlinker eagerly

This also exposes Documentation.Haddock.Utf8

- - - - -
152dda78 by Alex Biehl at 2017-04-11T20:37:06+02:00
Explicit import list ofr Control.DeepSeq in Haddock.Interface.Create

- - - - -
501b33c4 by Kyrill Briantsev at 2017-04-11T21:01:42+02:00
Prevent GHC API from doing optimization passes.

- - - - -
c9f3f5ff by Alexander Biehl at 2017-04-12T16:36:53+02:00
Add @alexbiehl as maintaner

- - - - -
76f214cc by Alex Biehl at 2017-04-13T07:27:18+02:00
Disable doctest with ghc-8.3

Currently doctest doesn't support ghc-head
- - - - -
46b4f5fc by Edward Z. Yang at 2017-04-22T20:38:26-07:00
Render (signature) only if it actually is a signature!

I forgot a conditional, oops!

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
f0555235 by Alex Biehl at 2017-04-25T10:08:48+02:00
Travis: Use ghc-8.2.1 on master

- - - - -
966ea348 by Alex Biehl at 2017-04-25T10:32:01+02:00
Travis: Verbose cabal output

cf. https://travis-ci.org/haskell/haddock/jobs/225512194#L377
- - - - -
36972bcd by Alex Biehl at 2017-04-25T10:40:43+02:00
Use travis_retry for cabal invocations
- - - - -
b3a09d2c by Alex Biehl at 2017-04-25T17:02:20+02:00
Use new MathJax URL in html-test

18ed871afb82560d5433b2f53e31b4db9353a74e switched to a new MathJax URL
but didn't update the tests.

- - - - -
ae331e5f by Alexander Biehl at 2017-04-25T17:02:20+02:00
Expand signatures for class declarations

- - - - -
e573c65a by Alexander Biehl at 2017-04-25T17:02:20+02:00
Hoogle: Correctly print classes with associated data types

- - - - -
3fc6be9b by Edward Z. Yang at 2017-04-25T17:02:20+02:00
Render (signature) only if it actually is a signature!

I forgot a conditional, oops!

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>
(cherry picked from commit a0c4790e15a2d3fab8d830eee8fcd639fe6d39c9)

- - - - -
6725c060 by Herbert Valerio Riedel at 2017-04-25T17:02:20+02:00
`html-test --accept` deltas to reference samples

- - - - -
7d444d61 by Alex Biehl at 2017-04-26T07:13:50+02:00
Remove anything related to obsolete frames mode

- - - - -
b888972c by Alex Biehl at 2017-04-26T07:49:10+02:00
Cherry-picked remaining commits from haddock-2.17.4-release (#603)

* Release haddock/haddock-api 2.17.4 and haddock-library 1.4.3

* Set version bounds for haddock-library

NB: This allows GHC 8.2.1's base

* Set version bounds for haddock & haddock-api

The version bounds support GHC 8.2

* Merge (temporary) v2.17.3 branch into v2.17

This allows us to delete the v2.17.3 branch

* Fixup changelog

* Pin down haddock-api to a single version

as otherwise `haddock`'s package version has no proper meaning

* fix source-repo spec for haddock-api

- - - - -
4161099b by Alex Biehl at 2017-04-26T11:11:20+02:00
Update changelog to reflect news in HEAD

- - - - -
eed72cb8 by Alex Biehl at 2017-04-26T11:11:20+02:00
Markdownify changelog

- - - - -
5815cea1 by Alex Biehl at 2017-04-26T11:32:33+02:00
Bump to 2.18.0 (#605)


- - - - -
a551d558 by Alex Biehl at 2017-04-29T22:00:25+02:00
Update attoparsec-0.12.1.1 to attoparsec-0.13.1.0

- - - - -
ea164a8d by Sergey Vinokurov at 2017-04-29T22:42:36+02:00
Improve error message

- - - - -
2e10122f by Alex Biehl at 2017-04-30T10:07:46+02:00
Correctly remember collapsed sections (#608)

Now the "collapsed" cookie stores which sections have changed state instead of which are collapsed.
- - - - -
f9b24d99 by Alex Biehl at 2017-05-01T17:40:36+02:00
Lazily decode docMap and argMap (#610)

These are only used in case of a doc reexport so most of the time
decoding these is wasted work.
- - - - -
2372af62 by Alex Biehl at 2017-05-01T21:59:23+02:00
Fix Binary instance for InstalledInterface (#611)

(#610) introduced lazy decoding for docs from InstalledInterface but
forgot to remove the original calls to get and put_
- - - - -
6c633c13 by Nathan Collins at 2017-05-11T11:47:55+02:00
Improve documenation of Haddock markup (#614)

* Improve documentation of Haddock markup.

- document that Haddock supports inferring types top-level functions
  with without type signatures, but also explain why using this
  feature is discouraged. Looks like this feature has been around
  since version 2.0.0.0 in 2008!

- rework the "Module description" section:

  - move the general discussion of field formatting to the section
    intro and add examples illustrating the prose for multiline
    fields.

  - mention that newlines are preserved in some multiline fields, but
    not in others (I also noticed that commas in the `Copyright` field
    are not preserved; I'll look into this bug later).

  - add a subsection for the module description fields documentation,
    and put the field keywords in code formatting (double back ticks)
    instead of double quotes, to be consistent with the typesetting of
    keywords in other parts of the documentation.

  - mention that "Named chunks" are not supported in the long-form
    "Module description" documentation.

- fix formatting of keywords in the "Module attributes"
  section. Perhaps these errors were left over from an automatic
  translation to ReST from some other format as part of the transition
  to using Sphinx for Haddock documentation? Also, add a missing
  reference here; it just said "See ?"!

- update footnote about special treatment for re-exporting partially
  imported modules not being implemented. In my tests it's not
  implemented at all -- I tried re-exporting both `import B
  hiding (f)` and `import B (a, b)` style partial imports, and in both
  cases got the same result as with full imports `import B`: I only
  get a module reference.

* Rework the `Controlling the documentation structure` section.

My main goal was to better explain how to use Haddock without an
export list, since that's my most common use case, but I hope I
improved the section overall:

- remove the incomplete `Omitting the export list` section and fold it
  into the other sections. In particular, summarize the differences
  between using and not using an export list -- i.e. control over what
  and in what order is documented -- in the section lead.

- add "realistic" examples that use the structure markup, both with
  and without an export list. I wanted a realistic example here to
  capture how it can be useful to explain the relationship between a
  group of functions in a section, in addition to documenting their
  individual APIs.

- make it clear that you can associate documentation chunks with
  documentation sections when you aren't using an export list, and
  that doing it in the most obvious way -- i.e. with `-- |`, as you
  can in the export list -- doesn't work without an export list. It
  took me a while to figure this out the first time, since the docs
  didn't explain it at all before.

- add a "no export list" example to the section header section.

- add more cross references.

* Add examples of gotchas for markup in `@...@`.

I'm not sure this will help anyone, since I think most people first
learn about `@...@` by reading other people's Haddocks, but I've
documented the mistakes which I've made and then gotten confused by.

* Use consistent Capitalization of Titles.

Some titles were in usual title caps, and others only had the first
word capitalized. I chose making them all use title caps because that
seems to make the cross references look better.

- - - - -
d4734f45 by Ben Gamari at 2017-05-12T20:36:08+02:00
Haddock: Fix broken lazy IO in prologue reading (#615)

We previously used withFile in conjunction with hGetContents. The list returned
by the latter wasn't completely forced by the time we left the withFile block,
meaning that we would try to read from a closed handle.
- - - - -
93883f37 by Alex Biehl at 2017-05-12T21:02:33+02:00
Haddock: Fix broken lazy IO in prologue reading (#615)

We previously used withFile in conjunction with hGetContents. The list returned
by the latter wasn't completely forced by the time we left the withFile block,
meaning that we would try to read from a closed handle.
- - - - -
5b8f179c by Alex Biehl at 2017-05-13T12:48:10+02:00
Consequently use inClass and notInClass in haddock-library (#617)

These allow attoparsec to do some clever lookup optimization
- - - - -
77984b82 by Doug Wilson at 2017-05-27T17:37:38+02:00
Don't enable compilation for template haskell (#624)

This is no longer necessary after
ghc commit 53c78be0aab76a3107c4dacbb1d177afacdd37fa
- - - - -
5a3de2b4 by Doug Wilson at 2017-05-27T19:54:53+02:00
Improve Syb code (#621)

Specialize.hs and Ast.hs are modified to have their Syb code not recurse into
Name or Id in HsSyn types.

Specialize.hs is refactored to have fewer calls to Syb functions.

Syb.hs has some foldl calls replaced with foldl' calls.

There is still a lot of performance on the floor of Ast.hs. The RenamedSource
is traversed many times, and lookupBySpan is very inefficient. everywhereBut and
lookupBySpan dominate the runtime whenever --hyperlinked-source is passed.
- - - - -
3d35a949 by Alex Biehl at 2017-05-30T19:01:37+02:00
Clear fixme comment (#625)


- - - - -
2a44bd0c by Alex Biehl at 2017-05-30T19:02:12+02:00
Make haddock-library and haddock-api warning free (#626)


- - - - -
bd1a0e42 by Alex Biehl at 2017-06-01T10:40:33+02:00
Include `driver-test/*.hs` sdist (#630)

This lead to haskell/haddock#629.
- - - - -
184a3ab6 by Doug Wilson at 2017-06-03T12:02:08+02:00
Disable pattern match warnings (#628)

This disables the pattern match checker which can be very expensive in some
cases.

The disabled warnings include:
* Opt_WarnIncompletePatterns
* Opt_WarnIncompleteUniPatterns
* Opt_WarnIncompletePatternsRecUpd
* Opt_WarnOverlappingPatterns
- - - - -
0cf68004 by Alex Biehl at 2017-06-03T20:37:28+02:00
Allow user defined signatures for pattern synonyms (#631)


- - - - -
7f51a58a by Alex Biehl at 2017-06-04T11:56:38+02:00
Use NameSet for isExported check (#632)


- - - - -
d8f044a9 by Alan Zimmerman at 2017-06-05T22:26:55+02:00
Match new AST as per GHC wip/new-tree-one-param

See https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow

- - - - -
da1254e3 by Alan Zimmerman at 2017-06-05T22:26:55+02:00
Rename extension index tags

- - - - -
538c7514 by Christiaan Baaij at 2017-06-09T08:26:43+02:00
Haddock support for bundled pattern synonyms (#627)

* Haddock support for bundled pattern synonyms

* Add fixities to bundled pattern synonyms

* Add bundled pattern synonyms to the synopsis

* Store bundled pattern fixities in expItemFixities

* Add test for bundled pattern synonyms

* Stop threading fixities

* Include bundled pattern synonyms for re-exported data types

Sadly, fixity information isn't found for re-exported data types

* Support for pattern synonyms

* Modify tests after haskell/haddock#631

* Test some reexport variations

* Also lookup bundled pattern synonyms from `InstalledInterface`s

* Check isExported for bundled pattern synonyms

* Pattern synonym is exported check

* Always look for pattern synonyms in the current module

Another overlooked cornercase

* Account for types named twice in export lists

Also introduce a fast function for nubbing on a `Name` and use it
throughout the code base.

* correct fixities for reexported pattern synonyms

* Fuse concatMap and map

* Remove obsolete import

* Add pattern synonyms to visible exports

* Fix test

* Remove corner case

- - - - -
a050bffd by Doug Wilson at 2017-06-21T09:27:33+02:00
Use new function getNameToInstancesIndex instead of tcRnGetInfo (#636)

There is some performance improvement.

GHC compiler:
| version | bytes allocated | cpu_seconds
---------------------------------
| before  | 56057108648     | 41.0
| after   | 51592019560     | 35.1

base:
| version | bytes allocated | cpu_seconds
---------------------------------
| before  | 25174011784     | 14.6
| after   | 23712637272     | 13.1

Cabal:

| version | bytes allocated | cpu_seconds
---------------------------------
| before  | 18754966920     | 12.6
| after   | 18198208864     | 11.6
- - - - -
5d06b871 by Doug Wilson at 2017-06-22T20:23:29+02:00
Use new function getNameToInstancesIndex instead of tcRnGetInfo (#639)

* Use new function getNameToInstancesIndex instead of tcRnGetInfo

There is some significant performance improvement in the ghc testsuite.

haddock.base: -23.3%
haddock.Cabal: -16.7%
haddock.compiler: -19.8%

* Remove unused imports

- - - - -
b11bb73a by Alex Biehl at 2017-06-23T14:44:41+02:00
Lookup fixities for reexports without subordinates (#642)

So we agree that reexported declarations which do not have subordinates (for example top-level functions) shouldn't have gotten fixities reexported according to the current logic. I wondered why for example Prelude.($) which is obviously reexported from GHC.Base has fixities attached (c.f. http://hackage.haskell.org/package/base-4.9.1.0/docs/Prelude.html#v:-36-).

The reason is this: In mkMaps we lookup all the subordinates of top-level declarations, of course top-level functions don't have subordinates so for them the resulting list is empty. In haskell/haddock#644 I established the invariant that there won't be any empty lists in the subordinate map. Without the patch from haskell/haddock#642 top-level functions now started to fail reexporting their fixities.
- - - - -
d2a6dad6 by Alex Biehl at 2017-06-23T18:30:45+02:00
Don't include names with empty subordinates in maps (#644)

These are unecessary anyway and just blow up interface size
- - - - -
69c2aac4 by Alex Biehl at 2017-06-29T19:54:49+02:00
Make per-argument docs for class methods work again (#648)

* Make per-argument docs for class methods work again

* Test case

- - - - -
c9448d54 by Bartosz Nitka at 2017-07-02T12:12:01+02:00
Fix haddock: internal error: links: UnhelpfulSpan (#561)

* Fix haddock: internal error: links: UnhelpfulSpan

This fixes haskell/haddock#554 for me. I believe this is another fall out
of `wildcard-refactor`, like haskell/haddock#549.

* Comment to clarify why we take the methods name location

- - - - -
d4f29eb7 by Alex Biehl at 2017-07-03T19:43:04+02:00
Document record fields when DuplicateRecordFields is enabled (#649)


- - - - -
9d6e3423 by Yuji Yamamoto at 2017-07-03T22:37:58+02:00
Fix test failures on Windows (#564)

* Ignore .stack-work

* Fix for windows: use nul instead of /dev/null

* Fix for windows: canonicalize line separator

* Also normalize osx line endings

- - - - -
7d81e8b3 by Yuji Yamamoto at 2017-07-04T16:13:12+02:00
Avoid errors on non UTF-8 Windows (#566)

* Avoid errors on non UTF-8 Windows

Problem
====

haddock exits with errors like below:

`(1)`

```
haddock: internal error: <stderr>: hPutChar: invalid argument (invalid character)
```

`(2)`

```
haddock: internal error: Language\Haskell\HsColour\Anchors.hs: hGetContents: invalid argument (invalid byte sequence)
```

`(1)` is caused by printing [the "bullet" character](http://www.fileformat.info/info/unicode/char/2022/index.htm) onto stderr.
For example, this warning contains it:

```
Language\Haskell\HsColour\ANSI.hs:62:10: warning: [-Wmissing-methods]
    • No explicit implementation for
        ‘toEnum’
    • In the instance declaration for ‘Enum Highlight’
```

`(2)` is caused when the input file of `readFile` contains some Unicode characters.
In the case above, '⇒' is the cause.

Environment
----

OS: Windows 10
haddock: 2.17.3
GHC: 8.0.1

Solution
====

Add `hSetEncoding handle utf8` to avoid the errors.

Note
====

- I found the detailed causes by these changes for debugging:
    - https://github.com/haskell/haddock/commit/8f29edb6b02691c1cf4c479f6c6f3f922b35a55b
    - https://github.com/haskell/haddock/commit/1dd23bf2065a1e1f2c14d0f4abd847c906b4ecb4
- These errors happen even after executing `chcp 65001` on the console.
  According to the debug code, `hGetEncoding stderr` returns `CP932` regardless of the console encoding.

* Avoid 'internal error: <stderr>: hPutChar: invalid argument (invalid character)' non UTF-8 Windows

Better solution for 59411754a6db41d17820733c076e6a72bcdbd82b's (1)

- - - - -
eded67d2 by Alex Biehl at 2017-07-07T19:17:15+02:00
Remove redudant import warning (#651)


- - - - -
05114757 by Alex Biehl at 2017-07-08T00:33:12+02:00
Avoid missing home module warning (#652)

* Avoid missing home module warning

* Update haddock-library.cabal

- - - - -
e9cfc902 by Bryn Edwards at 2017-07-17T07:51:20+02:00
Fix haskell/haddock#249 (#655)


- - - - -
eb02792b by Herbert Valerio Riedel at 2017-07-20T09:09:15+02:00
Fix compilation of lib:haddock-library w/ GHC < 8

- - - - -
9200bfbc by Alex Biehl at 2017-07-20T09:20:38+02:00
Prepare 2.18.1 release (#657)


- - - - -
46ddd22c by Herbert Valerio Riedel at 2017-07-20T10:05:14+02:00
Tweak haddock-api.cabal for pending release

- - - - -
85e33d29 by Herbert Valerio Riedel at 2017-07-20T10:05:14+02:00
Avoid trivial use of LambdaCase

otherwise we can't test w/ e.g. GHC 7.4.2

- - - - -
3afb4bfe by Herbert Valerio Riedel at 2017-07-20T10:05:14+02:00
Refactor .cabal to use sub-lib for vendored lib

A practical benefit is that we can control the build-depends and also
avoid some recompilation between library and test-suite.

- - - - -
e56a552e by Herbert Valerio Riedel at 2017-07-20T10:17:48+02:00
haddock-api: add changelog pointing to haddock's changelog

This addresses
https://github.com/haskell/haddock/issues/638#issuecomment-309283297

- - - - -
2222ff0d by Herbert Valerio Riedel at 2017-07-20T10:19:56+02:00
Drop obsolete/misleading `stability: experimental`

This .cabal property has long been considered obsolete

- - - - -
9b882905 by Alex Biehl at 2017-07-20T11:25:54+02:00
Beef up haddock description (#658)

* Beef up haddock description

* Handle empty lines

- - - - -
bb60e95c by Herbert Valerio Riedel at 2017-07-20T12:08:53+02:00
Import @aisamanra's Haddock cheatsheet

from https://github.com/aisamanra/haddock-cheatsheet

- - - - -
0761e456 by Herbert Valerio Riedel at 2017-07-20T12:12:55+02:00
Add cheatsheet to haddock.cabal

- - - - -
2ece0f0f by Herbert Valerio Riedel at 2017-07-20T12:18:38+02:00
Mention new-build in README

- - - - -
947b7865 by Herbert Valerio Riedel at 2017-07-20T12:32:16+02:00
Update README

Also improves markup and removes/fixes redundant/obsolete parts

[skip ci]

- - - - -
785e09ad by Alex Biehl at 2017-07-27T07:28:57+02:00
Bump haddock to 2.18.2, haddock-library to 1.4.5

- - - - -
e3ff1ca3 by Alex Biehl at 2017-07-31T20:15:32+02:00
Move `DocMarkup` from haddock-api to haddock-library (#659)

* Move `DocMarkup` from haddock-api to haddock-library

* Move more markup related functions

* Markup module

* CHANGELOG

- - - - -
cda7c20c by Alex Biehl at 2017-07-31T20:35:49+02:00
Fixup haddock
- - - - -
583b6812 by Alex Biehl at 2017-07-31T21:20:45+02:00
Changelog for haddock-library

- - - - -
bac6a0eb by Alex Biehl at 2017-07-31T21:50:24+02:00
Prepare haddock-library-1.4.5 release

- - - - -
58ce6877 by Moritz Drexl at 2017-08-05T16:44:40+02:00
Fix renaming after instance signature specializing (#660)

* rework rename

* Add regression test for Bug 613

* update tests

* update changelog

- - - - -
b8137ec8 by Tim Baumann at 2017-08-06T11:33:38+02:00
Fix: Generate pattern signatures for constructors exported as patterns (#663)

* Fix pretty-printing of pattern signatures

Pattern synonyms can have up to two contexts, both having a
different semantic meaning: The first holds the constraints
required to perform the matching, the second contains the
constraints provided by a successful pattern match. When the
first context is empty but the second is not it is necessary
to render the first, empty context.

* Generate pattern synonym signatures for ctors exported as patterns

This fixes haskell/haddock#653.

* Simplify extractPatternSyn

It is not necessary to generate the simplest type signature since
it will be simplified when pretty-printed.

* Add changelog entries for PR haskell/haddock#663

* Fix extractPatternSyn error message

- - - - -
d037086b by Alex Biehl at 2017-08-06T12:43:25+02:00
Bump haddock-library
- - - - -
99d7e792 by Alex Biehl at 2017-08-06T12:44:07+02:00
Bump haddock-library in haddock-api
- - - - -
94802a5b by Alex Biehl at 2017-08-06T13:18:02+02:00
Provide --show-interface option to dump interfaces (#645)

* WIP: Provide --show-interface option to dump interfaces

Like ghcs own --show-iface this flag dumps a binary interface file to
stdout in a human (and machine) readable fashion. Currently it uses
json as output format.

* Fill all the jsonNull stubs

* Rework Bifunctor instance of DocH, update changelog and documentation

* replace changelog, bring DocMarkupH doc back

* Update CHANGES.md

* Update CHANGES.md

* Move Control.Arrow up

It would result in unused import if the Bifunctor instance is not generated.

- - - - -
c662e476 by Ryan Scott at 2017-08-14T21:00:21-04:00
Adapt to haskell/haddock#14060

- - - - -
b891eb73 by Alex Biehl at 2017-08-16T08:24:48+02:00
Bifoldable and Bitraversable for DocH and MetaDoc

- - - - -
021bb56c by Alex Biehl at 2017-08-16T09:06:40+02:00
Refactoring: Make doc renaming monadic

This allows us to later throw warnings if can't find an identifier

- - - - -
39fbf022 by Alex Biehl at 2017-08-19T20:35:27+02:00
Hyperlinker: Avoid linear lookup in enrichToken (#669)

* Make Span strict in Position

* Hyperlinker: Use a proper map to enrich tokens

- - - - -
e13baedd by Alex Biehl at 2017-08-21T20:05:42+02:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
27dd6e87 by Alex Biehl at 2017-08-21T22:06:35+02:00
Drop Avails from export list

- - - - -
86b247e2 by Alex Biehl at 2017-08-22T08:44:22+02:00
Bump ghc version for haddock-api tests

- - - - -
d4607ca0 by Alex Biehl at 2017-08-22T08:45:17+02:00
Revert "Drop Avails from export list"

This reverts commit a850ba86d88a4fb9c0bd175453a2580e544e3def.

- - - - -
c9c54c30 by Alex Biehl at 2017-08-22T09:26:01+02:00
IntefaceFile version

- - - - -
a85b7c02 by Ben Gamari at 2017-08-22T09:29:52-04:00
haddock: Add Documentation.Haddock.Markup to other-modules

- - - - -
34e976f5 by Ben Gamari at 2017-08-22T17:40:06+02:00
haddock: Add Documentation.Haddock.Markup to other-modules

- - - - -
577abf06 by Ryan Scott at 2017-08-23T14:47:29-04:00
Update for haskell/haddock#14131

- - - - -
da68fc55 by Florian Eggenhofer at 2017-08-27T18:21:56+02:00
Generate an index for package content search (#662)

Generate an index for package content search
- - - - -
39e62302 by Alex Biehl at 2017-08-27T18:50:16+02:00
Content search for haddock html doc

- - - - -
91fd6fb2 by Alex Biehl at 2017-08-28T18:39:58+02:00
Fix tests for content search

- - - - -
b4a3798a by Alex Biehl at 2017-08-28T18:44:08+02:00
Add search button to #page-menu

- - - - -
25a7ca65 by Alex Biehl at 2017-08-28T18:47:43+02:00
Load javascript below the fold

- - - - -
8d323c1a by Alex Biehl at 2017-08-28T18:49:22+02:00
Accept tests

- - - - -
c5dac557 by Alex Biehl at 2017-08-28T19:14:55+02:00
Content search css

- - - - -
89a5af57 by Paolo Veronelli at 2017-08-29T07:42:13+02:00
Removed `nowrap` for interface method sigs (#674)

with nowrap the interfaces method sigs would expand at libitum
- - - - -
a505f6f7 by Alex Biehl at 2017-08-29T08:05:33+02:00
Include subordinates in content index

- - - - -
4bb698c4 by Alexander Biehl at 2017-08-29T11:40:19+02:00
QuickNav: Make docbase configurable

- - - - -
c783bf44 by Alexander Biehl at 2017-08-29T11:48:36+02:00
QuickNav: Also use baseUrl for doc-index.json request

- - - - -
47017510 by Alex Biehl at 2017-08-29T17:56:47+02:00
Fix test fallout (again)

- - - - -
924fc318 by Alex Biehl at 2017-08-30T09:24:56+02:00
Write meta.json when generating html output (#676)


- - - - -
717dea52 by Alex Biehl at 2017-09-01T09:20:34+02:00
Use relative URL when no docBaseUrl given
- - - - -
e5d85f3b by Alex Biehl at 2017-09-01T09:35:19+02:00
Add missing js files to data-files (#677)


- - - - -
95b9231a by Alex Biehl at 2017-09-01T11:01:36+02:00
Rename "Search" tab to "Quick Jump"
- - - - -
da0ead0b by Alex Biehl at 2017-09-01T13:03:49+02:00
Make trigger link configurable (#678)

QuickNav: Configurable show/hide trigger
- - - - -
de7da594 by Ben Gamari at 2017-09-05T06:49:55-04:00
Account for "Remember the AvailInfo for each IE"

As of GHC commit f609374a55bdcf3b79f3a299104767aae2ffbf21 GHC retains the
AvailInfo associated with each IE. @alexbiehl has a patch making proper use of
this change, but this is just to keep things building.

- - - - -
b05cd3b3 by Ben Gamari at 2017-09-14T07:55:07-04:00
Bump upper bound on base

- - - - -
79db899e by Herbert Valerio Riedel at 2017-09-21T23:27:52+02:00
Make compatible with Prelude.<> export in GHC 8.4/base-4.11

- - - - -
3405dd52 by Tim Baumann at 2017-09-23T22:02:01+02:00
Add compile step that bundles and compresses JS files (#684)

* Add compile step that bundles and compresses JS files

Also, manage dependencies on third-party JS libraries using NPM.

* Compile JS from TypeScript

* Enable 'noImplicitAny' in TypeScript

* QuickJump: use JSX syntax

* Generate source maps from TypeScript for easier debugging

* TypeScript: more accurate type

* Separate quick jump css file from ocean theme

- - - - -
df0b5742 by Alex Biehl at 2017-09-29T21:15:40+02:00
Bump base for haddock-library and haddock-test

- - - - -
62b12ea0 by Merijn Verstraaten at 2017-10-04T16:03:13+02:00
Inhibit output of coverage information for hidden modules. (#687)

* Inhibit output of coverage information for hidden modules.

* Add changelog entry.

- - - - -
8daf8bc1 by Alexander Biehl at 2017-10-05T11:27:05+02:00
Don't use subMap in attachInstances

- - - - -
ad75114e by Alexander Biehl at 2017-10-05T11:27:58+02:00
Revert "Don't use subMap in attachInstances"

This reverts commit 3adf5bcb1a6c5326ab33dc77b4aa229a91d91ce9.

- - - - -
7d4aa02f by Alex Biehl at 2017-10-08T15:32:28+02:00
Precise Haddock: Use Avails for export resolution (#688)

* Use Avails for export resolution

* Support reexported modules

* Factor out availExportItem

* Use avails for fullModuleExports

* Don't use subMap in attachInstances

* lookupDocs without subMap

* Completely remove subMap

* Only calculate unqualified modules when explicit export list is given

* Refactor

* Refine comment

* return

* Fix

* Refactoring

* Split avail if declaration is not exported itself

* Move avail splitting

- - - - -
b9b4faa8 by Alex Biehl at 2017-10-08T19:38:21+02:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
43325295 by Alex Biehl at 2017-10-08T20:18:46+02:00
Fix merge fallout

- - - - -
c6423cc0 by Alex Biehl at 2017-10-08T20:36:12+02:00
Copy QuickJump files over

- - - - -
1db587c3 by Tim Baumann at 2017-10-09T18:33:09+02:00
Use <details> element for collapsibles (#690)

* Remove unnecessary call to 'collapseSection'

The call is unnecessary since there is no corresponding toggle for hiding the
section of orphan instances.

* Use <details> for collapsibles

This makes them work even when JS is disabled. Closes haskell/haddock#560.

- - - - -
1b54c64b by Tim Baumann at 2017-10-10T09:50:59+02:00
Quick Jump: Show error when loading 'doc-index.json' failed (#691)


- - - - -
910f716d by Veronika Romashkina at 2017-10-24T07:36:20+02:00
Fix tiny typo in docs (#693)


- - - - -
b21de7e5 by Ryan Scott at 2017-10-24T13:07:15+02:00
Overhaul Haddock's rendering of kind signatures (#681)

* Overhaul Haddock's rendering of kind signatures

* Strip off kind signatures when specializing

As an added bonus, this lets us remove an ugly hack specifically for `(->)`.
Yay!

* Update due to 0390e4a0f61e37bd1dcc24a36d499e92f2561b67

* @alexbiehl's suggestions

* Import injectiveVarsOfBinder from GHC

- - - - -
6704405c by Ryan Scott at 2017-10-28T07:10:27+02:00
Fix Haddock rendering of kind-indexed data family instances (#694)


- - - - -
470f6b9c by Alex Biehl at 2017-10-30T08:45:51+01:00
Add QuickJump version to meta.json (#696)


- - - - -
b89eccdf by Alex Biehl at 2017-10-30T10:15:49+01:00
Put Quickjump behind --quickjump flag (#697)


- - - - -
3095fb58 by Alex Biehl at 2017-10-30T19:09:06+01:00
Add build command to package.json

- - - - -
f223fda9 by Alex Biehl at 2017-10-30T19:10:39+01:00
Decrease threshold for fuzzy matching

- - - - -
80245dda by Edward Z. Yang at 2017-10-31T20:35:05+01:00
Supported reexported-modules via --reexport flag.

Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

- - - - -
7e389742 by Alex Biehl at 2017-10-31T20:37:56+01:00
Correct missing title in changelog

- - - - -
1a2a1c03 by Alex Biehl at 2017-10-31T20:59:07+01:00
Copy quickjump.css for nicer error messages

- - - - -
db234bb9 by Alex Biehl at 2017-10-31T21:31:18+01:00
Reexported modules: Report warnings if argument cannot be parsed or

... module cannot be found

- - - - -
eea8a205 by Carlo Hamalainen at 2017-10-31T21:43:14+01:00
More general type for nameCacheFromGhc. (#539)


- - - - -
580eb42a by Alex Biehl at 2017-10-31T21:46:52+01:00
Remote tab

- - - - -
0e599498 by Alex Biehl at 2017-10-31T21:48:55+01:00
Merge remote-tracking branch 'origin/master' into ghc-head

- - - - -
7b8539bb by Alex Biehl at 2017-10-31T22:28:34+01:00
fullModuleContents traverses exports in declaration order

- - - - -
0c91fbf2 by Alex Biehl at 2017-10-31T22:32:31+01:00
Remove excessive use of list comprehensions

- - - - -
f7356e02 by Alex Biehl at 2017-11-01T19:11:03+01:00
Make better use of AvailInfo

- - - - -
f3e512d5 by Alex Biehl at 2017-11-02T12:16:22+01:00
Always return documentation for exported subordinates

... event if they have no documentation (e.g. noDocForDecl)

By using the information in the AvailInfo we don't need additional
export checks.

- - - - -
7cf58898 by Alan Zimmerman at 2017-11-07T08:28:03+02:00
Match changes for Trees that Grow in GHC

- - - - -
e5105a41 by Alan Zimmerman at 2017-11-08T17:21:58+02:00
Match Trees That Grow

- - - - -
55178266 by Alan Zimmerman at 2017-11-11T22:20:31+02:00
Match Trees that Grow in GHC for HsExpr

- - - - -
2082ab02 by Ryan Scott at 2017-11-14T15:27:03+01:00
Actually render infix type operators as infix (#703)

* Actually render infix type operators as infix

* Account for things like `(f :*: g) p`, too

- - - - -
c52ab7d0 by Alan Zimmerman at 2017-11-14T23:14:26+02:00
Clean up use of PlaceHolder, to match TTG

- - - - -
81cc9851 by Moritz Angermann at 2017-11-20T07:52:49+01:00
Declare use of `Paths_haddock` module in other-modules (#705)

This was detected by `-Wmissing-home-modules`
- - - - -
f9d27598 by Moritz Angermann at 2017-11-20T12:47:34+01:00
Drop Paths_haddock from ghc.mk (#707)

With haskell/haddock#705 and haskell/haddock#706, the custom addition should not be necessary any more.
# Conflicts:
#	ghc.mk
- - - - -
f34818dc by Moritz Angermann at 2017-11-20T12:47:59+01:00
Add autogen-modules (#706)

> Packages using 'cabal-version: >= 1.25' and the autogenerated module Paths_* must include it also on the 'autogen-modules' field besides 'exposed-modules' and 'other-modules'. This specifies that the module does not come with the package and is generated on setup. Modules built with a custom Setup.hs script also go here to ensure that commands like sdist don't fail.
# Conflicts:
#	haddock.cabal
- - - - -
bb43a0aa by Ben Gamari at 2017-11-21T15:50:12-05:00
Revert "Clean up use of PlaceHolder, to match TTG"

This reverts commit 134a7bb054ea730b13c8629a76232d73e3ace049.

- - - - -
af9ebb2b by Ben Gamari at 2017-11-21T15:50:14-05:00
Revert "Match Trees that Grow in GHC for HsExpr"

This reverts commit 9f054dc365379c66668de6719840918190ae6e44.

- - - - -
5d35c3af by Ben Gamari at 2017-11-21T15:50:15-05:00
Revert "Match Trees That Grow"

This reverts commit 73a26af844ac50b8bec39de11d64452a6286b00c.

- - - - -
99a8e43b by Ben Gamari at 2017-11-21T16:36:06-05:00
Revert "Match changes for Trees that Grow in GHC"

This reverts commit 01eeeb048acd2dd05ff6471ae148a97cf0720547.

- - - - -
c4d650c2 by Ben Gamari at 2017-12-04T15:06:07-05:00
Bump GHC version

- - - - -
027b2274 by Ben Gamari at 2017-12-04T17:06:31-05:00
Bump GHC bound to 8.4.*

- - - - -
58eaf755 by Alex Biehl at 2017-12-06T15:44:24+01:00
Update changelog
- - - - -
d68f5584 by Simon Peyton Jones at 2017-12-07T14:39:56+00:00
Track changes to follow Trac haskell/haddock#14529

This tracks the refactoring of HsDecl.ConDecl.

- - - - -
dc519d6b by Alec Theriault at 2018-01-06T08:20:43-08:00
Pass to GHC visible modules for instance filtering

The GHC-side `getNameToInstancesIndex` filters out incorrectly some
instances because it is not aware of what modules are visible. On the
Haddock side, we need to pass in the modules we are processing.

On the GHC side, we need to check against _those_ modules when checking
if an instance is visible.

- - - - -
8285118c by Alec Theriault at 2018-01-13T12:12:37+01:00
Constructor and pattern synonym argument docs (#709)

* Support Haddocks on constructor arguments

This is in conjunction with https://phabricator.haskell.org/D4094.
Adds support for rendering Haddock's on (non-record) constructor
arguments, both for regular and GADT constructors.

* Support haddocks on pattern synonym arguments

It appears that GHC already parsed these - we just weren't using them.
In the process of doing this, I tried to deduplicate some code around
handling patterns.

* Update the markup guide

Add some information about the new support for commenting constructor
arguments, and mention pattern synonyms and GADT-style constructors.

* Overhaul LaTeX support for data/pattern decls

This includes at least

  * fixing several bugs that resulted in invalid LaTeX
  * fixing GADT data declaration headers
  * overhaul handling of record fields
  * overhaul handling of GADT constructors
  * overhaul handling of bundled patterns
  * add support for constructor argument docs

* Support GADT record constructors

This means changes what existing HTML docs look like.

As for LaTeX, looks like GADT records were never even supported. Now they are.

* Clean up code/comments

Made code/comments consistent between the LaTeX and XHTML backend
when possible.

* Update changelog

* Patch post-rebase regressions

* Another post-rebase change

We want return values to be documentable on record GADT constructors.

- - - - -
ca4fabb4 by Alec Theriault at 2018-01-15T17:12:18-08:00
Update the GblRdrEnv when processing modules

Without a complete environment, we will miss some instances that were
encountered during typechecking.

- - - - -
4c472fea by Ryan Scott at 2018-01-19T10:44:02+01:00
Fix haskell/haddock#732 (#733)


- - - - -
bff14dbd by Alex Biehl at 2018-01-19T15:33:30+01:00
extractDecl: Extract associated types correctly (#736)


- - - - -
a2a94a73 by Alex Biehl at 2018-01-19T15:34:40+01:00
extractDecl: Extract associated types correctly (#736)


- - - - -
26df93dc by Alex Biehl at 2018-01-20T10:18:22+01:00
haddock-api: bump ghc to ^>= 8.4

- - - - -
f65aeb1d by Alex Biehl at 2018-01-20T19:18:20+01:00
Fix duplicate declarations and TypeFamilies specifics

- - - - -
0e721b97 by Alex Biehl at 2018-01-20T19:20:19+01:00
Fix duplicate declarations and TypeFamilies specifics

- - - - -
cb6234f6 by Ben Gamari at 2018-01-26T13:40:55-05:00
Merge remote-tracking branch 'harpocrates/fix/missing-orphan-instances' into ghc-head

- - - - -
0fc28554 by Alec Theriault at 2018-02-01T14:58:18+01:00
Pass to GHC visible modules for instance filtering

The GHC-side `getNameToInstancesIndex` filters out incorrectly some
instances because it is not aware of what modules are visible. On the
Haddock side, we need to pass in the modules we are processing.

On the GHC side, we need to check against _those_ modules when checking
if an instance is visible.

- - - - -
b9123772 by Alec Theriault at 2018-02-01T14:58:18+01:00
Update the GblRdrEnv when processing modules

Without a complete environment, we will miss some instances that were
encountered during typechecking.

- - - - -
0c12e274 by Ryan Scott at 2018-02-01T14:58:18+01:00
Fix haskell/haddock#548 by rendering datatype kinds more carefully (#702)

- - - - -
8876d20b by Alec Theriault at 2018-02-01T14:58:18+01:00
Use the GHC lexer for the Hyperlinker backend (#714)

* Start changing to use GHC lexer

* better cpp

* Change SrcSpan to RealSrcSpan

* Remove error

* Try to stop too many open files

* wip

* wip

* Revert "wip"

This reverts commit b605510a195f26315e3d8ca90e6d95a6737553e1.

Conflicts:
	haddock-api/haddock-api.cabal
	haddock-api/src/Haddock/Interface.hs

* Remove pointless 'caching'

* Use dlist rather than lists when finding vars

* Use a map rather than list

* Delete bogus comment

* Rebase followup

Things now run using the GHC lexer. There are still

  - stray debug statements
  - unnecessary changes w.r.t. master

* Cleaned up differences w.r.t. current Haddock HEAD

Things are looking good. quasiquotes in particular look beautiful: the
TH ones (with Haskell source inside) colour/link their contents too!

Haven't yet begun to check for possible performance problems.

* Support CPP and top-level pragmas

The support for these is hackier - but no more hacky than the existing
support.

* Tests pass, CPP is better recognized

The tests were in some cases altered: I consider the new output to be more
correct than the old one....

* Fix shrinking of source without tabs in test

* Replace 'Position'/'Span' with GHC counterparts

Replaces 'Position' -> 'GHC.RealSrcLoc' and 'Span' -> 'GHC.RealSrcSpan'.

* Nits

* Forgot entry in .cabal

* Update changelog

- - - - -
95c6a771 by Alec Theriault at 2018-02-01T14:58:18+01:00
Clickable anchors for headings (#716)

See haskell/haddock#579. This just adds an <a> tag around the heading, pointing to the
heading itself.
- - - - -
21463d28 by Alex Biehl at 2018-02-01T14:58:18+01:00
Quickjump: Matches on function names weight more than matches in ...

module names.

- - - - -
8023af39 by Alex Biehl at 2018-02-01T14:58:18+01:00
Treat escaped \] better in definition lists (#717)

This fixes haskell/haddock#546.
- - - - -
e4866dc1 by Alex Biehl at 2018-02-01T14:58:18+01:00
Remove scanner, takeWhile1_ already takes care of escaping

- - - - -
9bcaa49d by Alex Biehl at 2018-02-01T14:58:18+01:00
Take until line feed

- - - - -
01d2af93 by Oleg Grenrus at 2018-02-01T14:58:18+01:00
Add simple framework for running parser fixtures (#668)

* Add simple framework for running parser fixtures

* Compatible with tree-diff-0.0.0.1

* Use parseParas to parse fixtures

This allows to test all syntactic constructs available in haddock
markup.

- - - - -
31128417 by Alec Theriault at 2018-02-01T14:58:18+01:00
Patch flaky parser test (#720)

* Patch flaky parser test

This test was a great idea, but it doesn't port over too well to using
the GHC lexer. GHC rewrites its input a bit - nothing surprising, but
we need to guard against those cases for the test.

* Change instance head

* Change use site

- - - - -
9704f214 by Herbert Valerio Riedel at 2018-02-01T14:58:18+01:00
Include secondary LICENSE file in source dist

- - - - -
51f25074 by Oleg Grenrus at 2018-02-01T14:58:18+01:00
Grid Tables (#718)

* Add table examples

* Add table types and adopt simple parser

Simple parser is done by Giovanni Cappellotto (@potomak)
in https://github.com/haskell/haddock/pull/577
It seems to support single fine full tables, so far from full
RST-grid tables, but it's good start.

Table type support row- and colspans, but obviously parser is lacking.

Still TODO:
- Latex backend. Should we use multirow package
  https://ctan.org/pkg/multirow?lang=en?
- Hoogle backend: ?

* Implement grid-tables

* Refactor table parser

* Add two ill-examples

* Update CHANGES.md

* Basic documentation for tables

* Fix documentation example

- - - - -
670d6200 by Alex Biehl at 2018-02-01T14:58:18+01:00
Add grid table example to cheatsheet

(pdf and svg need to be regenerated thought)
- - - - -
4262dec9 by Alec Theriault at 2018-02-01T14:58:18+01:00
Fix infinite loop when specializing instance heads (#723)

* Fix infinite loop when specializing instance heads

The bug can only be triggered from TH, hence why it went un-noticed for
so long.

* Add test for haskell/haddock#679 and haskell/haddock#710

- - - - -
67ecd803 by Alec Theriault at 2018-02-01T14:58:18+01:00
Filter RTS arguments from 'ghc-options' arguments (#725)

This fixes haskell/haddock#666.
- - - - -
7db26992 by Alex Biehl at 2018-02-01T14:58:18+01:00
Quickjump Scrollable overlay
- - - - -
da9ff634 by Alexander Biehl at 2018-02-01T14:58:18+01:00
Hyperlinker: Adjust parser to new PFailed constructor

- - - - -
7b7cf8cb by Alexander Biehl at 2018-02-01T14:58:18+01:00
Specialize: Add missing IdP annotations

- - - - -
78cd7231 by Alexander Biehl at 2018-02-01T14:58:18+01:00
Convert: Correct pass type

- - - - -
a2d0f590 by Alexander Biehl at 2018-02-01T14:58:18+01:00
Warning free compilation

- - - - -
cd861cf3 by Alexander Biehl at 2018-02-01T14:58:18+01:00
hadock-2.19.0 / haddock-api-2.19.0 / haddock-library-1.5.0

- - - - -
c6651b72 by Alexander Biehl at 2018-02-01T14:58:18+01:00
Adjust changelogs

- - - - -
1e93da0b by Alexander Biehl at 2018-02-01T14:58:18+01:00
haddock-library: Info about breaking changes

- - - - -
f9b11db8 by Alec Theriault at 2018-02-02T12:36:02+01:00
Properly color pragma contents in hyperlinker

The hyperlinker backend now classifies the content of pragmas as
'TkPragma'. That means that in something like '{-# INLINE foo #-}',
'foo' still gets classified as a pragma token.

- - - - -
c40b0043 by Alec Theriault at 2018-02-02T12:36:02+01:00
Support the new 'ITcolumn_prag' token

- - - - -
4a2a4d39 by Alex Biehl at 2018-02-03T12:11:55+01:00
QuickJump: Mitigate encoding problems on Windows

- - - - -
bb34503a by Alex Biehl at 2018-02-04T18:39:31+01:00
Use withBinaryFile

- - - - -
637605bf by Herbert Valerio Riedel at 2018-02-05T09:48:32+01:00
Try GHC 8.4.1 for Travis CI job

- - - - -
7abb67e4 by Herbert Valerio Riedel at 2018-02-05T10:05:42+01:00
try harder to build w/ GHC 8.4.1

- - - - -
8255cc98 by Herbert Valerio Riedel at 2018-02-05T10:05:42+01:00
Add `SPDX-License-Identifier` as alised for "license" module header tokens

C.f. SPDX 2.1 - Appendix V
 https://spdx.org/spdx-specification-21-web-version#h.twlc0ztnng3b

    The tag should appear on its own line in the source file, generally as part of a comment.

    SPDX-License-Identifier: <SPDX License Expression>

Cherry-picked from haskell/haddock#743

- - - - -
267cd23d by Herbert Valerio Riedel at 2018-02-05T10:24:34+01:00
Make test-suite SMP compatible

- - - - -
95d4bf40 by Alec Theriault at 2018-02-05T22:01:04+01:00
Hyperlink pattern synonyms and 'module' imports (#744)

Links to pattern synonyms are now generated, as well as links from
modules in import lists.

Fixes haskell/haddock#731.
- - - - -
67838dcd by Alec Theriault at 2018-02-06T08:23:36+01:00
Don't warn about missing '~' (#746)

This manually filters out '~' from the list of things to warn about. It truly
makes no sense to warn on this since '~' has nothing it could link to - it is
magical.

This fixes haskell/haddock#532.
- - - - -
ab6c3f9f by Alec Theriault at 2018-02-06T08:24:47+01:00
Don't barf on 'HsSpliceTy' (#745)

This handles 'HsSpliceTy's by replacing them with what they expand to.
IIUC everything that is happening, 'renameHsSpliceTy' should not be
able to fail for the inputs we feed it from GHC.

This fixes haskell/haddock#574.

- - - - -
92bf95ad by Alex Biehl at 2018-02-06T08:28:23+01:00
Rename: renameHsSpliceTy ttg

- - - - -
3130b1e1 by Alex Biehl at 2018-02-06T09:02:14+01:00
Expand SigDs

- - - - -
c72adae5 by Alex Biehl at 2018-02-06T09:20:51+01:00
fullModuleContents: support named docs

- - - - -
de2e4dbf by Alex Biehl at 2018-02-06T13:56:17+01:00
Hyperlinker: Also link pattern synonym arguments

- - - - -
b7c98237 by Alex Biehl at 2018-02-09T18:44:23+01:00
Expand SigD in a better place

In https://github.com/haskell/haddock/issues/287 we found that
haddock-2.19.0 would miss documentation on class methods with
multiples names.

This patch uses expandSigDecls in a more sensible place.

- - - - -
8f598b27 by Alec Theriault at 2018-02-11T12:29:56+01:00
Add module tooltips to linked identifiers (#753)

No more clicking to figure out whether your bytestring is strict or lazy!
- - - - -
d812e65d by Alec Theriault at 2018-02-11T12:31:44+01:00
Add 'show' option to complement 'hide' (#752)

* Add 'show' option to complement 'hide'

The behaviour is for flags passed in the command line to override
flags in file headers. In the command line, later flags override
earlier ones.

Fixes haskell/haddock#751 and haskell/haddock#266.

* Add a '--show-all' option

- - - - -
6676cecb by Alex Biehl at 2018-02-18T11:07:15-05:00
QuickJump: Mitigate encoding problems on Windows

(cherry picked from commit 86292c54bfee2343aee84559ec01f1fc68f52231)

- - - - -
e753dd88 by Alex Biehl at 2018-02-18T17:59:54+01:00
Use withBinaryFile

- - - - -
724dc881 by Tamar Christina at 2018-02-19T05:34:49+01:00
Haddock: support splitted include paths. (#689)


- - - - -
9b6d6f50 by Alex Biehl at 2018-02-19T05:57:02+01:00
Teach the HTML backend how to render methods with multiple names

- - - - -
a74aa754 by Alexander Biehl at 2018-02-19T10:04:34+01:00
Hoogle/Latex: Remove use of partial function

- - - - -
66d8bb0e by Alec Theriault at 2018-02-25T16:04:01+01:00
Fix file handle leak (#763) (#764)

Brought back some mistakenly deleted code for handling encoding and eager
reading of files from e0ada1743cb722d2f82498a95b201f3ffb303137.
- - - - -
bb92d03d by Alex Biehl at 2018-03-02T14:21:23+01:00
Enable running test suite with stock haddock and ghc using

```
$ cabal new-run -- html-test --haddock-path=$(which haddock) --ghc-path=$(which ghc)
```

- - - - -
dddb3cb2 by Alex Biehl at 2018-03-02T15:43:21+01:00
Make testsuite work with haddock-1.19.0 release (#766)


- - - - -
f38636ed by Alec Theriault at 2018-03-02T15:48:36+01:00
Support unicode operators, proper modules

Unicode operators are a pretty big thing in Haskell, so supporting linking them
seems like it outweighs the cost of the extra machinery to force Attoparsec to
look for unicode.

Fixes haskell/haddock#458.

- - - - -
09d89f7c by Alec Theriault at 2018-03-02T15:48:43+01:00
Remove bang pattern

- - - - -
d150a687 by Alex Biehl at 2018-03-02T15:48:48+01:00
fix test

- - - - -
d6fd71a5 by Alex Biehl at 2018-03-02T16:22:38+01:00
haddock-test: Be more explicit which packages to pass

We now pass `-hide-all-packages` to haddock when invoking the
testsuite. This ensures we don't accidentally pick up any dependencies
up through ghc.env files.

- - - - -
0932c78c by Alex Biehl at 2018-03-02T17:50:38+01:00
Revert "fix test"

This reverts commit 1ac2f9569242f6cb074ba6e577285a4c33ae1197.

- - - - -
52516029 by Alex Biehl at 2018-03-02T18:16:50+01:00
Fix Bug548 for real

- - - - -
89df9eb5 by Alex Biehl at 2018-03-05T18:28:19+01:00
Hyperlinker: Links for TyOps, class methods and associated types

- - - - -
d019a4cb by Ryan Scott at 2018-03-06T13:43:56-05:00
Updates for haskell/haddock#13324

- - - - -
6d5a42ce by Alex Biehl at 2018-03-10T18:25:57+01:00
Bump haddock-2.19.0.1, haddock-api-2.19.0.1, haddock-library-1.5.0.1

- - - - -
c0e6f380 by Alex Biehl at 2018-03-10T18:25:57+01:00
Update changelogs for haddock-2.19.0.1 and haddock-library-1.5.0.1

- - - - -
500da489 by Herbert Valerio Riedel at 2018-03-10T18:25:57+01:00
Update to QC 2.11

- - - - -
ce8362e9 by Herbert Valerio Riedel at 2018-03-10T18:25:57+01:00
Restore backward-compat with base-4.5 through base-4.8

- - - - -
baae4435 by Alex Biehl at 2018-03-10T18:25:57+01:00
Bump lower bound for haddock-library

- - - - -
10b7a73e by Alex Biehl at 2018-03-10T18:25:57+01:00
Haddock: Straighten out base bound

- - - - -
a6096f7b by Alex Biehl at 2018-03-13T08:45:06+01:00
extractDecl: Extract constructor patterns from data family instances (#776)

* extractDecl: Allow extraction of data family instance constructors

* extractDecl: extract data family instance constructors

- - - - -
ba4a0744 by Simon Jakobi at 2018-03-14T08:26:42+01:00
Readme: Update GHC version (#778)


- - - - -
8de157d4 by Simon Jakobi at 2018-03-14T20:39:29+01:00
Add fixture test for definition lists

- - - - -
425b46f9 by Simon Jakobi at 2018-03-14T20:39:29+01:00
Add fixture test for links

- - - - -
d53945d8 by Simon Jakobi at 2018-03-14T20:39:29+01:00
Add fixture test for inline links

- - - - -
f1dc7c99 by Simon Jakobi at 2018-03-14T20:39:29+01:00
fixtures: Slightly unmangle output

- - - - -
0879d31c by Simon Jakobi at 2018-03-14T20:39:29+01:00
fixtures: Prevent stdout buffering

- - - - -
1f9e5f1b by Simon Jakobi at 2018-03-14T20:39:29+01:00
haddock-library.cabal: Clean up GHC options

- - - - -
066b891a by Simon Jakobi at 2018-03-14T20:39:29+01:00
Make a proper definition for the <link> parser

- - - - -
573d6ba7 by Alec Theriault at 2018-03-21T09:16:57+01:00
Show where instances are defined (#748)

* Indicate source module of instances

Above instance, we now also display a link to the module where the
instance was defined. This is sometimes helpful in figuring out
what to import.

* Source module for type/data families too

* Remove parens

* Accept tests

- - - - -
99b5d28b by Alex Biehl at 2018-03-21T09:20:36+01:00
Prepare changelog for next release

- - - - -
482d3a93 by Alex Biehl at 2018-03-23T15:57:36+01:00
Useful cost centres, timers and allocation counters (#785)

* Add some useful cost-centres for profiling

* Add withTiming for each haddock phase

Invoking haddock with `--optghc=-ddump-timings` now shows the amount
of time spent and the number of allocated bytes for each phase.

- - - - -
773b41bb by Alec Theriault at 2018-03-27T08:35:59+02:00
@since includes package name (#749)

* Metadoc stores a package name

This means that '@since' annotations can be package aware.

* Get the package name the right way

This should extract the package name for `@since` annotations the
right way. I had to move `modulePackageInfo` around to do this and,
in the process, I took the liberty to update it.

Since it appears that finding the package name is something that can
fail, I added a warning for this case.

* Silence warnings

* Hide package for local 'since' annotations

As discussed, this is still the usual case (and we should avoid being
noisy for it).

Although this commit is large, it is basically only about threading a
'Maybe Package' from 'Haddock.render' all the way to
'Haddock.Backends.Xhtml.DocMarkup.renderMeta'.

* Bump binary interface version

* Add a '--since-qual' option

This controls when to qualify since annotations with the package they
come from. The default is always, but I've left an 'external' variant
where only those annotations coming from outside of the current
package are qualified.

* Make ParserSpec work

* Make Fixtures work

* Use package name even if package version is not available

The @since stuff needs only the package name passed in, so it
makes sense to not be forced to pass in a version too.

- - - - -
e42c57bc by Alex Biehl at 2018-03-27T08:42:50+02:00
haddock-2.19.1, haddock-api-2.19.1, haddock-library-1.6.0

- - - - -
8373a529 by Alex Biehl at 2018-03-28T10:17:11+02:00
Bump haddock and haddock-api to 2.20.0

- - - - -
5038eddd by Jack Henahan at 2018-04-03T13:28:12+02:00
Clear search string on hide for haskell/haddock#781 (#789)


- - - - -
920ca1eb by Alex Biehl at 2018-04-03T16:35:50+02:00
Travis: Build with ghc-8.4.2 (#793)


- - - - -
a232f0eb by Alan Zimmerman at 2018-04-07T14:14:32+02:00
Match changes in GHC for D4199

Removing HasSourceText and SourceTextX classes.

- - - - -
ab85060b by Alan Zimmerman at 2018-04-09T21:20:24+02:00
Match GHC changes for TTG

- - - - -
739302b6 by Alan Zimmerman at 2018-04-13T13:31:44+02:00
Match GHC for TTG implemented on HsBinds, D4581

- - - - -
2f56d3cb by Ryan Scott at 2018-04-19T11:42:58-04:00
Bump upper bound on base to < 4.13

See https://ghc.haskell.org/trac/ghc/ticket/15018.

- - - - -
a49df92a by Alex Biehl at 2018-04-20T07:31:44+02:00
Don't treat fixity signatures like declarations

- - - - -
d02c103b by Ryan Scott at 2018-04-24T11:20:11-04:00
Add regression test for haskell/haddock#413

Fixes haskell/haddock#413.

- - - - -
c7577f52 by Ryan Scott at 2018-04-24T13:51:06-07:00
Improve the Hoogle backend's treatment of type families (#808)

Fixes parts 1 and 2 of haskell/haddock#806.
- - - - -
d88f85b1 by Alec Theriault at 2018-04-25T11:24:07-07:00
Replace 'attoparsec' with 'parsec' (#799)

* Remove attoparsec with parsec and start fixing failed parses

* Make tests pass

* Fix encoding issues

The Haddock parser no longer needs to worry about bytestrings. All
the internal parsing work in haddock-library happens over 'Text'.

* Remove attoparsec vendor

* Fix stuff broken in 'attoparsec' -> 'parsec'

* hyperlinks
* codeblocks
* examples

Pretty much all issues are due to attoparsec's backtracking failure
behaviour vs. parsec's non-backtracking failure behaviour.

* Fix small TODOs

* Missing quote + Haddocks

* Better handle spaces before/after paragraphs

* Address review comments

- - - - -
fc25e2fe by Alan Zimmerman at 2018-04-27T15:36:53+02:00
Match changes in GHC for TTG

- - - - -
06175f91 by Herbert Valerio Riedel at 2018-05-01T18:11:09+02:00
Merge branch 'ghc-head' with 'ghc-8.4'

- - - - -
879caaa8 by Alec Theriault at 2018-05-07T18:53:15-07:00
Filter out CRLFs in hyperlinker backend (#813)

This prevents spurious lines from appearing in the final output.
- - - - -
3e0120cb by Simon Jakobi at 2018-05-07T19:00:18-07:00
Add docs for some DocH constructors (#814)


- - - - -
0a32c6db by Alec Theriault at 2018-05-08T02:15:45-07:00
Remove 'TokenGroup' from Hyperlinker (#818)

Since the hyperlinker backend now relies on the GHC tokenizer, something
like 'Bar.Baz.foo' already gets bunched together into one token (as
opposed to being spread across 'Bar', '.', 'Baz', '.', and 'foo').
- - - - -
8816e783 by Simon Jakobi at 2018-05-08T10:48:11-07:00
Renamer: Warn about out of scope identifiers. (#819)


- - - - -
ad60366f by Ryan Scott at 2018-05-10T11:19:47-04:00
Remove Hoogle backend hack that butchers infix datatype names

- - - - -
03b7cc3b by Ryan Scott at 2018-05-10T11:24:38-04:00
Wibbles

- - - - -
b03dd563 by Chaitanya Koparkar at 2018-05-10T11:44:58-04:00
Use the response file utilities defined in `base` (#821)

Summary: The response file related modules were recently copied from
`haddock` into `base`. This patch removes them from `haddock`.

GHC Trac Issues: haskell/haddock#13896
- - - - -
9f298a40 by Ben Gamari at 2018-05-13T17:36:04-04:00
Account for refactoring of LitString

- - - - -
ea3dabe7 by Ryan Scott at 2018-05-16T09:21:43-04:00
Merge pull request haskell/haddock#826 from haskell/T825

Remove Hoogle backend hack that butchers infix datatype names
- - - - -
0d234f7c by Alec Theriault at 2018-05-23T11:29:05+02:00
Use `ClassOpSig` instead of `TypeSig` for class methods (#835)

* Fix minimal pragma handling

Class declarations contain 'ClassOpSig' not 'Typesig'. This should fix haskell/haddock#834.

* Accept html-test output

- - - - -
15fc9712 by Simon Jakobi at 2018-05-31T04:17:47+02:00
Adjust to new HsDocString internals

- - - - -
6f1e19a8 by Ben Gamari at 2018-06-02T16:18:58-04:00
Remove ParallelArrays and Data Parallel Haskell

- - - - -
0d0355d9 by Ryan Scott at 2018-06-04T21:26:59-04:00
DerivingVia changes

- - - - -
0d93475a by Simon Jakobi at 2018-06-05T19:47:05+02:00
Bump a few dependency bounds (#845)


- - - - -
5cbef804 by Alec Theriault at 2018-06-05T19:47:16+02:00
Improve hyperlinker's 'spanToNewline' (#846)

'spanToNewline' is used to help break apart the source into lines which
can then be partioned into CPP and non-CPP chunks. It is important that
'spanToNewline' not break apart tokens, so it needs to properly handle
things like

  * block comments, possibly nested
  * string literals, possibly multi-line
  * CPP macros, possibly multi-line

String literals in particular were not being properly handled. The fix
is to to fall back in 'Text.Read.lex' to help lex things that are not
comments.

Fixes haskell/haddock#837.
- - - - -
9094c56f by Alec Theriault at 2018-06-05T22:53:25+02:00
Extract docs from strict/unpacked constructor args (#839)

This fixes haskell/haddock#836.
- - - - -
70188719 by Simon Jakobi at 2018-06-08T22:20:30+02:00
Renamer: Warn about ambiguous identifiers (#831)

* Renamer: Warn about ambiguous identifiers

Example:

    Warning: 'elem' is ambiguous. It is defined
        * in ‘Data.Foldable’
        * at /home/simon/tmp/hdk/src/Lib.hs:7:1
        You may be able to disambiguate the identifier by qualifying it or
        by hiding some imports.
        Defaulting to 'elem' defined at /home/simon/tmp/hdk/src/Lib.hs:7:1

Fixes haskell/haddock#830.

* Deduplicate warnings

Fixes haskell/haddock#832.

- - - - -
495cd1fc by Chaitanya Koparkar at 2018-06-13T23:01:34+02:00
Use the response file utilities defined in `base` (#821)

Summary: The response file related modules were recently copied from
`haddock` into `base`. This patch removes them from `haddock`.

GHC Trac Issues: haskell/haddock#13896
- - - - -
81088732 by Ben Gamari at 2018-06-13T23:01:34+02:00
Account for refactoring of LitString

- - - - -
7baf6587 by Simon Jakobi at 2018-06-13T23:05:08+02:00
Adjust to new HsDocString internals

- - - - -
bb61464d by Ben Gamari at 2018-06-13T23:05:22+02:00
Remove ParallelArrays and Data Parallel Haskell

- - - - -
5d8cb87f by Ryan Scott at 2018-06-13T23:39:30+02:00
DerivingVia changes

- - - - -
73d373a3 by Alec Theriault at 2018-06-13T23:39:30+02:00
Extract docs from strict/unpacked constructor args (#839)

This fixes haskell/haddock#836.
- - - - -
4865e254 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Remove `ITtildehsh` token

- - - - -
b867db54 by Alec Theriault at 2018-06-13T23:39:30+02:00
Filter out CRLFs in hyperlinker backend (#813)

This prevents spurious lines from appearing in the final output.
- - - - -
9598e392 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Add docs for some DocH constructors (#814)


- - - - -
8a59035b by Alec Theriault at 2018-06-13T23:39:30+02:00
Remove 'TokenGroup' from Hyperlinker (#818)

Since the hyperlinker backend now relies on the GHC tokenizer, something
like 'Bar.Baz.foo' already gets bunched together into one token (as
opposed to being spread across 'Bar', '.', 'Baz', '.', and 'foo').
- - - - -
29350fc8 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Renamer: Warn about out of scope identifiers. (#819)


- - - - -
2590bbd9 by Ryan Scott at 2018-06-13T23:39:30+02:00
Remove Hoogle backend hack that butchers infix datatype names

- - - - -
a9939fdc by Ryan Scott at 2018-06-13T23:39:30+02:00
Wibbles

- - - - -
a22f7df4 by Alec Theriault at 2018-06-13T23:39:30+02:00
Use `ClassOpSig` instead of `TypeSig` for class methods (#835)

* Fix minimal pragma handling

Class declarations contain 'ClassOpSig' not 'Typesig'. This should fix haskell/haddock#834.

* Accept html-test output

- - - - -
8741015d by Simon Jakobi at 2018-06-13T23:39:30+02:00
Bump a few dependency bounds (#845)


- - - - -
4791e1cc by Alec Theriault at 2018-06-13T23:39:30+02:00
Improve hyperlinker's 'spanToNewline' (#846)

'spanToNewline' is used to help break apart the source into lines which
can then be partioned into CPP and non-CPP chunks. It is important that
'spanToNewline' not break apart tokens, so it needs to properly handle
things like

  * block comments, possibly nested
  * string literals, possibly multi-line
  * CPP macros, possibly multi-line

String literals in particular were not being properly handled. The fix
is to to fall back in 'Text.Read.lex' to help lex things that are not
comments.

Fixes haskell/haddock#837.
- - - - -
311d3216 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Renamer: Warn about ambiguous identifiers (#831)

* Renamer: Warn about ambiguous identifiers

Example:

    Warning: 'elem' is ambiguous. It is defined
        * in ‘Data.Foldable’
        * at /home/simon/tmp/hdk/src/Lib.hs:7:1
        You may be able to disambiguate the identifier by qualifying it or
        by hiding some imports.
        Defaulting to 'elem' defined at /home/simon/tmp/hdk/src/Lib.hs:7:1

Fixes haskell/haddock#830.

* Deduplicate warnings

Fixes haskell/haddock#832.

- - - - -
d0577817 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Complete FixitySig and FamilyDecl pattern matches

- - - - -
055b3aa7 by Simon Jakobi at 2018-06-13T23:39:30+02:00
Fix redundant import warnings

- - - - -
f9ce19b1 by Simon Jakobi at 2018-06-13T23:49:52+02:00
html-test: Accept output

- - - - -
04604ea7 by Simon Jakobi at 2018-06-13T23:54:37+02:00
Bump bounds on Cabal

- - - - -
0713b692 by Simon Jakobi at 2018-06-14T00:00:12+02:00
Merge branch 'ghc-head' into ghc-head-update-3

- - - - -
c6a56bfd by Simon Jakobi at 2018-06-14T02:33:27+02:00
Bump ghc bound for haddock-api spec test-suite

- - - - -
119d04b2 by Simon Jakobi at 2018-06-14T12:37:48+02:00
Travis: `--allow-newer` for all packages

- - - - -
0e876e2c by Alex Biehl at 2018-06-14T15:28:52+02:00
Merge pull request haskell/haddock#857 from sjakobi/ghc-head-update-3

Update ghc-head
- - - - -
5be46454 by Alec Theriault at 2018-06-14T21:42:45+02:00
Improved handling of interfaces in 'haddock-test' (#851)

This should now work with an inplace GHC where (for instance)
HTML directories may not be properly recorded in the package DB.
- - - - -
96ab1387 by Vladislav Zavialov at 2018-06-14T17:06:21-04:00
Handle -XStarIsType

- - - - -
e518f8c4 by Ben Gamari at 2018-06-14T17:48:00-04:00
Revert unintentional reversion of fix of haskell/haddock#548

- - - - -
01b9f96d by Alan Zimmerman at 2018-06-19T11:52:22+02:00
Match changes in GHC for haskell/haddock#14259

- - - - -
7f8c8298 by Ben Gamari at 2018-06-19T18:14:27-04:00
Bump GHC version to 8.6

- - - - -
11c6b5d2 by Ryan Scott at 2018-06-19T23:17:31-04:00
Remove HsEqTy and XEqTy

- - - - -
b33347c2 by Herbert Valerio Riedel at 2018-06-20T23:14:52+02:00
Revert "Bump GHC version to 8.6"

This was applied to the wrong branch; there's now a `ghc-8.6` branch;
ghc-head is always supposed to point to GHC HEAD, i.e. an odd major version.
The next version bump to `ghc-head` is supposed to go from e.g. 8.5 to 8.7

This reverts commit 5e3cf5d8868323079ff5494a8225b0467404a5d1.

- - - - -
f0d2460e by Herbert Valerio Riedel at 2018-06-20T23:28:46+02:00
Update Travis CI job

- - - - -
ef239223 by Herbert Valerio Riedel at 2018-06-20T23:32:41+02:00
Drop GHC HEAD from CI and update GHC to 8.4.3

It's a waste of resource to even try to build this branch w/ ghc-head;
so let's not do that...

- - - - -
41c4a9fa by Ben Gamari at 2018-06-20T18:26:20-04:00
Bump GHC version to 8.7

- - - - -
8be593dc by Herbert Valerio Riedel at 2018-06-21T22:32:15+02:00
Update CI job to use GHC 8.7.*

- - - - -
b91d334a by Simon Jakobi at 2018-06-30T13:41:38+02:00
README updates (#856)

* README: Remove mentions of master branch

* README: Add instructions for using html-test

* README: Change command to run _all_ the testsuites

* README: Add project overview section

- - - - -
f707d848 by Alec Theriault at 2018-07-05T10:43:35-04:00
Export more fixities for Hoogle (#871)

This exports fixities for more things, including class methods and
type-level operators.
- - - - -
a6d2b8dc by Alec Theriault at 2018-07-06T10:06:32-04:00
Avoid line breaks due to line length in Hoogle (#868)

* Avoid line breaks due to line length in Hoogle

Hoogle operates in a line-oriented fashion, so we should avoid ever
breaking due to long lines.

One way of doing this non-intrusively is to modify the 'DynFlags' that
are threaded through the 'Hoogle' module (note this is anyways only
passed through for use in the various 'showSDoc' functions).

* Amend test case

- - - - -
13819f71 by Alan Zimmerman at 2018-07-15T19:33:51+02:00
Match XFieldOcc rename in GHC

Trac haskell/haddock#15386

- - - - -
c346aa78 by Simon Jakobi at 2018-07-19T12:29:32+02:00
haddock-library: Bump bounds for containers

- - - - -
722e733c by Simon Jakobi at 2018-07-19T13:36:45+02:00
tyThingToLHsDecl: Preserve type synonyms that contain a forall (#880)

* tyThingToLHsDecls: Preserve type synonyms that contain a forall

Fixes haskell/haddock#879.

* Add Note [Invariant: Never expand type synonyms]

* Clarify Note [Invariant: Never expand type synonyms]

- - - - -
f0bd83fd by Alec Theriault at 2018-07-19T14:39:57+02:00
Fix HEAD html-test (#860)

* Update tests for 'StarIsType'

* Accept tests

* Revert "Update tests for 'StarIsType'"

This reverts commit 7f0c01383bbba6dc5af554ee82988d2cf44e407a.

- - - - -
394053a8 by Simon Jakobi at 2018-07-19T14:58:07+02:00
haddock-library: Bump bounds for containers

- - - - -
1bda11a2 by Alec Theriault at 2018-07-20T09:04:03+02:00
Add HEAD.hackage overlay (#887)

* Add HEAD.hackage overlay

* Add HCPKG variable

- - - - -
c7b4ab45 by Alec Theriault at 2018-07-20T12:01:16+02:00
Refactor handling of parens in types (#874)

* Fix type parenthesization in Hoogle backend

Ported the logic in the HTML and LaTeX backends for adding in parens
into something top-level in 'GhcUtil'. Calling that from the Hoogle
backend fixes haskell/haddock#873.

* Remove parenthesizing logic from LaTeX and XHTML backends

Now, the only times that parenthesis in types are added in any backend
is through the explicit 'HsParTy' constructor. Precedence is also
represented as its own datatype.

* List out cases explicitly vs. catch-all

* Fix printing of parens for QuantifiedConstraints

The priority of printing 'forall' types was just one too high.

Fixes haskell/haddock#877.

* Accept HTML output for quantified contexts test

- - - - -
c05d32ad by Alec Theriault at 2018-07-20T12:01:49+02:00
Preserve docs on type family instances (#867)

* Preserve docs on type family instances

The only problem was that the instance location was slightly off
for type family instances.

* Accept output

- - - - -
24b39ee4 by Alec Theriault at 2018-07-20T12:02:16+02:00
Fix broken instance source links (#869)

The problem manifests itself in instances that are defined in
modules other than the module where the class is defined. The fix
is just to thread through the 'Module' of the instance further
along.

Since orphan instances appear to already have been working, I didn't
do anything there.
- - - - -
cb9d2099 by Simon Jakobi at 2018-07-20T13:39:29+02:00
README updates (#856)

* README: Remove mentions of master branch

* README: Add instructions for using html-test

* README: Change command to run _all_ the testsuites

* README: Add project overview section

(cherry picked from commit 61d6f935da97eb96685f07bf385102c2dbc2a33c)

- - - - -
133f24f5 by Alec Theriault at 2018-07-20T13:39:29+02:00
Export more fixities for Hoogle (#871)

This exports fixities for more things, including class methods and
type-level operators.

(cherry picked from commit 88316b972e3d47197b1019111bae0f7f87275fce)

- - - - -
11024149 by Alec Theriault at 2018-07-20T13:39:29+02:00
Avoid line breaks due to line length in Hoogle (#868)

* Avoid line breaks due to line length in Hoogle

Hoogle operates in a line-oriented fashion, so we should avoid ever
breaking due to long lines.

One way of doing this non-intrusively is to modify the 'DynFlags' that
are threaded through the 'Hoogle' module (note this is anyways only
passed through for use in the various 'showSDoc' functions).

* Amend test case

(cherry picked from commit 657b1b3d519545f8d4ca048c06210d6cbf0f0da0)

- - - - -
de0c139e by Simon Jakobi at 2018-07-20T13:39:29+02:00
tyThingToLHsDecl: Preserve type synonyms that contain a forall (#880)

* tyThingToLHsDecls: Preserve type synonyms that contain a forall

Fixes haskell/haddock#879.

* Add Note [Invariant: Never expand type synonyms]

* Clarify Note [Invariant: Never expand type synonyms]

(cherry picked from commit c3eb3f0581f69e816f9453b1747a9f2a3ba02bb9)

- - - - -
6435e952 by Alec Theriault at 2018-07-20T13:39:29+02:00
Preserve docs on type family instances (#867)

* Preserve docs on type family instances

The only problem was that the instance location was slightly off
for type family instances.

* Accept output

(cherry picked from commit 133e9c2c168db19c1135479f7ab144c4e33af2a4)

- - - - -
1461af39 by Alec Theriault at 2018-07-20T13:39:29+02:00
Fix broken instance source links (#869)

The problem manifests itself in instances that are defined in
modules other than the module where the class is defined. The fix
is just to thread through the 'Module' of the instance further
along.

Since orphan instances appear to already have been working, I didn't
do anything there.

(cherry picked from commit 2de7c2acf9b1ec85b09027a8bb58bf8512e91c05)

- - - - -
69d3bde1 by Alec Theriault at 2018-07-20T13:49:47+02:00
Add some more unicode related tests (#872)

This has been fixed for sure ever since we switched from attoparsec to
parsec. Parts of it may have been working before that, but there was a
point where this would have failed (see haskell/haddock#191).

A regression test never hurt anyone. :)
- - - - -
6a5c73c7 by Alec Theriault at 2018-07-20T13:50:00+02:00
Misc tests (#858)

* More tests

* spliced types
* constructor/pattern argument docs
* strictness marks on fields with argument docs

* latex test cases need seperate directory

* Accept tests

- - - - -
92ca94c6 by Alec Theriault at 2018-07-20T13:55:36+02:00
Add some more unicode related tests (#872)

This has been fixed for sure ever since we switched from attoparsec to
parsec. Parts of it may have been working before that, but there was a
point where this would have failed (see haskell/haddock#191).

A regression test never hurt anyone. :)

(cherry picked from commit 5ec7715d418bfac0f26aec6039792a99a6e89370)

- - - - -
981bc7fa by Simon Jakobi at 2018-07-20T15:06:06+02:00
Additional tests for the identifier parser (#816)

* Add tests for the identifier parser

* docs: Clarify how to delimit identifiers

- - - - -
27e7c0c5 by Simon Jakobi at 2018-07-20T15:09:05+02:00
Additional tests for the identifier parser (#816)

* Add tests for the identifier parser

* docs: Clarify how to delimit identifiers

(cherry picked from commit 0861affeca4d72938f05a2eceddfae2c19199071)

- - - - -
49e1a415 by Simon Jakobi at 2018-07-20T16:02:02+02:00
Update the ghc-8.6 branch (#889)

* Revert "Bump GHC version to 8.6"

This was applied to the wrong branch; there's now a `ghc-8.6` branch;
ghc-head is always supposed to point to GHC HEAD, i.e. an odd major version.
The next version bump to `ghc-head` is supposed to go from e.g. 8.5 to 8.7

This reverts commit 5e3cf5d8868323079ff5494a8225b0467404a5d1.

* README updates (#856)

* README: Remove mentions of master branch

* README: Add instructions for using html-test

* README: Change command to run _all_ the testsuites

* README: Add project overview section

(cherry picked from commit 61d6f935da97eb96685f07bf385102c2dbc2a33c)

* Export more fixities for Hoogle (#871)

This exports fixities for more things, including class methods and
type-level operators.

(cherry picked from commit 88316b972e3d47197b1019111bae0f7f87275fce)

* Avoid line breaks due to line length in Hoogle (#868)

* Avoid line breaks due to line length in Hoogle

Hoogle operates in a line-oriented fashion, so we should avoid ever
breaking due to long lines.

One way of doing this non-intrusively is to modify the 'DynFlags' that
are threaded through the 'Hoogle' module (note this is anyways only
passed through for use in the various 'showSDoc' functions).

* Amend test case

(cherry picked from commit 657b1b3d519545f8d4ca048c06210d6cbf0f0da0)

* tyThingToLHsDecl: Preserve type synonyms that contain a forall (#880)

* tyThingToLHsDecls: Preserve type synonyms that contain a forall

Fixes haskell/haddock#879.

* Add Note [Invariant: Never expand type synonyms]

* Clarify Note [Invariant: Never expand type synonyms]

(cherry picked from commit c3eb3f0581f69e816f9453b1747a9f2a3ba02bb9)

* Fix HEAD html-test (#860)

* Update tests for 'StarIsType'

* Accept tests

* Revert "Update tests for 'StarIsType'"

This reverts commit 7f0c01383bbba6dc5af554ee82988d2cf44e407a.

* Refactor handling of parens in types (#874)

* Fix type parenthesization in Hoogle backend

Ported the logic in the HTML and LaTeX backends for adding in parens
into something top-level in 'GhcUtil'. Calling that from the Hoogle
backend fixes haskell/haddock#873.

* Remove parenthesizing logic from LaTeX and XHTML backends

Now, the only times that parenthesis in types are added in any backend
is through the explicit 'HsParTy' constructor. Precedence is also
represented as its own datatype.

* List out cases explicitly vs. catch-all

* Fix printing of parens for QuantifiedConstraints

The priority of printing 'forall' types was just one too high.

Fixes haskell/haddock#877.

* Accept HTML output for quantified contexts test

* Preserve docs on type family instances (#867)

* Preserve docs on type family instances

The only problem was that the instance location was slightly off
for type family instances.

* Accept output

(cherry picked from commit 133e9c2c168db19c1135479f7ab144c4e33af2a4)

* Fix broken instance source links (#869)

The problem manifests itself in instances that are defined in
modules other than the module where the class is defined. The fix
is just to thread through the 'Module' of the instance further
along.

Since orphan instances appear to already have been working, I didn't
do anything there.

(cherry picked from commit 2de7c2acf9b1ec85b09027a8bb58bf8512e91c05)

* Add some more unicode related tests (#872)

This has been fixed for sure ever since we switched from attoparsec to
parsec. Parts of it may have been working before that, but there was a
point where this would have failed (see haskell/haddock#191).

A regression test never hurt anyone. :)

(cherry picked from commit 5ec7715d418bfac0f26aec6039792a99a6e89370)

* Misc tests (#858)

* More tests

* spliced types
* constructor/pattern argument docs
* strictness marks on fields with argument docs

* latex test cases need seperate directory

* Accept tests

* Additional tests for the identifier parser (#816)

* Add tests for the identifier parser

* docs: Clarify how to delimit identifiers

(cherry picked from commit 0861affeca4d72938f05a2eceddfae2c19199071)

- - - - -
5ca14bed by Simon Jakobi at 2018-07-20T16:05:47+02:00
Revert "Revert "Bump GHC version to 8.6""

That commit didn't belong onto the ghc-8.6 branch.

This reverts commit acbaef3b9daf1d2dea10017964bf886e77a8e967.

- - - - -
2dd600dd by Simon Jakobi at 2018-07-20T16:18:21+02:00
Don't warn about ambiguous identifiers when the candidate names belong to the same type

This also changes the defaulting heuristic for ambiguous identifiers.
We now prefer local names primarily, and type constructors or class
names secondarily.

Partially fixes haskell/haddock#854.

- - - - -
fceb2422 by Simon Jakobi at 2018-07-20T16:18:21+02:00
outOfScope: Recommend qualifying the identifier

- - - - -
acea5d23 by Simon Jakobi at 2018-07-20T16:19:35+02:00
outOfScope: Recommend qualifying the identifier

(cherry picked from commit 73707ed58d879cc04cb644c5dab88c39ca1465b7)

- - - - -
1a83ca55 by Simon Jakobi at 2018-07-20T16:19:35+02:00
Don't warn about ambiguous identifiers when the candidate names belong to the same type

This also changes the defaulting heuristic for ambiguous identifiers.
We now prefer local names primarily, and type constructors or class
names secondarily.

Partially fixes haskell/haddock#854.

(cherry picked from commit d504a2864a4e1982e142cf88c023e7caeea3b76f)

- - - - -
48374451 by Masahiro Sakai at 2018-07-20T17:06:42+02:00
Add # as a special character (#884)

'#' has special meaning used for anchors and can be escaped using backslash.
Therefore it would be nice to be listed as special characters.
- - - - -
5e1a5275 by Alec Theriault at 2018-07-20T23:37:24+02:00
Let `haddock-test` bypass interface version check (#890)

This means `haddock-test` might

  * crash during deserialization
  * deserialize incorrectly

Still - it means things _might_ work where they were previously sure
not to.
- - - - -
27286754 by Yuji Yamamoto at 2018-07-23T08:16:01+02:00
Avoid "invalid argument (invalid character)" on non-unicode Windows (#892)

Steps to reproduce and the error message
====

```
> stack haddock basement
... snip ...
    Warning: 'A' is out of scope.
    Warning: 'haddock: internal error: <stdout>: commitBuffer: invalid argument (invalid character)
```

Environment
====

OS: Windows 10 ver. 1709
haddock: [HEAD of ghc-8.4 when I reproduce the error](https://github.com/haskell/haddock/commit/532b209d127e4cecdbf7e9e3dcf4f653a5605b5a). (I had to use this version to avoid another probrem already fixed in HEAD)
GHC: 8.4.3
stack: Version 1.7.1, Git revision 681c800873816c022739ca7ed14755e85a579565 (5807 commits) x86_64 hpack-0.28.2

Related pull request
====

https://github.com/haskell/haddock/pull/566
- - - - -
6729d361 by Alec Theriault at 2018-07-23T13:52:56-07:00
Accumulate explicitly which modules to load for 'attachInstances'

The old approach to fixing haskell/haddock#469, while correct, consumes a lot of
memory. We ended up with a HUGE 'GblRdrEnv' in 'ic_rn_gbl_env'. However,
'getNameToInstancesIndex' takes that environment and compresses it down
to a much smaller 'ModuleSet'.

Now, we compute that 'ModuleSet' explicitly as we process modules. That
way we can just tell 'getNameToInstancesIndex' what modules to load
(instead of it trying to compute that information from the interactive
context).

- - - - -
8cf4e6b5 by Ryan Scott at 2018-07-27T11:28:03-04:00
eqTyCon_RDR now lives in TysWiredIn

After GHC commit
http://git.haskell.org/ghc.git/commit/f265008fb6f70830e7e92ce563f6d83833cef071

- - - - -
1ad251a6 by Alan Zimmerman at 2018-07-30T13:28:09-04:00
Match XFieldOcc rename in GHC

Trac haskell/haddock#15386

(cherry picked from commit e3926b50ab8a7269fd6904b06e881745f08bc5d6)

- - - - -
8aea2492 by Richard Eisenberg at 2018-08-02T10:54:17-04:00
Update against new HsImplicitBndrs

- - - - -
e42cada9 by Alec Theriault at 2018-08-04T17:51:30+02:00
Latex type families (#734)

* Support for type families in LaTeX

The code is ported over from the XHTML backend.

* Refactor XHTML and LaTeX family handling

This is mostly a consolidation effort: stripping extra exports,
inlining some short definitions, and trying to make the backends
match.

The LaTeX backend now has preliminary support for data families,
although the only the data instance head is printed (not the actual constructors).

Both backends also now use "newtype" for newtype data family
instances.

* Add some tests

- - - - -
0e852512 by Alex Biehl at 2018-08-06T13:04:02+02:00
Make --package-version optional for --hoogle generation (#899)

* Make --package-version optional for --hoogle generation

* Import mkVersion

* It's makeVersion not mkVersion

- - - - -
d2abd684 by Noel Bourke at 2018-08-21T09:34:18+02:00
Remove unnecessary backslashes from docs (#908)

On
https://haskell-haddock.readthedocs.io/en/latest/markup.html#special-characters
the backslash and backtick special characters showed up with an extra
backslash before them – I think the escaping is not (or no longer)
needed for those characters in rst.
- - - - -
7a578a9e by Matthew Pickering at 2018-08-21T09:34:50+02:00
Load plugins when starting a GHC session (#905)

Fixes haskell/haddock#900
- - - - -
aa3d4db3 by Matthew Pickering at 2018-08-21T09:37:34+02:00
Load plugins when starting a GHC session (#905)

Fixes haskell/haddock#900
- - - - -
ede91744 by Alec Theriault at 2018-08-21T09:42:52+02:00
Better test output when Haddock crashes on a test (#902)

In particular: we report the tests that crashed seperately from the tests
that produced incorrect output. In order for tests to pass (and exit 0),
they must not crash and must produce the right output.
- - - - -
4a872b84 by Guillaume Bouchard at 2018-08-21T09:45:57+02:00
Fix a typo (#878)


- - - - -
4dbf7595 by Ben Sklaroff at 2018-08-21T12:04:09-04:00
Add ITcomment_line_prag token to Hyperlinker Parser

This token is necessary for parsing #line pragmas inside nested comments.

Reviewers: bgamari

Reviewed By: bgamari

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

- - - - -
9170b2a9 by Ben Gamari at 2018-08-21T17:55:15-04:00
Merge pull request haskell/haddock#893 from harpocrates/get-name-to-instances

Accumulate explicitly which modules to load for 'attachInstances'
- - - - -
d57b57cc by Ben Gamari at 2018-08-21T17:59:13-04:00
Merge branch 'ghc-head' of github.com:haskell/haddock into ghc-head

- - - - -
14601ca2 by Alec Theriault at 2018-08-21T19:09:37-04:00
Accumulate explicitly which modules to load for 'attachInstances'

The old approach to fixing haskell/haddock#469, while correct, consumes a lot of
memory. We ended up with a HUGE 'GblRdrEnv' in 'ic_rn_gbl_env'. However,
'getNameToInstancesIndex' takes that environment and compresses it down
to a much smaller 'ModuleSet'.

Now, we compute that 'ModuleSet' explicitly as we process modules. That
way we can just tell 'getNameToInstancesIndex' what modules to load
(instead of it trying to compute that information from the interactive
context).

(cherry picked from commit 5c7c596c51d69b92164e9ba920157b36ce2b2ec1)

- - - - -
438c645e by Matthew Pickering at 2018-08-21T19:12:39-04:00
Load plugins when starting a GHC session (#905)

Fixes haskell/haddock#900

(cherry picked from commit e6aa8fb47b9477cc5ef5e46097524fe83e080f6d)

- - - - -
a80c5161 by Alec Theriault at 2018-08-21T22:06:40-07:00
Better rendering of unboxed sums/tuples

* adds space after/before the '#' marks
* properly reify 'HsSumTy' in 'synifyType'

- - - - -
88456cc1 by Alec Theriault at 2018-08-21T22:06:40-07:00
Handle promoted tuples in 'synifyType'

When we have a fully applied promoted tuple, we can expand it out properly.

- - - - -
fd1c1094 by Alec Theriault at 2018-08-21T22:19:34-07:00
Accept test cases

- - - - -
6e80d9e0 by Alec Theriault at 2018-08-21T22:24:03-07:00
Merge pull request haskell/haddock#914 from harpocrates/feature/unboxed-stuff

Better rendering of unboxed sums, unboxed tuples, promoted tuples.
- - - - -
181a23f1 by Ben Gamari at 2018-08-23T15:53:48-04:00
Merge remote-tracking branch 'origin/ghc-8.6' into ghc-8.6

- - - - -
3a18c1d8 by Alec Theriault at 2018-08-27T14:15:25-07:00
Properly synify promoted list types

We reconstruct promoted list literals whenever possible. That means
that 'synifyType' produces

   '[Int, Bool, ()]

instead of

   (Int ': (() ': (Bool ': ([] :: [Type]))))

- - - - -
b4794946 by Alec Theriault at 2018-09-03T07:19:55-07:00
Only look at visible types when synifying a 'HsListTy'

The other types are still looked at when considering whether to make
a kind signature or not.

- - - - -
a231fce2 by Alec Theriault at 2018-09-03T07:38:10-07:00
Merge pull request haskell/haddock#922 from harpocrates/promoted-lists

Properly synify promoted list types
- - - - -
0fdf044e by Ningning Xie at 2018-09-15T10:25:58-04:00
Update according to GHC Core changes

- - - - -
7379b115 by Ningning Xie at 2018-09-15T15:40:18-04:00
update dataFullSig to work with Co Quantification

This should have been in the previous patch, but wasn't.

- - - - -
cf84a046 by Alec Theriault at 2018-09-17T20:12:18-07:00
Fix/add to various docs

* Add documentation for a bunch of previously undocumented
  options (fixes haskell/haddock#870)
* Extend the documentation of `--hoogle` considerably (see haskell/haddock#807)
* Describe how to add docs to `deriving` clauses (fixes haskell/haddock#912)
* Fix inaccurate docs about hyperlinking infix identifiers (fixes haskell/haddock#780)

- - - - -
ae017935 by Alec Theriault at 2018-09-22T08:32:16-07:00
Update Travis

- - - - -
d95ae753 by Alec Theriault at 2018-09-22T09:34:10-07:00
Accept failing tests

Also silence orphan warnings.

- - - - -
f3e67024 by Alec Theriault at 2018-09-22T09:41:23-07:00
Bump haddock-api-2.21.0, haddock-library-1.7.0

* Update CHANGELOGS
* Update new versions in Cabal files
* Purge references to ghc-8.4/master branches in README

- - - - -
3f136d4a by Alec Theriault at 2018-09-22T10:53:31-07:00
Turn haddock-library into a minor release

Fix some version bounds in haddock-library too.

- - - - -
b9def006 by Alec Theriault at 2018-09-22T13:07:35-07:00
keep cabal.project file

- - - - -
4909aca7 by Alec Theriault at 2018-10-16T09:36:30-07:00
Build on 7.4 and 7.8

- - - - -
99d20a28 by Herbert Valerio Riedel at 2018-10-16T18:45:52+02:00
Minor tweak to package description

- - - - -
a8059618 by Herbert Valerio Riedel at 2018-10-16T18:47:24+02:00
Merge pull request haskell/haddock#945

haddock-api 2.21.0 and haddock-library 1.6.1 release
- - - - -
2d9bdfc1 by Alec Theriault at 2018-10-16T10:54:21-07:00
Bump haddock-library to 1.7.0

The 1.6.1 release should've been a major bump, since types in
the `Documentation.Haddock.Parser.Monad` module changed. This version
makes that module internal (as it morally should be).

- - - - -
ed340cef by Alec Theriault at 2018-10-16T14:59:13-07:00
Merge branch 'ghc-8.4' into ghc-8.6

- - - - -
2821a8df by Alec Theriault at 2018-10-16T15:14:48-07:00
Merge branch 'ghc-8.6' into ghc-head

- - - - -
a722dc84 by Alec Theriault at 2018-10-16T16:28:55-07:00
Latex type families (#734)

* Support for type families in LaTeX

The code is ported over from the XHTML backend.

* Refactor XHTML and LaTeX family handling

This is mostly a consolidation effort: stripping extra exports,
inlining some short definitions, and trying to make the backends
match.

The LaTeX backend now has preliminary support for data families,
although the only the data instance head is printed (not the actual constructors).

Both backends also now use "newtype" for newtype data family
instances.

* Add some tests

- - - - -
63377496 by Alec Theriault at 2018-10-16T16:39:07-07:00
Update changelog

- - - - -
099a0110 by Alec Theriault at 2018-10-16T16:49:28-07:00
Merge pull request haskell/haddock#942 from harpocrates/update-docs

Fix & add to documentation
- - - - -
0927416f by Alec Theriault at 2018-10-16T16:50:14-07:00
Set UTF-8 encoding before writing files (#934)

This should fix haskell/haddock#929, as well as guard against future problems of this
sort in other places. Basically replaces 'writeFile' (which selects the
users default locale) with 'writeUtf8File' (which always uses utf8).
- - - - -
83b7b017 by Alec Theriault at 2018-10-16T17:42:05-07:00
Output pattern synonyms in Hoogle backend (#947)

* Output pattern synonyms in Hoogle backend

We were previously weren't outputting _any_ pattern synonyms, bundled or
not. Now, we output both.

Fixes haskell/haddock#946.

* Update changelog

- - - - -
81e5033d by Alec Theriault at 2018-10-16T18:04:40-07:00
Release `haddock{,-api}-2.22.0`

This version will accompany ghc-8.6.2

- - - - -
9661744e by Alex Biehl at 2018-10-18T08:14:32-07:00
Add NewOcean theme

And make it the default theme.

- - - - -
7ae6d722 by NunoAlexandre at 2018-10-18T08:14:32-07:00
Improve appearance and readability

These changes include:

- use latest Haskell's logo colors
- decrease #content width to improve readability
- use nicer font
- improve sizes and distances

- - - - -
37f8703d by NunoAlexandre at 2018-10-18T08:14:32-07:00
Include custom font in the html head

- - - - -
1d5e1d79 by NunoAlexandre at 2018-10-18T08:14:32-07:00
Update html test reference files

- - - - -
53b7651f by NunoAlexandre at 2018-10-18T08:14:32-07:00
Make it responsive

- It makes small screens taking more space than larger ones
- fixes a few issues present in small screens currently
- make it look good across different screen sizes.

- - - - -
6aa1aeb1 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Make the style consistent with hackage

Several things are addressed here:

- better responsive behaviour on the header
- better space usage
- consistent colors overall
- other nit PR comments

- - - - -
3a250c5c by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Place the package name before the menu links

This supports the expected responsive menu design, where the
package name appears above the menu links.

- - - - -
cae699b3 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Update html-test reference files

The package name element in the package-header is now a div instead of a
paragraph, and it is now above the menu ul.links instead of below.

- - - - -
2ec7fd2d by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Improve synopsis style and code

- Use CSS3 instead of loading pictures to show "+" and "-" symbols
- Drop redundant code

- - - - -
0c874c01 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Decrease space between code blocks

There was too much space between code blocks as pointed out by
reviewers.

- - - - -
85568ce2 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Add an initial-scale property to all haddock pages

This solves an issue reported about the content looking
incredibly small on mobile devices.

- - - - -
c1538926 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Address several PR comments

- Darken text color like done for hackage
- Move synopsis to left side
- Make table of contents stick to the left on wide screens
- Wrap links to avoid page overflow
- Improve expand/collapse buttons
- Fix issue with content size on mobile devices
- Fix issue with font-size on landscape mode
- Increase width of the content
- Change colors of table of contents and synopsis
- Etc

- - - - -
e6639e5f by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Make synopsis scrollable on wide screens

When the synopsis is longer than the screen, you can’t see its end
and you can't scroll down either, making the content unreachable.

- - - - -
1f0591ff by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Improve information density

- Reduce font size
- Improve space between and within code blocks
- Improve alignments
- Improve spacing within sub-blocks

- - - - -
bf083097 by NunoAlexandre at 2018-10-18T08:14:32-07:00
Minor adjustments

Bring in some adjustments made to hackage:
- link colors
- page header show everything when package title is too long

- - - - -
10375fc7 by NunoAlexandre at 2018-10-18T08:14:32-07:00
Fix responsive triggers overlap issue

The min and max width triggers have the same values,
which caused the style resolution to take an intersection of
both style declarations when the screen resolution had the size
of the limts (say 1280px), causing an odd behaviour and look.

- - - - -
95ff2f95 by NunoAlexandre at 2018-10-18T08:14:32-07:00
Fix issue with menu alignment on firefox

Reported and described here:
https://github.com/haskell/haddock/pull/721#issuecomment-374668869

- - - - -
dc86587e by Alex Biehl at 2018-10-18T08:14:32-07:00
Changelog entry for NewOcean

- - - - -
27195e47 by Herbert Valerio Riedel at 2018-10-18T08:14:32-07:00
html-test --accept

- - - - -
83f4f9c0 by Alex Biehl at 2018-10-18T08:14:32-07:00
Avoid name shadowing

- - - - -
231487f1 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Update font to PT Sans

Also migrate some general text related changes from hackage.

- - - - -
313db81a by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Use 'flex' to fix header alignment

- - - - -
5087367b by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Misc of tweaks

- Update link colors to hackage scheme
- Tune spacing between content elements
- Update footer style
- Fix and improve code blocks identation

- - - - -
b08020df by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Update font in Xhtml.hs to PT Sans

- - - - -
78ce06e3 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Improve code blocks styling

- Fix and improve spacing
- Improve colors and borders

- - - - -
81262d20 by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Make package-header caption backward-compatible

The current html generator of this branch wraps the package-header
caption as a div, which does not work (without style adjustments) with
the old themes. Changing it from div to span does the trick, without
needing to adjust the old stylesheets.

- - - - -
dc4475cb by Nuno Alexandre at 2018-10-18T08:14:32-07:00
Update test-suite reference html pages

- - - - -
393d35d8 by Alec Theriault at 2018-10-18T08:25:36-07:00
Accept tests

- - - - -
a94484ba by Alec Theriault at 2018-10-21T10:29:29-07:00
Fix CHANGELOG

- - - - -
8797eca3 by Alec Theriault at 2018-10-21T10:36:19-07:00
Update 'data-files' to include NewOcean stuff

- - - - -
1ae51e4a by Simon Jakobi at 2018-10-23T11:29:14+02:00
Fix typo in a warning

- - - - -
009ad8e8 by Alec Theriault at 2018-10-24T12:47:47-07:00
Update JS dependencies

This was done via `npm audit fix`. I think this fixes haskell/haddock#903 along with
some more serious vulnerabilities that nobody seems to have noticed.

- - - - -
051994db by Alec Theriault at 2018-10-24T17:31:09-07:00
Resurrect the style-switcher

This fixes haskell/haddock#810. Looks like things were broken during the quickjump
refactor of the JS.

For the (git) record: I do not think the style switcher is a good idea.
I'm fixing it for the same reason @mzero added it; as an answer to

  "rumblings from some that they didn't want their pixels changed on bit"

- - - - -
2a1d620f by Alec Theriault at 2018-10-24T17:38:07-07:00
Fix copy-pasta error in data-files

- - - - -
ed5bfb7f by Alec Theriault at 2018-10-24T20:42:14-07:00
Fix the synopsis button

Here's these changes are supposed to do:

  * put the synopsis back on the right side
  * properly have it on the edge of the screen on wide screens
  * adjust the background of the synopsis to match the button
    (otherwise the grey blends in with what is underneath)
  * get rid of the dotted purple line
  * the synopsis contents are now scrollable even when in wide
    screens (this has been a long-standing bug)

- - - - -
883fd74b by Alec Theriault at 2018-10-25T20:16:46-07:00
Avoid more conflicts in generated ids  (#954)

This fixes haskell/haddock#953 by passing more names into the generated ids.


- - - - -
ea54e331 by Alec Theriault at 2018-10-25T21:07:12-07:00
Don't hide bullets in method docs

I think thst CSS was meant only to deal with fields and the
effect on bullets was accidental.

Fixes haskell/haddock#926.

- - - - -
9a14ef4a by Alec Theriault at 2018-10-25T22:02:07-07:00
Indent more things + slightly smaller font

- - - - -
b9f17e29 by Alec Theriault at 2018-10-25T22:10:01-07:00
Merge branch 'ghc-8.6' into wip/new-ocean

- - - - -
096a3cfa by Alec Theriault at 2018-10-25T22:24:38-07:00
Accept HTML output

- - - - -
2669517d by Alec Theriault at 2018-10-26T09:02:35-07:00
User manual + stuff for building GHC docs

- - - - -
46b27687 by Alec Theriault at 2018-10-26T09:10:59-07:00
Make 'Contents' in NewOcean scrollable

This only happens if the contents block on the left is so big that it
doesn't fit (vertically) on the page. If that happens, we want it to
be scrollable.

- - - - -
3443dd94 by Alec Theriault at 2018-10-26T09:36:46-07:00
Revert "Make 'Contents' in NewOcean scrollable"

This reverts commit f909ffd8353d6463fd5dd184998a32aa98d5c922.

I missed the fact this also forces the 'Contents' to always go down
to the bottom of the page.

- - - - -
ed081424 by Alec Theriault at 2018-10-26T14:22:23-07:00
Avoid some partiality

AFAICT this wasn't causing any crashes, but that's mostly because
we happen not to be forcing `pkgStr` when it would diverge. We come
dangerously close to doing that in `ppHtmlIndex`.

Fixes haskell/haddock#569.

- - - - -
6a5bec41 by Alec Theriault at 2018-10-27T10:05:04-07:00
Fix documentation in `haddock-api` (#957)

* Fix misplaced Haddocks in Haddock itself

Haddock should be able to generate documentation for 'haddock-api'
again.

* Make CI check that documentation can be built.

* Add back a doc that is OK

- - - - -
5100450a by Matthew Yacavone at 2018-10-27T14:51:38-04:00
More explicit foralls (GHC Proposal 0007)

- - - - -
8771a6b0 by Alec Theriault at 2018-11-05T13:58:11-08:00
Only run MathJax on entities with "mathjax" class (#960)

Correspondingly, we wrap all inline/diplay math in

    <span class="mathjax"> ... the math .... </span>

This fixes haskell/haddock#959.
- - - - -
bd7ff5c5 by Alec Theriault at 2018-11-05T15:54:22-08:00
Deduplicate some work in 'AttachInstances'

Perf only change:

  * avoid needlessly union-ing maps
  * avoid synify-ing instances twice

Took this opportunity to add some docs too

- - - - -
cf99fd8f by Alec Theriault at 2018-11-05T15:54:22-08:00
Specialize some SYB functions

Perf only change:

  * Add a 'SPECIALIZE' pragma to help GHC optimize a 'Data a =>' constraint
  * Manually specialize the needlessly general type of 'specializeTyVarBndrs'

- - - - -
4f91c473 by Alec Theriault at 2018-11-05T15:54:22-08:00
Improve perf of renaming

Perf only change:

  * don't look up type variable names (they're never in the environment)
  * use a difference list for accumulating missing names
  * more efficient 'Functor'/'Applicative' instances for 'RnM'

- - - - -
4bbab0d4 by Alec Theriault at 2018-11-05T15:54:22-08:00
Faster 'Text' driven parser combinators

Perf only change:

  * use 'getParserState'/'setParserState' to make 'Text'-optimized
    parser combinators
  * minimize uses of 'Data.Text.{pack,unpack,cons,snoc}'

- - - - -
fa430c02 by Alec Theriault at 2018-11-06T12:03:24-08:00
Support hyperlink labels with inline markup

The parser for pictures hasn't been properly adjusted yet.

- - - - -
c1431035 by Alec Theriault at 2018-11-06T12:03:24-08:00
Support (and flatten) inline markup in image links

Inline markup is supported in image links but, as per the [commonmark
recommendation][0], it is stripped back to a plain text representation.

  [0]: https://spec.commonmark.org/0.28/#example-547

- - - - -
d4ee1ba5 by Alec Theriault at 2018-11-06T12:03:24-08:00
Accept test case

- - - - -
8088aeb1 by Alec Theriault at 2018-11-06T12:03:24-08:00
Fix/add to haddock-library test suite

- - - - -
e78f644d by Alec Theriault at 2018-11-06T13:26:31-08:00
Bump version bounds

- - - - -
644335eb by Alec Theriault at 2018-11-06T13:53:30-08:00
Merge pull request haskell/haddock#875 from harpocrates/feature/markup-in-hyperlinks

Inline markup in markdown-style links and images
- - - - -
e173ed0d by Alec Theriault at 2018-11-07T12:37:18-08:00
Fix issues around plus/minus

  * swap the minimize unicode to something more intuitive
  * use new unicode expander/collapser for instance lists
  * address some alignment issues in the "index" page

- - - - -
b2d92df7 by Alec Theriault at 2018-11-07T13:41:57-08:00
Allow "Contents" summary to scroll in a fixed div

In the unfortunate event that the "Contents" summary doesn't fit
vertically (like in the "Prelude"), it will be scrollable.

- - - - -
ca704c23 by Alec Theriault at 2018-11-07T13:45:15-08:00
Accept HTML output changes

- - - - -
82c0ec6d by Alec Theriault at 2018-11-07T18:12:54-08:00
overflow-y 'scroll' -> 'auto'

- - - - -
571d7657 by Alec Theriault at 2018-11-08T19:44:12-08:00
Clicking on "Contents" navigates to top of page

- - - - -
8065a012 by Alec Theriault at 2018-11-08T19:44:17-08:00
Space out functions more

Also, functions and data decls now have the same space before and after
them.

- - - - -
cc650ede by Alec Theriault at 2018-11-09T08:13:35-08:00
Merge branch 'ghc-8.6' into wip/new-ocean

- - - - -
65f8c17f by Alec Theriault at 2018-11-10T14:04:06-08:00
Update changelog

- - - - -
20473847 by Alec Theriault at 2018-11-10T14:21:40-08:00
Replace oplus/ominus expander/collapser icons with triangles

- - - - -
16592957 by Alec Theriault at 2018-11-10T14:35:10-08:00
Merge pull request haskell/haddock#949 from haskell/wip/new-ocean

Introduce NewOcean theme.
- - - - -
357cefe1 by Alec Theriault at 2018-11-10T16:02:13-08:00
Merge branch 'ghc-8.6' into ghc-head

- - - - -
de612267 by Alec Theriault at 2018-11-11T20:01:21-08:00
Rename 'NewOcean' theme to 'Linuwial'

- - - - -
954b5baa by Alec Theriault at 2018-11-12T08:33:18-08:00
Add blockquote styling

Matches b71da1feabf33efbbc517ac376bb690b5a604c2f from hackage-server.

Fixes haskell/haddock#967.

- - - - -
d32c0b0b by Fangyi Zhou at 2018-11-12T10:24:13-08:00
Fix some broken links (#15733)

Summary:
For links in subpackages as well.
https://phabricator.haskell.org/D5257

Test Plan: Manually verify links

Reviewers: mpickering, bgamari, osa1

Reviewed By: osa1

GHC Trac Issues: haskell/haddock#15733

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

- - - - -
41098b1f by Alp Mestanogullari at 2018-11-15T22:40:09+01:00
Follow GHC HEAD's HsTypes.Promoted -> BasicTypes.PromotionFlag change

It got introduced in ghc/ghc at ae2c9b40f5b6bf272251d1f4107c60003f541b62.

- - - - -
c5c1c7e0 by Alec Theriault at 2018-11-15T13:48:13-08:00
Merge pull request haskell/haddock#970 from alpmestan/alp/fix-promotionflag

Follow GHC HEAD's HsTypes.Promoted -> BasicTypes.PromotionFlag change
- - - - -
6473d3a4 by Shayan-Najd at 2018-11-23T01:38:49+01:00
[TTG: Handling Source Locations] Foundation and Pat
Trac Issues haskell/haddock#15495

This patch removes the ping-pong style from HsPat (only, for now), using the plan laid out at https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow/HandlingSourceLocations (solution A).
- the class `HasSrcSpan`, and its functions (e.g., `cL` and `dL`), are introduced
- some instances of `HasSrcSpan` are introduced
- some constructors `L` are replaced with `cL`
- some patterns `L` are replaced with `dL->L` view pattern
- some type annotation are necessarily updated (e.g., `Pat p` --> `Pat (GhcPass p)`)

- - - - -
7a088dfe by Alec Theriault at 2018-11-26T11:11:28-08:00
More uniform handling of `forall`'s in HTML/LaTeX

 * don't forget to print explicit `forall`'s when there are arg docs
 * when printing an explicit `forall`, print all tyvars

Fixes haskell/haddock#973

- - - - -
d735e570 by Alec Theriault at 2018-12-12T08:42:09-08:00
Fix warnings, accept output

* remove redundant imports (only brought to light due to recent work for
  improving redundant import detection)
* fix a bug that was casuing exports to appear in reverse order
* fix something in haddock-library that prevented compilation on old GHC's

- - - - -
a3852f8a by Zejun Wu at 2018-12-14T09:37:47-05:00
Output better debug infromation on internal error in extractDecl

This will make investigation of haskell/haddock#979 easier

- - - - -
2eccb5b9 by Alec Theriault at 2018-12-17T09:25:10-05:00
Refactor names + unused functions (#982)

This commit should not introduce any change in functionality!

  * consistently use `getOccString` to convert `Name`s to strings
  * compare names directly when possible (instead of comparing strings)
  * get rid of unused utility functions
- - - - -
e82e4df8 by Alec Theriault at 2018-12-20T16:16:30-05:00
Load plugins when compiling each module (#983)

* WIP: Load (typechecker) plugins from language pragmas

* Revert "Load plugins when starting a GHC session (#905)"

This reverts commit 72d82e52f2a6225686d9668790ac33c1d1743193.

* Simplify plugin initialization code

- - - - -
96e86f38 by Alec Theriault at 2018-12-23T10:23:20-05:00
Properly synify and render promoted type variables  (#985)

* Synify and render properly promoted type variables

Fixes haskell/haddock#923.

* Accept output

- - - - -
23343345 by Alec Theriault at 2018-12-27T16:39:38-05:00
Remove `haddock-test`'s dep. on `syb` (#987)

The functionality is easily inlined into one short function: `gmapEverywhere`.
This doesn't warrant pulling in another package.
- - - - -
d0734f21 by Alec Theriault at 2018-12-27T16:39:52-05:00
Address deprecation warnings in `haddock-test` (#988)

Fixes haskell/haddock#885.
- - - - -
4d9f144e by mynguyen at 2018-12-30T23:42:26-05:00
Visible kind application haddock update

- - - - -
ffe0e9ed by Alec Theriault at 2019-01-07T13:55:22-08:00
Print kinded tyvars in constructors for Hoogle (#993)

Fixes haskell/haddock#992
- - - - -
2e18b55d by Alec Theriault at 2019-01-10T16:42:45-08:00
Accept new output `GHC.Maybe` -> `Data.Maybe` (#996)

Since 53874834b779ad0dfbcde6650069c37926da1b79 in GHC, "GHC.Maybe"
is marked as `not-home`. That changes around some test output.
- - - - -
055da666 by Gabor Greif at 2019-01-22T14:41:51+01:00
Lone typofix
- - - - -
01bb71c9 by Alec Theriault at 2019-01-23T11:46:46-08:00
Keep forall on H98 existential data constructors (#1003)

The information about whether or not there is a source-level `forall`
is already available on a `ConDecl` (as `con_forall`), so we should use
it instead of always assuming `False`!

Fixes haskell/haddock#1002.
- - - - -
f9b9bc0e by Ryan Scott at 2019-01-27T09:28:12-08:00
Fix haskell/haddock#1004 with a pinch of dropForAlls

- - - - -
5cfcdd0a by Alec Theriault at 2019-01-28T16:49:57-08:00
Loosen 'QuickCheck' and 'hspec' bounds

It looks like the new versions don't cause any breakage
and loosening the bounds helps deps fit in one stack resolver.

- - - - -
3545d3dd by Alec Theriault at 2019-01-31T01:37:25-08:00
Use `.hie` files for the Hyperlinker backend (#977)

# Summary

This is a large architectural change to the Hyperlinker.

  * extract link (and now also type) information from `.hie` instead
    of doing ad-hoc SYB traversals of the `RenamedSource`. Also
    adds a superb type-on-hover feature (#715).

 * re-engineer the lexer to avoid needless string conversions. By going
    directly through GHC's `P` monad and taking bytestring slices, we
    avoid a ton of allocation and have better handling of position
    pragmas and CPP.

In terms of performance, the Haddock side of things has gotten _much_
more efficient. Unfortunately, much of this is cancelled out by the
increased GHC workload for generating `.hie` files. For the full set of
boot libs (including `ghc`-the-library)

  * the sum of total time went down by 9-10% overall
  * the sum of total allocations went down by 6-7%

# Motivation

Haddock is moving towards working entirely over `.hi` and `.hie` files.
This change means we no longer need the `RenamedSource` from
`TypecheckedModule` (something which is _not_ in `.hi` files).

# Details

Along the way a bunch of things were fixed:

 * Cross package (and other) links are now more reliable (#496)
 * The lexer tries to recover from errors on every line (instead of at CPP
    boundaries)
 * `LINE`/`COLUMN` pragmas are taken into account
 * filter out zero length tokens before rendering
 * avoid recomputing the `ModuleName`-based `SrcMap`
 * remove the last use of `Documentation.Haddock.Utf8` (see  haskell/haddock#998)
 * restructure temporary folder logic for `.hi`/`.hie` model
- - - - -
2ded3359 by Herbert Valerio Riedel at 2019-02-02T12:06:12+01:00
Update/modernise haddock-library.cabal file

- - - - -
62b93451 by Herbert Valerio Riedel at 2019-02-02T12:19:31+01:00
Tentatively declare support for unreleased base-4.13/ghc-8.8

- - - - -
6041e767 by Herbert Valerio Riedel at 2019-02-02T16:04:32+01:00
Normalise LICENSE text w/ cabal's BSD2 template

Also, correct the `.cabal` files to advertise `BSD2` instead
of the incorrect `BSD3` license.

- - - - -
0b459d7f by Alec Theriault at 2019-02-02T18:06:12-08:00
CI: fetch GHC from validate artifact

Should help make CI be less broken

- - - - -
6b5c07cf by Alec Theriault at 2019-02-02T18:06:12-08:00
Fix some Hyperlinker test suite fallout

* Amend `ParserSpec` to match new Hyperlinker API
    - pass in compiler info
    - strip out null tokens

* Make `hypsrc-test` pass reliably
    - strip out `local-*` ids
    - strip out `line-*` ids from the `ClangCppBug` test
    - re-accept output

- - - - -
ded34791 by Nathan Collins at 2019-02-02T18:31:23-08:00
Update README instructions for Stack

No need to `stack install` Haddock to test it. Indeed, `stack install` changes the `haddock` on user's `PATH` if `~/.local/bin` is on user's `PATH` which may not be desirable when hacking on Haddock.
- - - - -
723298c9 by Alec Theriault at 2019-02-03T09:11:05-08:00
Remove `Documentation.Haddock.Utf8`

The circumstances under which this module appeared are completely gone.
The Hyperlinker backend no longer needs this module (it uses the more
efficient `Encoding` module from `ghc`).

Why no deprecation? Because this module really shouldn't exist!

  - It isn't used in `haddock-library`/`haddock-api` anymore
  - It was copy pasted directly from `utf8-string`
  - Folks seeking a boot-lib only solution can use `ghc`'s `Encoding`

- - - - -
51050006 by Alec Theriault at 2019-02-03T22:58:58-08:00
Miscellaneous improvements to `Convert` (#1020)

Now that Haddock is moving towards working entirely over `.hi` and `.hie` files,
all declarations and types are going to be synthesized via the `Convert` module.
In preparation for this change, here are a bunch of fixes to this module:

  * Add kind annotations to type variables in `forall`'s whose kind is not `Type`,
    unless the kind can be inferred from some later use of the variable. See
    `implicitForAll` and `noKindTyVars` in particular if you wish to dive into this.

  * Properly detect `HsQualTy` in `synifyType`. This is done by following suit with
    what GHC's `toIfaceTypeX` does and checking the first argument of
    `FunTy{} :: Type` to see if it classified as a given/wanted in the typechecker
    (see `isPredTy`). 

  * Beef up the logic around figuring out when an explicit `forall` is needed. This
    includes: observing if any of the type variables will need kind signatures, if the
    inferred type variable order _without_ a forall will still match the one GHC
    claims, and some other small things.

  * Add some (not yet used) functionality for default levity polymorphic type
    signatures. This functionality similar to `fprint-explicit-runtime-reps`.

Couple other smaller fixes only worth mentioning:

  * Show the family result signature only when it isn't `Type`
  * Fix rendering of implicit parameters in the LaTeX and Hoogle backends
  * Better handling of the return kind of polykinded H98 data declarations
  * Class decls produced by `tyThingToLHsDecl` now contain associated type
    defaults and default method signatures when appropriate
  * Filter out more `forall`'s in pattern synonyms
- - - - -
841980c4 by Oleg Grenrus at 2019-02-04T08:44:25-08:00
Make a fixture of weird parsing of lists (#997)

The second example is interesting.
If there's a list directly after the header, and that list has
deeper structure, the parser is confused: It finds two lists:

 - One with the first nested element,
 - everything after it

I'm not trying to fix this, as I'm not even sure this is a bug,
and not a feature.

- - - - -
7315c0c8 by Ryan Scott at 2019-02-04T12:17:56-08:00
Fix haskell/haddock#1015 with dataConUserTyVars (#1022)

The central trick in this patch is to use `dataConUserTyVars` instead of
`univ_tvs ++ ex_tvs`, which displays the foralls in a GADT constructor in
a way that's more faithful to how the user originally wrote it.

Fixes haskell/haddock#1015.
- - - - -
ee0b49a3 by Ryan Scott at 2019-02-04T15:25:17-05:00
Changes from haskell/haddock#14579

We now have a top-level `tyConAppNeedsKindSig` function, which means
that we can delete lots of code in `Convert`.

- - - - -
1c850dc8 by Alan Zimmerman at 2019-02-05T21:54:18+02:00
Matching changes in GHC for haskell/haddock#16236

- - - - -
ab03c38e by Simon Marlow at 2019-02-06T08:07:33+00:00
Merge pull request haskell/haddock#1014 from hvr/pr/bsd2-normalise

Normalise LICENSE text w/ cabal's BSD2 template
- - - - -
5a92ccae by Alec Theriault at 2019-02-10T06:21:55-05:00
Merge remote-tracking branch 'gitlab/wip/T16236-2' into ghc-head

- - - - -
c0485a1d by Alec Theriault at 2019-02-10T03:32:52-08:00
Removes `haddock-test`s dependency on `xml`/`xhtml` (#1027)

This means that `html-test`, `latex-test`, `hoogle-test`, and
`hypsrc-test` now only depend on GHC boot libs. So we should
now be able to build and run these as part of GHC's testsuite. \o/

The reference output has changed very slightly, in three ways:

  * we don't convert quotes back into `&quot;` as the `xml` lib did
  * we don't add extra `&nbsp;` as the `xml` lib did
  * we now remove the entire footer `div` (instead of just emptying it)
- - - - -
65a448e3 by Alec Theriault at 2019-02-11T12:27:41-05:00
Remove workaround for now-fixed Clang CPP bug (#1028)

Before LLVM 6.0.1 (or 10.0 on Apple LLVM), there was a bug where
lines that started with an octothorpe but turned out not
to lex like pragmas would have an extra line added after them.

Since this bug has been fixed upstream and that it doesn't have dire
consequences anyways, the workaround is not really worth it
anymore - we can just tell people to update their clang version (or re-structure
their pragma code).
- - - - -
360ca937 by Alec Theriault at 2019-02-13T11:36:11-05:00
Clean up logic for guessing `-B` and `--lib` (#1026)

Haddock built with the `in-ghc-tree` flag tries harder to find the GHC
lib folder and its own resources. This should make it possible to use
`in-ghc-tree`-built Haddock without having to specify the `-B` and
`--lib` options (just how you can use in-tree GHC without always
specifying the `-B` option).

The logic to do this relies on `getExecutablePath`, so we only get
this auto-detection on platforms where this function works.
- - - - -
d583e364 by Alec Theriault at 2019-02-16T10:41:22-05:00
Fix tests broken by GHC

Changes in 19626218566ea709b5f6f287d3c296b0c4021de2 affected some
of the hyperlinker output. Accepted the new output (hovering over a
`..` now shows you what that wildcard binds).

Also fixed some stray deprecation warnings.

- - - - -
da0c42cc by Vladislav Zavialov at 2019-02-17T11:39:19+03:00
Parser changes to match !380

- - - - -
ab96bed7 by Ryan Scott at 2019-02-18T04:44:08-05:00
Bump ghc version to 8.9

- - - - -
44b7c714 by Alec Theriault at 2019-02-22T05:49:43-08:00
Match GHC changes for T16185

`FunTy` now has an `AnonArgFlag` that indicates whether the arrow is
a `t1 => t2` or `t1 -> t2`.

This commit shouldn't change any functionality in Haddock.

- - - - -
2ee653b1 by Alec Theriault at 2019-02-24T18:53:33-08:00
Update .travis.yml

Points to the new GHC CI artifact.
- - - - -
90939d71 by Alec Theriault at 2019-02-25T00:42:41-08:00
Support value/type namespaces on identifier links

Identifier links can be prefixed with a 'v' or 't' to indicate the value or
type namespace of the desired identifier. For example:

-- | Some link to a value: v'Data.Functor.Identity'
--
-- Some link to a type: t'Data.Functor.Identity'

The default is still the type (with a warning about the ambiguity)

- - - - -
d6ed496c by Alec Theriault at 2019-02-25T00:42:46-08:00
Better identifier parsing

  * '(<|>)' and '`elem`' now get parsed and rendered properly as links
  * 'DbModule'/'DbUnitId' now properly get split apart into two links
  * tuple names now get parsed properly
  * some more small niceties...

The identifier parsing code is more precise and more efficient (although to be
fair: it is also longer and in its own module). On the rendering side, we need
to pipe through information about backticks/parens/neither all the way through
from renaming to the backends.

In terms of impact: a total of 35 modules in the entirety of the bootlib + ghc
lib docs change. The only "regression" is things like '\0'. These should be
changed to @\\0@ (the path by which this previously worked seems accidental).

- - - - -
3c3b404c by Alec Theriault at 2019-02-25T22:12:11-08:00
Fix standalone deriving docs

Docs on standalone deriving decls for classes with associated types
should be associated with the class instance, not the associated type
instance.

Fixes haskell/haddock#1033

- - - - -
d51ef69e by Alec Theriault at 2019-02-26T19:14:59-08:00
Fix bogus identifier defaulting

This avoids a situation in which an identifier would get defaulted to
a completely different identifier. Prior to this commit, the 'Bug1035'
test case would hyperlink 'Foo' into 'Bar'!

Fixes haskell/haddock#1035.

- - - - -
88cbbdc7 by Ryan Scott at 2019-02-27T10:14:03-05:00
Visible dependent quantification (#16326) changes

- - - - -
0dcf6cee by Xia Li-yao at 2019-02-27T21:53:27-05:00
Menu item controlling which instances are expanded/collapsed (#1007)

Adds a menu item (like "Quick Jump") for options related to displaying
instances. This provides functionality for:

  * expanding/collapsing all instances on the currently opened page
  * controlling whether instances are expanded/collapsed by default
  * controlling whether the state of instances should be "remembered"

This new functionality is implemented in Typescript in `details-helper`.
The built-in-themes style switcher also got a revamp so that all three
of QuickJump, the style switcher, and instance preferences now have
the same style and implementation structure.

See also: https://mail.haskell.org/pipermail/haskell-cafe/2019-January/130495.html

Fixes haskell/haddock#698.

Co-authored-by: Lysxia <lysxia at gmail.com>
Co-authored-by: Nathan Collins <conathan at galois.com>


- - - - -
3828c0fb by Alec Theriault at 2019-02-28T12:42:49-05:00
`--show-interface` should output to stdout. (#1040)

Fixes haskell/haddock#864.
- - - - -
a50f4cda by gbaz at 2019-03-01T07:43:16-08:00
Increase contrast of Linuwal theme (#1037)

This is to address the concern that, on less nice and older screens,
some of the shades of grey blend in too easily with the white
background.

 * darken the font slightly
 * darken slightly the grey behind type signatures and such
 * add a border and round the corners on code blocks
 * knock the font down by one point
- - - - -
ab4d41de by Alec Theriault at 2019-03-03T09:23:26-08:00
Merge branch 'ghc-8.6' into ghc-8.8

- - - - -
12f509eb by Ben Gamari at 2019-03-04T22:13:20-05:00
Remove reference to Opt_SplitObjs flag

Split-objects has been removed.

- - - - -
5b3e4c9a by Ryan Scott at 2019-03-06T19:16:24-05:00
Update html-test output to reflect haskell/haddock#16391 changes

- - - - -
fc228af1 by Alec Theriault at 2019-03-09T08:29:23-08:00
Match changes for "Stop inferring over-polymorphic kinds"

The `hsq_ext` field of `HsQTvs` is now just the implicit variables
(instead of also including information about which of these variables
are dependent).

This commit shouldn't change any functionality in Haddock.

- - - - -
6ac109eb by Alec Theriault at 2019-03-09T11:22:55-08:00
Add .hi, .dyn_hi, etc files to .gitignore

Fixes haskell/haddock#1030.

- - - - -
b55f0c05 by Alec Theriault at 2019-03-09T11:22:55-08:00
Better support for default methods in classes

  * default methods now get rendered differently
  * default associated types get rendered
  * fix a forgotten `s/TypeSig/ClassOpSig/` refactor in LaTeX backend
  * LaTeX backend now renders default method signatures

NB: there is still no way to document default class members and the
NB: LaTeX backend still crashes on associated types

- - - - -
10aea0cf by Alec Theriault at 2019-03-09T11:22:55-08:00
Avoid multi-line `emph` in LaTeX backend

`markupWarning` often processes inputs which span across paragraphs.
Unfortunately, LaTeX's `emph` is not made to handle this (and will
crash).

Fixes haskell/haddock#936.

- - - - -
d22dc2c9 by Alec Theriault at 2019-03-09T11:22:55-08:00
Many LaTeX backend fixes

After this commit, we can run with `--latex` on all boot libraries
without crashing (although the generated LaTeX still fails to compile in
a handful of larger packages like `ghc` and `base`).

 * Add newlines after all block elements in LaTeX. This is important to
   prevent the final output from being more an more indented. See the
   `latext-test/src/Example` test case for a sample of this.

 * Support associated types in class declarations (but not yet defaults)

 * Several small issues for producing compiling LaTeX;
     - avoid empy `\haddockbeginargs` lists (ex: `type family Any`)
     - properly escape identifiers depending on context (ex: `Int#`)
     - add `vbox` around `itemize`/`enumerate` (so they can be in tables)

 * Several spacing fixes:
     - limit the width of `Pretty`-arranged monospaced code
     - cut out extra space characters in export lists
     - only escape spaces if there are _multiple_ spaces
     - allow type signatures to be multiline (even without docs)

 * Remove uninteresting and repetitive `main.tex`/`haddock.sty` files
   from `latex-test` test reference output.

Fixes haskell/haddock#935, haskell/haddock#929 (LaTeX docs for `text` build & compile)
Fixes haskell/haddock#727, haskell/haddock#930 (I think both are really about type families...)

- - - - -
0e6cee00 by Alec Theriault at 2019-03-29T12:11:56-07:00
Remove workaround for now-fixed Clang CPP bug (#1028)

Before LLVM 6.0.1 (or 10.0 on Apple LLVM), there was a bug where
lines that started with an octothorpe but turned out not
to lex like pragmas would have an extra line added after them.

Since this bug has been fixed upstream and that it doesn't have dire
consequences anyways, the workaround is not really worth it
anymore - we can just tell people to update their clang version (or re-structure
their pragma code).

- - - - -
ce05434d by Alan Zimmerman at 2019-03-29T12:12:11-07:00
Matching changes in GHC for haskell/haddock#16236

(cherry picked from commit 3ee6526d4ae7bf4deb7cd1caf24b3d7355573576)

- - - - -
d85766b2 by Ben Gamari at 2019-03-29T12:14:04-07:00
Bump GHC to 8.8

- - - - -
5a82cbaf by Oleg Grenrus at 2019-05-05T13:02:00-07:00
Redo ParseModuleHeader

- - - - -
b9033348 by Oleg Grenrus at 2019-05-05T13:02:00-07:00
Comment C, which clarifies why e.g. ReadP is not enough

- - - - -
bb55c8f4 by Alec Theriault at 2019-05-13T16:10:07-07:00
Remove outdated `.ghci` files and `scripts`

The `.ghci` files are actively annoying when trying to `cabal v2-repl`.
As for the `scripts`, the distribution workflow is completely different.

- - - - -
5ee244dc by Alec Theriault at 2019-05-13T16:10:07-07:00
Remove obsolete arcanist files + STYLE

Now that GHC is hosted on Gitlab, the arcanist files don't make sense
anymore. The STYLE file contains nothing more than a dead link too.

- - - - -
d07c1928 by Oleg Grenrus at 2019-05-13T16:41:43-07:00
Redo ParseModuleHeader

- - - - -
492762d2 by Oleg Grenrus at 2019-05-13T16:41:43-07:00
Comment C, which clarifies why e.g. ReadP is not enough

- - - - -
af2ac773 by Ryan Scott at 2019-05-14T17:22:13-04:00
Changes for haskell/haddock#16110/#16356

- - - - -
6820ed0d by Alec Theriault at 2019-05-17T08:51:27-07:00
Unbreak haskell/haddock#1004 test case

`fail` is no longer part of `Monad`.

- - - - -
6bf7be98 by Alec Theriault at 2019-05-17T08:51:27-07:00
Fix haskell/haddock#1063 with better parenthesization logic for contexts

The only other change in html/hoogle/hyperlinker output for the boot
libraries that this caused is a fix to some Hoogle output for implicit
params.

```
$ diff -r _build/docs/ old_docs
diff -r _build/docs/html/libraries/base/base.txt old_docs/html/libraries/base/base.txt
13296c13296
< assertError :: (?callStack :: CallStack) => Bool -> a -> a
---
> assertError :: ?callStack :: CallStack => Bool -> a -> a
```

- - - - -
b5716b61 by Ryan Scott at 2019-05-22T17:24:32-04:00
Match changes with haskell/haddock#14332

- - - - -
c115abf6 by Alec Theriault at 2019-05-26T16:01:58-04:00
Remove Haddock's dependency on `Cabal`

At this point, Haddock depended on Cabal-the-library solely for a
verbosity parser (which misleadingly accepts all sorts of verbosity
options that Haddock never uses). Now, the only dependency on Cabal
is for `haddock-test` (which uses Cabal to locate the Haddock interface
files of a couple boot libraries).

- - - - -
e5b2d4a3 by Alec Theriault at 2019-05-26T16:16:25-04:00
Regression test: promoted lists in associated types

When possible, associated types with promoted lists should use the
promoted list literal syntax (instead of repeated applications of
': and '[]). This was fixed in 2122de5473fd5b434af690ff9ccb1a2e58491f8c.

Closes haskell/haddock#466,

- - - - -
cc5ad5d3 by Alec Theriault at 2019-05-26T17:55:54-04:00
Merge branch 'ghc-8.6' into ghc-8.8

- - - - -
4b3301a6 by Alec Theriault at 2019-05-26T17:57:52-04:00
Release haddock-2.23, haddock-library-1.8.0

Tentatively adjust bounds and changelogs for the release to be bundled
with GHC 8.8.1.

- - - - -
69c7cfce by Matthew Pickering at 2019-05-30T10:54:27+01:00
Update hyperlinker tests for new types in .hie files

- - - - -
29b7e738 by Zubin Duggal at 2019-05-30T10:57:51+01:00
update for new way to store hiefile headers

- - - - -
aeca5d5f by Zubin Duggal at 2019-06-04T18:57:42-04:00
update for new way to store hiefile headers

- - - - -
ba2ca518 by Ben Gamari at 2019-06-07T23:11:14+00:00
Update test output for introduction of Safe-Inferred

- - - - -
3a975a6c by Ryan Scott at 2019-07-03T12:06:27-04:00
Changes for haskell/haddock#15247

- - - - -
0df46555 by Zubin Duggal at 2019-07-22T10:52:50+01:00
Fix haddockHypsrcTest

- - - - -
2688686b by Sylvain Henry at 2019-09-12T23:19:39+02:00
Fix for GHC module renaming

- - - - -
9ec0f3fc by Alec Theriault at 2019-09-20T03:21:00-04:00
Fix Travis CI, loosen .cabal bounds (#1089)

Tentatively for the 2.23 release:

  * updated Travis CI to work again
  * tweaked bounds in the `.cabal` files
  * adjusted `extra-source-files` to properly identify test files
- - - - -
ca559beb by Matthías Páll Gissurarson at 2019-09-28T12:14:40-04:00
Small change in to facilitate extended typed-holes (#1090)

This change has no functional effect on haddock itself, it just changes one pattern to use `_ (` rather than `_(`, so that we may use `_(` as a token for extended typed-holes later.
- - - - -
02e28976 by Vladislav Zavialov at 2019-09-28T12:17:45-04:00
Remove spaces around @-patterns (#1093)

This is needed to compile `haddock` when [GHC Proposal haskell/haddock#229](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0229-whitespace-bang-patterns.rst) is implemented.
- - - - -
83cbbf55 by Alexis King at 2019-09-30T21:12:42-04:00
Fix the ignore-exports option (#1082)

The `ignore-exports` option has been broken since haskell/haddock#688, as mentioned in https://github.com/haskell/haddock/pull/766#issue-172505043. This PR fixes it.
- - - - -
e127e0ab by Ben Gamari at 2019-10-06T15:12:06-04:00
Fix a few haddock issues

- - - - -
3a0f5c89 by Zubin Duggal at 2019-10-07T17:56:13-04:00
Fix crash when there are no srcspans in the file due to CPP

- - - - -
339c5ff8 by Alec Theriault at 2019-10-07T17:56:13-04:00
Prefer un-hyperlinked sources to no sources

It is possible to fail to extract an HIE ast. This is however not a
reason to produce _no_ output - we should still make a colorized HTML
page.

- - - - -
d47ef478 by Alec Theriault at 2019-10-07T17:56:13-04:00
Add a regression test for haskell/haddock#1091

Previously, this input would crash Haddock.

- - - - -
ed7c8b0f by Alec Theriault at 2019-10-07T20:56:48-04:00
Add Hyperlinker test cases for TH-related stuff

Hopefully this will guard against regressions around quasiquotes, TH
quotes, and TH splices.

- - - - -
d00436ab by Andreas Klebinger at 2019-10-21T15:53:03+02:00
Refactor for withTiming changes.

- - - - -
4230e712 by Ben Gamari at 2019-10-22T09:36:37-04:00
Merge pull request haskell/haddock#1101 from AndreasPK/withTimingRefactor

Refactor for withTiming changes.
- - - - -
d155c5f4 by Ryan Scott at 2019-10-23T10:37:17-04:00
Reify oversaturated data family instances correctly (#1103)

This fixes haskell/haddock#1103 by adapting the corresponding patch for GHC (see
https://gitlab.haskell.org/ghc/ghc/issues/17296 and
https://gitlab.haskell.org/ghc/ghc/merge_requests/1877).

- - - - -
331a5adf by Sebastian Graf at 2019-10-25T17:14:40+02:00
Refactor for OutputableBndrId changes

- - - - -
48a490e0 by Ben Gamari at 2019-10-27T10:16:16-04:00
Merge pull request haskell/haddock#1105 from sgraf812/wip/flexible-outputable

Refactor for OutputableBndrId changes
- - - - -
f62a7dfc by Sebastian Graf at 2019-11-01T11:54:16+00:00
Define `XRec` for location information and get rid of `HasSrcSpan`

In https://gitlab.haskell.org/ghc/ghc/merge_requests/1970 I propose a
simpler way to encode location information into the GHC and Haddock AST
while incurring no cost for e.g. TH which doesn't need location
information.

These are just changes that have to happen in lock step.

- - - - -
d9b242ed by Ryan Scott at 2019-11-03T13:20:03-05:00
Changes from haskell/haddock#14579

We now have a top-level `tyConAppNeedsKindSig` function, which means
that we can delete lots of code in `Convert`.

(cherry picked from commit cfd682c5fd03b099a3d78c44f9279faf56a0ac70)

- - - - -
dfd42406 by Sebastian Graf at 2019-11-04T07:02:14-05:00
Define `XRec` for location information and get rid of `HasSrcSpan`

In https://gitlab.haskell.org/ghc/ghc/merge_requests/1970 I propose a
simpler way to encode location information into the GHC and Haddock AST
while incurring no cost for e.g. TH which doesn't need location
information.

These are just changes that have to happen in lock step.

- - - - -
0b15be7c by Ben Gamari at 2019-11-09T13:21:33-05:00
Import isRuntimeRepVar from Type rather than TyCoRep

isRuntimeRepVar is not longer exported from TyCoRep due to ghc#17441.

- - - - -
091f7283 by Ben Gamari at 2019-11-10T12:47:06-05:00
Bump to GHC 8.10

- - - - -
e88c71f2 by Ben Gamari at 2019-11-14T00:22:24-05:00
Merge pull request haskell/haddock#1110 from haskell/wip/T17441

Import isRuntimeRepVar from Type rather than TyCoRep
- - - - -
4e0bbc17 by Ben Gamari at 2019-11-14T00:22:45-05:00
Version bumps for GHC 8.11

- - - - -
0e85ceb4 by Ben Gamari at 2019-11-15T11:59:45-05:00
Bump to GHC 8.10

- - - - -
00d6d68b by Ben Gamari at 2019-11-16T18:35:58-05:00
Bump ghc version to 8.11

- - - - -
dde1fc3f by Ben Gamari at 2019-11-16T20:40:37-05:00
Drop support for base 4.13

- - - - -
f52e331d by Vladislav Zavialov at 2019-11-24T13:02:28+03:00
Update Hyperlinker.Parser.classify to use ITdollar

- - - - -
1ad96198 by Vladislav Zavialov at 2019-11-28T16:12:33+03:00
Remove HasSrcSpan (#17494)

- - - - -
651afd70 by Herbert Valerio Riedel at 2019-12-08T12:08:16+01:00
Document error-prone conditional definition of instances

This can easily trip up people if one isn't aware of it. Usually it's
better to avoid this kind of conditionality especially for typeclasses
for which there's an compat-package as conditional instances like
these tend to fragment the ecosystem into those packages that go the
extra mile to provide backward compat via those compat-packages and
those that fail to do so.

- - - - -
b521af56 by Herbert Valerio Riedel at 2019-12-08T12:09:54+01:00
Fix build-failure regression for base < 4.7

The `$>` operator definition is available only since base-4.7 which
unfortunately wasn't caught before release to Hackage (but has been
fixed up by a metadata-revision)

This commit introduces a `CompatPrelude` module which allows to reduce
the amount of CPP by ousting it to a central location, i.e. the new
`CompatPrelude` module. This pattern also tends to reduce the tricks
needed to silence unused import warnings.

Addresses haskell/haddock#1119

- - - - -
556c375d by Sylvain Henry at 2020-01-02T19:01:55+01:00
Fix after Iface modules renaming

- - - - -
bd6c53e5 by Sylvain Henry at 2020-01-07T00:48:48+01:00
hsyl20-modules-renamer

- - - - -
fb23713b by Ryan Scott at 2020-01-08T07:41:13-05:00
Changes for GHC#17608

See https://gitlab.haskell.org/ghc/ghc/merge_requests/2372

- - - - -
4a4dd382 by Ryan Scott at 2020-01-25T08:08:26-05:00
Changes for GHC#17566

See https://gitlab.haskell.org/ghc/ghc/merge_requests/2469

- - - - -
e782a44d by Sylvain Henry at 2020-01-26T02:12:37+01:00
Rename PackageConfig into UnitInfo

- - - - -
ba3c9f05 by Sylvain Henry at 2020-01-26T02:12:37+01:00
Rename lookupPackage

- - - - -
ab37f9b3 by Ben Gamari at 2020-01-29T13:00:44-05:00
Merge pull request haskell/haddock#1125 from haskell/wip/T17566-take-two

Changes for GHC#17566
- - - - -
3ebd5ae0 by Ryan Scott at 2020-01-31T05:56:50-05:00
Merge branch 'wip-hsyl20-package-refactor' into ghc-head

- - - - -
602a747e by Richard Eisenberg at 2020-02-04T09:05:43+00:00
Echo GHC's removal of PlaceHolder module

This goes with GHC's !2083.

- - - - -
ccfe5679 by Sylvain Henry at 2020-02-10T10:13:56+01:00
Module hierarchy: runtime (cf haskell/haddock#13009)

- - - - -
554914ce by Cale Gibbard at 2020-02-10T16:10:39-05:00
Fix build of haddock in stage1

We have to use the correct version of the GHC API, but the version of the compiler itself doesn't matter.

- - - - -
5b6fa2a7 by John Ericson at 2020-02-10T16:18:07-05:00
Noramlize `tested-with` fields in cabal files

- - - - -
e6eb3ebe by Vladislav Zavialov at 2020-02-16T13:25:26+03:00
No MonadFail/Alternative for P

- - - - -
90e181f7 by Ben Gamari at 2020-02-18T14:13:47-05:00
Merge pull request haskell/haddock#1129 from obsidiansystems/wip/fix-stage1-build

Fix build of haddock in stage1
- - - - -
93b64636 by Sylvain Henry at 2020-02-19T11:20:27+01:00
Modules: Driver (#13009)

- - - - -
da4f6c7b by Vladislav Zavialov at 2020-02-22T15:33:02+03:00
Use RealSrcSpan in InstMap

- - - - -
479b1b50 by Ben Gamari at 2020-02-23T10:28:13-05:00
Merge remote-tracking branch 'upstream/ghc-head' into HEAD

- - - - -
55ecacf0 by Sylvain Henry at 2020-02-25T15:18:27+01:00
Modules: Core (#13009)

- - - - -
60867b3b by Vladislav Zavialov at 2020-02-28T15:53:52+03:00
Ignore the BufLoc/BufSpan added in GHC's !2516

- - - - -
1e5506d3 by Sylvain Henry at 2020-03-02T12:32:43+01:00
Modules: Core (#13009)

- - - - -
6fb53177 by Richard Eisenberg at 2020-03-09T14:49:40+00:00
Changes in GHC's !1913.

- - - - -
30b792ea by Ben Gamari at 2020-03-16T12:45:02-04:00
Merge pull request haskell/haddock#1130 from hsyl20/wip/hsyl20-modules-core2

Modules: Core (#13009)
- - - - -
cd761ffa by Sylvain Henry at 2020-03-18T15:24:00+01:00
Modules: Types

- - - - -
b6646486 by Ben Gamari at 2020-03-18T14:42:43-04:00
Merge pull request haskell/haddock#1133 from hsyl20/wip/hsyl20/modules/types

Modules: Types
- - - - -
9325d734 by Kleidukos at 2020-03-19T12:38:31-04:00
Replace the 'caption' class so that the collapsible sections are shown

- - - - -
5e2bb555 by Kleidukos at 2020-03-19T12:38:31-04:00
Force ghc-8.8.3

- - - - -
c6fcd0aa by Kleidukos at 2020-03-19T12:38:31-04:00
Update test fixtures

- - - - -
5c849cb1 by Sylvain Henry at 2020-03-20T09:34:39+01:00
Modules: Types

- - - - -
7f439155 by Alec Theriault at 2020-03-20T20:17:01-04:00
Merge branch 'ghc-8.8' into ghc-8.10

- - - - -
b7904e5c by Alina Banerjee at 2020-03-20T20:24:17-04:00
Update parsing to strip whitespace from table cells (#1074)

* Update parsing to strip leading & trailing whitespace from table cells

* Update fixture data to disallow whitespaces at both ends in table cells

* Add test case for whitespaces stripped from both ends of table cells

* Update table reference test data for html tests

- - - - -
b9d60a59 by Alec Theriault at 2020-03-22T11:46:42-04:00
Clean up warnings

  * unused imports
  * imports of `Data.List` without import lists
  * missing `CompatPrelude` file in `.cabal`

- - - - -
0c317dbe by Alec Theriault at 2020-03-22T18:46:54-04:00
Fix NPM security warnings

This was done by calling `npm audit fix`. Note that the security issues
seem to have been entirely in the build dependencies, since the output
JS has not changed.

- - - - -
6e306242 by Alec Theriault at 2020-03-22T20:10:52-04:00
Tentative 2.24 release

Adjusted changelogs and versions in `.cabal` files in preparation for
the upcoming release bundled with GHC 8.10.

- - - - -
1bfb4645 by Ben Gamari at 2020-03-23T16:40:54-04:00
Merge commit '3c2944c037263b426c4fe60a3424c27b852ea71c' into HEAD

More changes from the GHC types module refactoring.

- - - - -
be8c6f3d by Alec Theriault at 2020-03-26T20:10:53-04:00
Update `.travis.yml` to work with GHC 8.10.1

  * Regenerated the Travis file with `haskell-ci`

  * Beef up `.cabal` files with more `tested-with` information

- - - - -
b025a9c6 by Alec Theriault at 2020-03-26T20:10:53-04:00
Update README

Removed some out of date links/info, added some more useful links.

  * badge to Hackage
  * update old trac link
  * `ghc-head` => `ghc-8.10`
  * `cabal new-*` is now `cabal v2-*` and it should Just Work
  * `--test-option='--accept'` is the way to accept testsuite output

- - - - -
564d889a by Alec Theriault at 2020-03-27T20:34:33-04:00
Fix crash in `haddock-library` on unicode space

Our quickcheck tests for `haddock-library` stumbled across an edge case
input that was causing Haddock to crash: it was a unicode space
character.

The root cause of the crash is that we were implicitly assuming that
if a space character was not " \t\f\v\r", it would have to be "\n".
We fix this by instead defining horizontal space as: any space character
that is not '\n'.

Fixes haskell/haddock#1142

- - - - -
2d360ba1 by Alec Theriault at 2020-03-27T21:57:32-04:00
Disallow qualified uses of reserved identifiers

This a GHC bug (https://gitlab.haskell.org/ghc/ghc/issues/14109) too,
but it is a relatively easy fix in Haddock. Note that the fix must live
in `haddock-api` instead of `haddock-library` because we can only really
decide if an identifier is a reserved one by asking the GHC lexer.

Fixes haskell/haddock#952

- - - - -
47ae22ed by Alec Theriault at 2020-03-28T13:36:25-04:00
Remove unused `Haddock.Utils` functions

  * removed functions in `Haddock.Utils` that were not used anywhere
    (or exported from the `haddock-api` package)

  * moved GHC-specific utils from `Haddock.Utils` to `Haddock.GhcUtils`

- - - - -
c0291245 by Alec Theriault at 2020-03-28T13:36:25-04:00
Use TTG empty extensions to remove some `error`'s

None of these error cases should ever have been reachable, so this is
just a matter of leveraging the type system to assert this.

  * Use the `NoExtCon` and `noExtCon` to handle case matches for no
    extension constructors, instead of throwing an `error`.

  * Use the extension field of `HsSpliceTy` to ensure that this variant
    of `HsType` cannot exist in an `HsType DocNameI`.

- - - - -
0aff8dc4 by Alec Theriault at 2020-03-28T13:36:25-04:00
Use `unLoc`/`noLoc` from GHC instead of `unL`/`reL`

 * `unL` is already defined by GHC as `unLoc`
 * `reL` is already defined by GHC as `noLoc` (in a safer way too!)
 * Condense `setOutputDir` and add a about exporting from GHC

Fixes haskell/haddock#978

- - - - -
bf6f2fb7 by Alec Theriault at 2020-03-28T13:36:25-04:00
Cleanup up GHC flags in `.cabal` files

  * enable more useful warning flags in `haddock-api`, handle the new
    warnings generated

  * remove `-fwarn-tabs` (now we'd use `-Wtabs`, but this has been in
    `-Wall` for a while now)

- - - - -
c576fbf1 by Alec Theriault at 2020-03-28T13:36:25-04:00
`haddock-library` document header level

Document the fact the header level is going to always be between 1 and 6
inclusive. Along the way, I also optimized the parsing code a bit.

- - - - -
71bce0ee by Alec Theriault at 2020-03-28T14:26:27-04:00
Disallow links in section headers

This is quite straightforward to implement, since we already had a
function `docToHtmlNoAnchors` (which we used to generate the link in the
sidebar "Contents").

This breaks test `Bug387`, but that test case has aged badly: we now
automatically generate anchors for all headings, so manually adding an
anchor in a section makes no sense. Nested anchors are, as pointed out
in haskell/haddock#1054, disallowed by the HTML standard.

Fixes haskell/haddock#1054

- - - - -
b461b0ed by Sylvain Henry at 2020-03-30T10:34:23+02:00
Modules: type checker

- - - - -
cd8cd1ee by Ben Gamari at 2020-03-31T12:45:02-04:00
Merge pull request haskell/haddock#1152 from hsyl20/wip/hsyl20/modules/tc

Module renaming
- - - - -
5e8f8ea7 by Felix Yan at 2020-04-01T17:58:06-07:00
Allow QuickCheck 2.14

Builds fine and all tests pass.
- - - - -
dc6b1633 by Sylvain Henry at 2020-04-05T16:43:44+02:00
Module renaming: amend previous patch

- - - - -
eee2f4ae by Ryan Scott at 2020-04-05T09:04:43-07:00
Fix haskell/haddock#1050 by filtering out invisible AppTy arguments

This makes the `synifyType` case for `AppTy` more intelligent by
taking into consideration the visibilities of each `AppTy` argument
and filtering out any invisible arguments, as they aren't intended
to be displayed in the source code. (See haskell/haddock#1050 for an example of what
can happen if you fail to filter these out.)

Along the way, I noticed that a special `synifyType` case for
`AppTy t1 (CoercionTy {})` could be consolidated with the case below
it, so I took the opportunity to tidy this up.

- - - - -
23eb99e8 by Ben Gamari at 2020-04-07T11:19:58-04:00
Merge pull request haskell/haddock#1154 from hsyl20/wip/hsyl20/modules/tc

Module renaming: amend previous patch
- - - - -
072d994d by Ryan Scott at 2020-04-07T19:32:47-04:00
Make NoExtCon fields strict

These changes are a part of a fix for
[GHC#17992](https://gitlab.haskell.org/ghc/ghc/issues/17992).

- - - - -
d8ebf6c8 by Ignat Insarov at 2020-04-09T21:15:01-04:00
Recode Doc to Json. (#1159)

* Recode Doc to Json.

* More descriptive field labels.
- - - - -
52df4b4e by Sylvain Henry at 2020-04-10T12:39:18+02:00
Module renaming

- - - - -
d9ab8ec8 by Cale Gibbard at 2020-04-14T11:43:34-04:00
Add instance of XCollectPat for DocNameI

- - - - -
323d221d by Cale Gibbard at 2020-04-14T11:43:34-04:00
Rename XCollectPat -> CollectPass

- - - - -
2df80867 by Alec Theriault at 2020-04-15T07:30:51-07:00
Prune docstrings that are never rendered

When first creating a Haddock interface, trim `ifaceDocMap` and
`ifaceArgMap` to not include docstrings that can never appear in the
final output. Besides checking with GHC which names are exported, we
also need to keep all the docs attached to instance declarations (it is
much tougher to detect when an instance is fully private).

This change means:

  * slightly smaller interface files (7% reduction on boot libs)
  * slightly less work to do processing docstrings that aren't used
  * no warnings in Haddock's output about private docstrings (see haskell/haddock#1070)

I've tested manually that this does not affect any of the boot library
generated docs (the only change in output was some small re-ordering in
a handful of instance lists). This should mean no docstrings have been
incorrectly dropped.

- - - - -
f49c90cc by Alec Theriault at 2020-04-15T07:30:51-07:00
Don't warn about missing links in miminal sigs

When renaming the Haddock interface, never emit warnings when renaming a
minimal signature. Also added some documention around `renameInterface`.

Minimal signatures intentionally include references to potentially
un-exported methods (see the discussion in haskell/haddock#330), so it is expected
that they will not always have a link destination. On the principle
that warnings should always be resolvable, this shouldn't produce a
warning. See haskell/haddock#1070.

- - - - -
a9eda64d by Ben Gamari at 2020-04-17T09:27:35-04:00
Merge pull request haskell/haddock#1160 from hsyl20/wip/hsyl20/modules/systools

Module renaming
- - - - -
f40d7879 by Cale Gibbard at 2020-04-20T11:30:38-04:00
Merge remote-tracking branch 'origin/ghc-head' into wip/ttg-con-pat

- - - - -
a50e7753 by Ben Gamari at 2020-04-20T11:36:10-04:00
Merge pull request haskell/haddock#1165 from obsidiansystems/wip/ttg-con-pat

Trees that Grow refactor (GHC !2553)
- - - - -
6a24795c by Alec Theriault at 2020-04-21T08:06:45-07:00
Fallback to `hiDecl` when `extractDecl` fails

Sometimes, the declaration being exported is a subdecl (for instance, a
record accessor getting exported at the top-level). For these cases,
Haddock has to find a way to produce some synthetic sensible top-level
declaration. This is done with `extractDecl`.

As is shown by haskell/haddock#1067, this is sometimes impossible to do just at a
syntactic level (for instance when the subdecl is re-exported). In these
cases, the only sensible thing to do is to try to reify a declaration
based on a GHC `TyThing` via `hiDecl`.

- - - - -
eee1a8b7 by Sylvain Henry at 2020-04-24T15:46:05+02:00
Module structure

- - - - -
50b9259c by Iñaki at 2020-04-25T18:38:11-04:00
Add support for custom section anchors (#1179)

This allows to have stable anchors for groups, even if the set of
groups in the documentation is altered.

The syntax for setting the anchor of a group is

-- * Group name #desiredAnchor#

Which will produce an html anchor of the form '#g:desiredAnchor'

Co-authored-by: Iñaki García Etxebarria <git at inaki.blueleaf.cc>
- - - - -
4003c97a by Ben Gamari at 2020-04-26T09:35:15-04:00
Merge pull request haskell/haddock#1166 from hsyl20/wip/hsyl20/modules/utils

Module structure
- - - - -
5206ab60 by Sylvain Henry at 2020-04-27T16:47:39+02:00
Renamed UnitInfo fields

- - - - -
c32c333b by Sylvain Henry at 2020-04-27T17:32:58+02:00
UnitId has been renamed into Unit

- - - - -
3e87db64 by Sylvain Henry at 2020-04-27T17:36:00+02:00
Fix for GHC.Unit.* modules

- - - - -
ae3323a7 by Ben Gamari at 2020-04-29T12:36:37-04:00
Merge pull request haskell/haddock#1183 from hsyl20/wip/hsyl20/unitid

Refactoring of Unit code
- - - - -
b105564a by Artem Pelenitsyn at 2020-05-03T08:14:10+01:00
add dependency on exceptions because GHC.Exception was boiled down (ghc haskell/haddock#18075)

- - - - -
9857eff3 by Zubin Duggal at 2020-05-04T18:48:25+01:00
Atomic update of NameCache in readHieFile

- - - - -
86bbb226 by Sylvain Henry at 2020-05-14T16:36:27+02:00
Fix after Config module renaming

- - - - -
a4bbdbc2 by Gert-Jan Bottu at 2020-05-15T22:09:44+02:00
Explicit Specificity Support for Haddock

- - - - -
46199daf by Ben Gamari at 2020-05-19T09:59:56-04:00
Merge pull request haskell/haddock#1192 from hsyl20/hsyl20/modules-config

Fix after Config module renaming
- - - - -
f9a9d2ba by Gert-Jan Bottu at 2020-05-20T16:48:38-04:00
Explicit Specificity Support for Haddock

- - - - -
55c5b7ea by Ben Gamari at 2020-05-21T00:32:02-04:00
Merge commit 'a8d7e66da4dcc3b242103271875261604be42d6e' into ghc-head

- - - - -
a566557f by Cale Gibbard at 2020-05-21T16:02:06-04:00
isBootSummary now produces a result of type IsBootInterface

- - - - -
ea52f905 by Zubin Duggal at 2020-05-24T17:55:48+01:00
update for hiefile-typeclass-info

- - - - -
49ba7a67 by Willem Van Onsem at 2020-05-25T12:23:01-04:00
Use floor over round to calculate the percentage (#1195)

If we compile documentation where only a small fraction is undocumented,
it is misleading to see 100% coverage - 99% is more intuitive.

Fixes haskell/haddock#1194
- - - - -
c025ebf1 by Ben Gamari at 2020-05-29T14:32:42-04:00
Merge pull request haskell/haddock#1185 from obsidiansystems/boot-disambig

isBootSummary now produces a result of type IsBootInterface
- - - - -
74ab9415 by Ben Gamari at 2020-05-29T20:23:39-04:00
haddock: Bounds bumps for GHC 8.12

- - - - -
b40be944 by Ben Gamari at 2020-06-03T17:02:31-04:00
testsuite: Update expected output for simplified subsumption

- - - - -
624be71c by Ryan Scott at 2020-06-05T12:43:23-04:00
Changes for GHC#18191

See https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3337.

- - - - -
fbd8f7ce by Sylvain Henry at 2020-06-08T15:31:47+02:00
Fix after unit refactoring

- - - - -
743fda4d by Ben Gamari at 2020-06-09T12:09:58-04:00
Merge pull request haskell/haddock#1202 from hsyl20/wip/hsyl20/unitid-ii

Fix after unit refactoring
- - - - -
d07a06a9 by Ryan Scott at 2020-06-13T07:16:55-04:00
Use HsForAllTelescope (GHC#18235)

- - - - -
389bb60d by Ben Gamari at 2020-06-13T15:30:52-04:00
haddock: Bounds bumps for GHC 8.12

- - - - -
7a377f5f by Ben Gamari at 2020-06-17T14:53:16-04:00
Merge pull request haskell/haddock#1199 from bgamari/wip/ghc-8.12

haddock: Bounds bumps for GHC 8.12
- - - - -
9fd9e586 by Krzysztof Gogolewski at 2020-06-17T16:09:07-04:00
Adapt Haddock to LinearTypes

See ghc/ghc!852.

- - - - -
46fe7636 by Ben Gamari at 2020-06-18T14:20:02-04:00
Merge remote-tracking branch 'origin/ghc-head' into ghc-head

- - - - -
35a3c9e2 by Zubin Duggal at 2020-06-21T21:19:18+05:30
Use functions exported from HsToCore

- - - - -
8abe3928 by Ben Gamari at 2020-06-24T13:53:39-04:00
Merge pull request haskell/haddock#1204 from wz1000/wip/haddock-hstocore

Use functions exported from GHC.HsToCore.Docs
- - - - -
22f2c937 by Matthías Páll Gissurarson at 2020-06-26T19:07:03+02:00
Adapt Haddock for QualifiedDo

- - - - -
3f6208d7 by Vladislav Zavialov at 2020-06-28T14:28:16+03:00
Handle LexicalNegation's ITprefixminus

- - - - -
03a19f41 by Sylvain Henry at 2020-07-02T09:37:38+02:00
Rename hsctarget into backend

- - - - -
ea17ff23 by Andreas Klebinger at 2020-07-02T17:44:18+02:00
Update for UniqFM changes.

- - - - -
9872f2f3 by Ben Gamari at 2020-07-09T10:39:19-04:00
Merge pull request haskell/haddock#1209 from AndreasPK/wip/typed_uniqfm

Update for UniqFM changes.
- - - - -
68f7b668 by Krzysztof Gogolewski at 2020-07-12T18:16:57+02:00
Sync with GHC removing {-# CORE #-} pragma

See ghc ticket haskell/haddock#18048

- - - - -
eb372681 by Sylvain Henry at 2020-07-20T11:41:30+02:00
Rename hscTarget into backend

- - - - -
fb7f78bf by Ben Gamari at 2020-07-21T12:15:25-04:00
Merge pull request haskell/haddock#1214 from hsyl20/wip/hsyl20/hadrian/ncg

Rename hscTarget into backend
- - - - -
1e8f5b56 by Ben Gamari at 2020-07-23T09:11:50-04:00
Merge commit '904dce0cafe0a241dd3ef355775db47fc12f434d' into ghc-head

- - - - -
d8fd1775 by Zubin Duggal at 2020-07-23T18:46:40+05:30
Update for modular ping pong

- - - - -
8416f872 by Ben Gamari at 2020-07-23T09:35:03-04:00
Merge pull request haskell/haddock#1200 from wz1000/wip/wz1000-modular-ping-pong

Modular ping pong
- - - - -
a24a8577 by Ben Gamari at 2020-07-28T15:23:36-04:00
Bump GHC version to 9.0

- - - - -
6a51c9dd by Sylvain Henry at 2020-08-05T18:47:05+02:00
Fix after Outputable refactoring

- - - - -
c05e1c99 by Ben Gamari at 2020-08-10T14:41:41-04:00
Merge pull request haskell/haddock#1223 from hsyl20/wip/hsyl20/dynflags/exception

Fix after Outputable refactoring
- - - - -
d964f15b by Sylvain Henry at 2020-08-12T11:58:49+02:00
Fix after HomeUnit

- - - - -
8e6d5b23 by Ben Gamari at 2020-08-12T14:25:30-04:00
Merge pull request haskell/haddock#1225 from hsyl20/wip/hsyl20/plugins/homeunit

Fix after HomeUnit
- - - - -
8c7880fe by Sylvain Henry at 2020-08-17T14:13:29+02:00
Remove Ord FastString instance

- - - - -
8ea410db by Alex Biehl at 2020-08-19T10:56:32+02:00
Another round of `npm audit fix` (#1228)

This should shut down the warnings on Github. Note that the security issues
seem to have been entirely in the build dependencies, since the output
JS has not changed.

Last NPM dependency audit happend in d576b2327e2bc117f912fe0a9d595e9ae62614e0

Co-authored-by: Alex Biehl <alex.biehl at target.com>
- - - - -
7af6e2a8 by Ben Gamari at 2020-08-31T13:59:34-04:00
Merge pull request haskell/haddock#1226 from hsyl20/wip/hsyl20/fs_ord

Remove Ord FastString instance
- - - - -
ffbc8702 by Alan Zimmerman at 2020-09-07T21:47:41+01:00
Match GHC for haskell/haddock#18639, remove GENERATED pragma

- - - - -
a93f1268 by Alan Zimmerman at 2020-09-07T23:11:38+01:00
Merge pull request haskell/haddock#1232 from haskell/wip/T18639-remove-generated-pragma,

Match GHC for haskell/haddock#18639, remove GENERATED pragma
- - - - -
1f605d50 by Ben Gamari at 2020-09-14T18:30:01-04:00
Bump GHC version to 9.1

- - - - -
6599df62 by Vladislav Zavialov at 2020-09-18T14:05:15+03:00
Bump base upper bound to 4.16

- - - - -
a01b3c43 by Ben Gamari at 2020-09-22T15:41:48-04:00
Update hypsrc-test for QuickLook

This appears to be a spurious change.

- - - - -
e9cc6cac by Vladislav Zavialov at 2020-09-26T21:00:12+03:00
Updates for the new linear types syntax: a %p -> b

- - - - -
30e3ca7c by Sylvain Henry at 2020-09-29T11:18:32-04:00
Update for parser (#1234)


- - - - -
b172f3e3 by Vladislav Zavialov at 2020-09-30T01:01:30+03:00
Updates for the new linear types syntax: a %p -> b

- - - - -
0b9c08d3 by Sylvain Henry at 2020-09-30T11:02:33+02:00
Adapt to GHC parser changes

- - - - -
b9540b7a by Sylvain Henry at 2020-10-12T09:13:38-04:00
Don't pass the HomeUnitId (#1239)


- - - - -
34762e80 by HaskellMouse at 2020-10-13T12:58:04+03:00
Changed tests due to unification of `Nat` and `Natural`

in the follwing merge request:
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3583

- - - - -
256f86b6 by Vladislav Zavialov at 2020-10-15T10:48:03+03:00
Add whitespace in: map ($ v)

- - - - -
4a3f711b by Alan Zimmerman at 2020-10-19T08:57:27+01:00
Match GHC, adding IsUnicodeSyntax field to HsFunTy and HsScaled

- - - - -
072cdd21 by Alan Zimmerman at 2020-10-21T14:48:28-04:00
Match GHC, adding IsUnicodeSyntax field to HsFunTy and HsScaled

(cherry picked from commit a7d1d8e034d25612d5d08ed8fdbf6f472aded4a1)

- - - - -
9e09a445 by Alan Zimmerman at 2020-10-21T23:53:34-04:00
Match GHC, adding IsUnicodeSyntax field to HsFunTy and HsScaled

(cherry picked from commit a7d1d8e034d25612d5d08ed8fdbf6f472aded4a1)

- - - - -
636d7de3 by Sylvain Henry at 2020-10-26T14:31:54-04:00
GHC.Driver.Types refactoring (#1242)


- - - - -
a597f000 by Ryan Scott at 2020-10-29T04:18:05-04:00
Adapt to the removal of Hs{Boxed,Constraint}Tuple

See ghc/ghc!4097 and GHC#18723.

- - - - -
b96660fb by Ryan Scott at 2020-10-30T04:53:05-04:00
Adapt to HsConDecl{H98,GADT}Details split

Needed for GHC#18844.

- - - - -
c287d82c by Ryan Scott at 2020-10-30T19:35:59-04:00
Adapt to HsOuterTyVarBndrs

These changes accompany ghc/ghc!4107, which aims to be a fix
for haskell/haddock#16762.

- - - - -
a34c31a1 by Ryan Scott at 2020-11-13T13:38:34-05:00
Adapt to splitPiTysInvisible being renamed to splitInvisPiTys

This is a part of !4434, a fix for GHC#18939.

- - - - -
66ea459d by Sylvain Henry at 2020-11-16T10:59:30+01:00
Fix after Plugins moved into HscEnv

- - - - -
508556d8 by Ben Gamari at 2020-11-18T15:47:40-05:00
Merge pull request haskell/haddock#1253 from hsyl20/wip/hsyl20/plugins/hscenv

Fix after Plugins moved into HscEnv
- - - - -
620fec1a by Andreas Klebinger at 2020-11-24T20:51:59+01:00
Update for changes in GHC's Pretty

- - - - -
01cc13ab by Richard Eisenberg at 2020-11-25T23:18:35-05:00
Avoid GHC#18932.

- - - - -
8d29ba21 by Cale Gibbard at 2020-11-25T23:18:35-05:00
Add type arguments to PrefixCon

- - - - -
414d5f87 by Sylvain Henry at 2020-11-30T17:06:04+01:00
DynFlags's unit fields moved to HscEnv

- - - - -
e356668c by Ben Gamari at 2020-11-30T11:11:37-05:00
Merge pull request haskell/haddock#1258 from hsyl20/wip/hsyl20/hscenv/unitstate

Unit fields moved from DynFlags to HscEnv
- - - - -
7cf552f1 by Ben Gamari at 2020-12-03T10:31:27-05:00
Merge pull request haskell/haddock#1257 from AndreasPK/wip/andreask/opt_dumps

Update for changes in GHC's Pretty
- - - - -
fc0871c3 by Veronika Romashkina at 2020-12-08T16:35:33+01:00
Fix docs links from Darcs to GitHub in intro (#1262)


- - - - -
7059e808 by Veronika Romashkina at 2020-12-08T16:36:16+01:00
Use gender neutral word in docs (#1260)


- - - - -
1b16e5ee by Maximilian Tagher at 2020-12-08T16:40:03+01:00
Allow scrolling search results (#1235)

Closes https://github.com/haskell/haddock/issues/1231
- - - - -
8a118c01 by dependabot[bot] at 2020-12-08T16:40:25+01:00
Bump bl from 1.2.2 to 1.2.3 in /haddock-api/resources/html (#1255)

Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3)

Signed-off-by: dependabot[bot] <support at github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- - - - -
c89ff587 by Xia Li-yao at 2020-12-08T16:42:17+01:00
Allow more characters in anchor following module reference (#1220)


- - - - -
14af7d64 by Xia Li-yao at 2020-12-08T16:43:05+01:00
Add dangling changes from branches ghc-8.6 and ghc-8.8 (#1243)

* Fix multiple typos and inconsistencies in doc/markup.rst

Note: I noticed some overlap with haskell/haddock#1112 from @wygulmage and haskell/haddock#1081 from
@parsonsmatt after creating these proposed changes - mea culpa for not
looking at the open PRs sooner.

* Fix haskell/haddock#1113 If no Signatures, no section of index.html

* Change the formatting of missing link destinations

The current formatting of the missing link destination does not really
help user to understand the reasons of the missing link.

To address this, I've changed the formatting in two ways:

- the missing link symbol name is now fully qualified. This way you
immediately know which haskell module cannot be linked. It is then easier
to understand why this module does not have documentation (hidden module
or broken documentation).
- one line per missing link, that's more readable now that symbol name
can be longer due to qualification.

For example, before haddock was listing missing symbol such as:

```
could not find link destinations for:
  Word8 Word16 mapMaybe
```

Now it is listed as:

```
could not find link destinations for:
  - Data.Word.Word8
  - Data.Word.Word16
  - Data.Maybe.mapMaybe
```

* Add `--ignore-link-symbol` command line argument

This argument can be used multiples time. A missing link to a symbol
listed by `--ignore-link-symbol` won't trigger "missing link" warning.

* Forbid spaces in anchors (#1148)

* Improve error messages with context information (#1060)

Co-authored-by: Matt Audesse <matt at mattaudesse.com>
Co-authored-by: Mike Pilgrem <mpilgrem at users.noreply.github.com>
Co-authored-by: Guillaume Bouchard <guillaume.bouchard at tweag.io>
Co-authored-by: Pepe Iborra <pepeiborra at gmail.com>
- - - - -
89e3af13 by tomjaguarpaw at 2020-12-08T18:00:04+01:00
Enable two warnings (#1245)

because they will be soon be added to -Wall.

See https://gitlab.haskell.org/ghc/ghc/-/issues/15656
- - - - -
c3320f8d by Willem Van Onsem at 2020-12-08T18:26:55+01:00
simplify calculating percentages fixing haskell/haddock#1194 (#1236)


- - - - -
685df308 by Alex Biehl at 2020-12-08T20:06:26+01:00
Changes for GHC#17566

See https://gitlab.haskell.org/ghc/ghc/merge_requests/2469

- - - - -
be3ec3c0 by Alex Biehl at 2020-12-08T20:06:26+01:00
Import intercalate

- - - - -
32c33912 by Matthías Páll Gissurarson at 2020-12-08T21:15:30+01:00
Adapt Haddock for QualifiedDo

- - - - -
31696088 by Alex Biehl at 2020-12-08T22:06:02+01:00
Fix haddock-library tests

- - - - -
fbc0998a by Alex Biehl at 2020-12-08T23:08:23+01:00
Move to GitHub CI (#1266)

* Initial version of ci.yml

This is a straight copy from Dmitrii Kovanikov's blog post
at https://kodimensional.dev/github-actions.

Will adapt to haddock in successive commits.

* Delete .travis.yml

* Modify to only test on ghc-8.10.{1,2}

* Use actions/setup-haskell at v1.1.4

* Relax QuickCheck bound on haddock-api

* Remove stack matrix for now

* Nail down to ghc-8.10 branch for now

* Pin index state to 2020-12-08T20:13:44Z for now

* Disable macOS and Windows tests for now for speed up
- - - - -
5b946b9a by tomjaguarpaw at 2020-12-10T19:01:41+01:00
Enable two warnings (#1245) (#1268)

because they will be soon be added to -Wall.

See https://gitlab.haskell.org/ghc/ghc/-/issues/15656
- - - - -
bc5a408f by dependabot[bot] at 2020-12-10T19:02:16+01:00
Bump ini from 1.3.5 to 1.3.7 in /haddock-api/resources/html (#1269)

Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support at github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- - - - -
d02995f1 by Andrew Martin at 2020-12-14T16:48:40-05:00
Update for boxed rep

- - - - -
a381aeff by Ben Gamari at 2020-12-15T15:13:30-05:00
Revert "Enable two warnings (#1245) (#1268)"

As this does not build on GHC `master`.

This reverts commit 7936692badfe38f23ae95b51fb7bd7c2ff7e9bce.

- - - - -
a63c0a9e by Ben Gamari at 2020-12-15T15:17:59-05:00
Revert "Update for boxed rep"

This reverts commit 4ffb30d8b637ccebecc81ce610f0af451ac8088d.

- - - - -
53bfbb29 by Ben Gamari at 2020-12-15T15:37:24-05:00
Merge remote-tracking branch 'upstream/ghc-head' into ghc-head

- - - - -
bae76a30 by Ben Gamari at 2020-12-16T02:44:42+00:00
Update output for nullary TyConApp optimisation (ghc/ghc!2952)

- - - - -
4b733b57 by Krzysztof Gogolewski at 2020-12-16T20:03:14+01:00
Display linear/multiplicity arrows correctly (#1238)

Previously we were ignoring multiplicity and displayed
a %1 -> b as a -> b.
- - - - -
ee463bd3 by Ryan Scott at 2020-12-16T16:55:23-05:00
Adapt to HsCoreTy (formerly NewHsTypeX) becoming a type synonym

Needed for !4417, the fix for GHC#15706 and GHC#18914.

- - - - -
ed0b02f8 by tomjaguarpaw at 2020-12-19T10:17:19+00:00
Enable two warnings (#1245) (#1268)

because they will be soon be added to -Wall.

See https://gitlab.haskell.org/ghc/ghc/-/issues/15656

- - - - -
d80bf8f5 by Sylvain Henry at 2020-12-21T10:09:25+01:00
Fix after binder collect changes

- - - - -
bf4c9d32 by Adam Gundry at 2020-12-23T21:35:01+00:00
Adapt to changes to GlobalRdrElt and AvailInfo

Needed for ghc/ghc!4467

- - - - -
37736c4c by John Ericson at 2020-12-28T12:27:02-05:00
Support a new ghc --make node type for parallel backpack upsweep

- - - - -
717bdeac by Vladislav Zavialov at 2020-12-29T10:50:02+03:00
Inline and fix getGADTConTypeG

The getGADTConTypeG used HsRecTy, which is at odds with GHC issue haskell/haddock#18782.

I noticed that getGADTConTypeG was only used in the Hoogle backend.
Interestingly, when handling H98 constructors, Hoogle converts RecCon to
PrefixCon (see Haddock.Backends.Hoogle.ppCtor).

So I changed getGADTConTypeG to handle RecConGADT in the same manner as
PrefixConGADT, and after this simplification moved it into the 'where'
clause of ppCtor, to the only place where it is used.

The practical effect of this change is as follows.
Consider this example:
	data TestH98 = T98 { bar::Int }
	data TestGADT where
	  TG :: { foo :: Int } -> TestGADT

Before this patch,  haddock --hoogle  used to produce:
	T98 :: Int -> TestH98
	[TG] :: {foo :: Int} -> TestGADT

Notice how the record syntax was discarded in T98 but not TG.
With this patch, we always produce signatures without record syntax:
	T98 :: Int -> TestH98
	[TG] :: Int -> TestGADT

I suspect this might also be a bugfix, as currently Hoogle doesn't seem
to render GADT record constructors properly.

- - - - -
cb1b8c56 by Andreas Abel at 2020-12-30T21:12:37+01:00
Build instructions: haddock-library and -api first!

- - - - -
b947f6ad by Ben Gamari at 2020-12-31T13:04:19-05:00
Merge pull request haskell/haddock#1281 from obsidiansystems/wip/backpack-j

Changes to support -j with backpack
- - - - -
120e1cfd by Hécate Moonlight at 2021-01-04T19:54:58+01:00
Merge pull request haskell/haddock#1282 from andreasabel/master

Build instructions: haddock-library and -api first!
- - - - -
fd45e41a by Ben Gamari at 2021-01-05T16:14:31-05:00
Merge remote-tracking branch 'origin/ghc-8.10' into ghc-9.0

- - - - -
b471bdec by Ben Gamari at 2021-01-05T16:23:02-05:00
Merge commit '1e56f63c3197e7ca1c1e506e083c2bad25d08793' into ghc-9.0

- - - - -
81cdbc41 by Alex Biehl at 2021-01-09T12:14:41+01:00
Prepare Haddock for being a GHC Plugin

- - - - -
b646d952 by Alex Biehl at 2021-01-09T12:14:41+01:00
Make Haddock a GHC Plugin

- - - - -
cc044674 by Alex Biehl at 2021-01-09T12:14:41+01:00
Add -j[n] CLI param to Haddock executable

It translates to `--ghcopt=-j[n]`

- - - - -
84a04073 by Alex Biehl at 2021-01-09T12:14:41+01:00
Abstract Monad for interface creation

I found that when running as a plugin the lookupName function (which
runs in Ghc monad) does not work correctly from the
typeCheckResultAction hook.

Instead, we abstracted the monad used when creating interfaces, so
that access to GHC session specific parts is explicit and so that the
TcM can provide their (correct) implementation of lookupName.

- - - - -
5be2c4f7 by Alex Biehl at 2021-01-09T12:14:41+01:00
Accept tests

- - - - -
8cefee9d by Alex Biehl at 2021-01-09T16:10:47+01:00
Add missing dependency for mtl

- - - - -
3681f919 by Ben Gamari at 2021-01-13T18:39:25-05:00
Merge remote-tracking branch 'origin/ghc-9.0' into ghc-head

- - - - -
33c6b152 by Hécate Moonlight at 2021-01-14T16:04:20+01:00
Merge pull request haskell/haddock#1273 from hsyl20/wip/hsyl20/arrows

Fix after binder collect changes
- - - - -
70d13e8e by Joachim Breitner at 2021-01-22T19:03:45+01:00
Make haddock more robust to changes to the `Language` data type

With the introduction of GHC2021, the `Languages` data type in GHC will
grow. In preparation of that (and to avoid changing haddock with each
new language), this change makes the code handle extensions to that data
type gracefully.

(cherry picked from commit c341dd7c9c3fc5ebc83a2d577c5a726f3eb152a5)

- - - - -
7d6dd57a by John Ericson at 2021-01-22T22:02:02+00:00
Add `NoGhcTc` instance now that it's not closed

- - - - -
e5fdaf0a by Alan Zimmerman at 2021-01-23T22:57:44+00:00
Merge pull request haskell/haddock#1293 from obsidiansystems/wip/fix-18936

Add `NoGhcTc` instance now that it's not closed
- - - - -
989a1e05 by Oleg Grenrus at 2021-01-24T16:11:46+03:00
Add import list to Data.List

- - - - -
368e144a by Ben Gamari at 2021-01-28T22:15:48+01:00
Adapt to "Make PatSyn immutable"

- - - - -
abe66c21 by Alfredo Di Napoli at 2021-02-01T08:05:35+01:00
Rename pprLogErrMsg to new name

- - - - -
e600e75c by Hécate Moonlight at 2021-02-05T14:53:00+01:00
Move CI to ghc-9.0

- - - - -
dd492961 by Vladislav Zavialov at 2021-02-05T14:53:00+01:00
Update cabal.project and README build instructions

- - - - -
31bd292a by Hécate Moonlight at 2021-02-05T15:03:56+01:00
Merge pull request haskell/haddock#1296 from Kleidukos/ghc-9.0

Merge the late additions to ghc-8.10 into ghc-9.0
- - - - -
6388989e by Vladislav Zavialov at 2021-02-05T17:41:57+03:00
Cleanup: fix build warnings

- - - - -
f99407ef by Daniel Rogozin at 2021-02-05T18:11:48+03:00
type level characters support for haddock (required for haskell/haddock#11342)

- - - - -
d8c6b26f by Hécate Moonlight at 2021-02-05T17:44:50+01:00
Add a CONTRIBUTING.md file

- - - - -
6a01ad98 by Hécate Moonlight at 2021-02-05T17:58:16+01:00
Merge pull request haskell/haddock#1312 from Kleidukos/proper-branch-etiquette

Add a CONTRIBUTING.md file
- - - - -
955eecc4 by Vladislav Zavialov at 2021-02-05T20:29:00+03:00
Merge commit 'a917dfd29f3103b69378138477514cbfa38558a9' into ghc-head

- - - - -
47b3d6ab by Hécate Moonlight at 2021-02-05T19:09:38+01:00
Amend the CONTRIBUTING.md file

- - - - -
23de6137 by Hécate Moonlight at 2021-02-05T19:16:49+01:00
Merge pull request haskell/haddock#1313 from Kleidukos/amend-contributing

Amend the CONTRIBUTING.md file
- - - - -
69026b59 by Krzysztof Gogolewski at 2021-02-05T23:05:56+01:00
Display linear/multiplicity arrows correctly (#1238)

Previously we were ignoring multiplicity and displayed
a %1 -> b as a -> b.

(cherry picked from commit b4b4d896d2d68d6c48e7db7bfe95c185ca0709cb)

- - - - -
ea026b78 by Oleg Grenrus at 2021-02-06T17:14:45+01:00
Add import list to Data.List

- - - - -
5204326f by Hécate Moonlight at 2021-02-06T17:15:44+01:00
Merge pull request haskell/haddock#1316 from Kleidukos/explicit-imports-to-data-list

Add import list to Data.List
- - - - -
1f4d2136 by Ben Gamari at 2021-02-06T11:53:31-05:00
Merge remote-tracking branch 'origin/ghc-head' into wip/ghc-head-merge

- - - - -
13f0d09a by Ben Gamari at 2021-02-06T11:53:45-05:00
Fix partial record selector warning

- - - - -
5c115f7e by Ben Gamari at 2021-02-06T11:55:52-05:00
Merge commit 'a917dfd29f3103b69378138477514cbfa38558a9' into wip/ghc-head-merge

- - - - -
b6fd8b75 by Ben Gamari at 2021-02-06T12:01:31-05:00
Merge commit '41964cb2fd54b5a10f8c0f28147015b7d5ad2c02' into wip/ghc-head-merge

- - - - -
a967194c by Ben Gamari at 2021-02-06T18:30:35-05:00
Merge branch 'wip/ghc-head-merge' into ghc-head

- - - - -
1f4c3a91 by MorrowM at 2021-02-07T01:52:33+02:00
Fix search div not scrolling

- - - - -
684b1287 by Iñaki García Etxebarria at 2021-02-07T16:13:04+01:00
Add support for labeled module references

Support a markdown-style way of annotating module references. For instance

-- | [label]("Module.Name#anchor")

will create a link that points to the same place as the module
reference "Module.Name#anchor" but the text displayed on the link will
be "label".

- - - - -
bdb55a5d by Hécate Moonlight at 2021-02-07T16:18:10+01:00
Merge pull request haskell/haddock#1319 from alexbiehl/alex/compat

Backward compat: Add support for labeled module references
- - - - -
6ca70991 by Hécate Moonlight at 2021-02-07T16:21:29+01:00
Merge pull request haskell/haddock#1314 from tweag/show-linear-backport

Backport haskell/haddock#1238 (linear types) to ghc-9.0
- - - - -
d9d73298 by Alex Biehl at 2021-02-07T17:46:25+01:00
Remove dubious parseModLink

Instead construct the ModLink value directly when parsing.

- - - - -
33b4d020 by Hécate Moonlight at 2021-02-07T17:52:05+01:00
Merge pull request haskell/haddock#1320 from haskell/alex/fix

Remove dubious parseModLink
- - - - -
54211316 by Hécate Moonlight at 2021-02-07T18:12:07+01:00
Merge pull request haskell/haddock#1318 from MorrowM/ghc-9.0

Fix search div not scrolling
- - - - -
19db679e by alexbiehl-gc at 2021-02-07T18:14:46+01:00
Merge pull request haskell/haddock#1317 from bgamari/wip/ghc-head-merge

Merge ghc-8.10 into ghc-head
- - - - -
6bc1e9e4 by Willem Van Onsem at 2021-02-07T18:25:30+01:00
simplify calculating percentages fixing haskell/haddock#1194 (#1236)

- - - - -
c8537cf8 by alexbiehl-gc at 2021-02-07T18:30:40+01:00
Merge pull request haskell/haddock#1322 from haskell/alex/forward-port

simplify calculating percentages fixing haskell/haddock#1194 (#1236)
- - - - -
2d47ae4e by alexbiehl-gc at 2021-02-07T18:39:59+01:00
Merge branch 'ghc-head' into ghc-9.0
- - - - -
849e4733 by Hécate Moonlight at 2021-02-07T18:43:19+01:00
Merge pull request haskell/haddock#1321 from Kleidukos/ghc-9.0

Merge ghc-9.0 into ghc-head
- - - - -
ee6095d7 by Sylvain Henry at 2021-02-08T11:36:38+01:00
Update for Logger

- - - - -
4ad688c9 by Alex Biehl at 2021-02-08T18:11:24+01:00
Merge pull request haskell/haddock#1310 from hsyl20/wip/hsyl20/logger2

Logger refactoring
- - - - -
922a9e0e by Ben Gamari at 2021-02-08T12:54:33-05:00
Merge remote-tracking branch 'upstream/ghc-head' into ghc-head

- - - - -
991649d2 by Sylvain Henry at 2021-02-09T10:55:17+01:00
Fix to build with HEAD

- - - - -
a8348dc2 by Hécate Moonlight at 2021-02-09T10:58:51+01:00
Merge pull request haskell/haddock#1327 from hsyl20/wip/hsyl20/logger2

Fix to build with HEAD
- - - - -
0abdbca6 by Fendor at 2021-02-09T20:06:15+01:00
Add UnitId to Target record

- - - - -
d5790a0e by Alex Biehl at 2021-02-11T10:32:32+01:00
Stable sort for (data/newtype) instances

- - - - -
8e6036f5 by Alex Biehl at 2021-02-11T10:32:32+01:00
Also make TyLit deterministic

- - - - -
f76d2945 by Hécate Moonlight at 2021-02-11T11:00:31+01:00
Merge pull request haskell/haddock#1329 from hsyl20/hsyl20/stabe_iface

Stable sort for instances
- - - - -
5e0469ea by Oleg Grenrus at 2021-02-14T15:28:15+02:00
Add import list to Data.List in Haddock.Interface.Create

- - - - -
fa57cd24 by Hécate Moonlight at 2021-02-14T17:19:27+01:00
Merge pull request haskell/haddock#1331 from phadej/more-explicit-data-list-imports

Add import list to Data.List in Haddock.Interface.Create
- - - - -
f0cd629c by Hécate Moonlight at 2021-02-21T00:22:01+01:00
Merge pull request haskell/haddock#1311 from fendor/wip/add-targetUnitId-to-target

Add UnitId to Target record
- - - - -
674ef723 by Joachim Breitner at 2021-02-22T10:39:18+01:00
html-test: Always set language

from ghc-9.2 on, the “default” langauge of GHC is expected to change
more wildly. To prepare for that (and unblock
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4853), this sets the
language for all the test files to `Haskell2010`. This should insolate
this test suite against changes to the default.

Cherry-picked from https://github.com/haskell/haddock/pull/1341

- - - - -
f072d623 by Hécate Moonlight at 2021-02-22T10:56:51+01:00
Merge pull request haskell/haddock#1342 from nomeata/joachim/haskell2010-in-tests-ghc-head

html-test: Always set language
- - - - -
caebbfca by Hécate Moonlight at 2021-02-22T11:53:07+01:00
Clean-up of Interface and Interface.Create's imports and pragmata

- - - - -
f6caa89d by Hécate Moonlight at 2021-02-22T11:54:58+01:00
Merge pull request haskell/haddock#1345 from Kleidukos/head/fix-interface-imports

[ghc-head] Clean-up of Interface and Interface.Create's imports and pragmata 
- - - - -
7395c9cb by Hécate Moonlight at 2021-02-22T18:44:57+01:00
Explicit imports for Haddock.Interface and Haddock.Interface.Create

- - - - -
6e9fb5d5 by Hécate Moonlight at 2021-02-22T18:45:28+01:00
Merge pull request haskell/haddock#1348 from Kleidukos/head/explicit-imports-interface

Explicit imports for Haddock.Interface and Haddock.Interface.Create
- - - - -
9198b118 by Alan Zimmerman at 2021-02-22T20:04:24+00:00
Context becomes a Maybe in the GHC AST

This prevents noLoc's appearing in the ParsedSource.

Match the change in GHC.

- - - - -
0af20f64 by Hécate Moonlight at 2021-02-23T12:36:12+01:00
Fix the call-site of guessTarget in Interface.hs

Explicit the imports from GHC.HsToCore.Docs

- - - - -
b7886885 by Hécate Moonlight at 2021-02-23T12:37:54+01:00
Merge pull request haskell/haddock#1349 from Kleidukos/fix-interface-guesstarget-call

Fix the call-site of guessTarget in Interface.hs
- - - - -
9cf041ba by Sylvain Henry at 2021-02-24T11:08:20+01:00
Fix haddockHypsrcTest output in ghc-head

- - - - -
b194182a by Hécate Moonlight at 2021-02-24T11:12:36+01:00
Merge pull request haskell/haddock#1351 from hsyl20/wip/hsyl20/fix-head

Fix haddockHypsrcTest output in ghc-head
- - - - -
3ce8b375 by Shayne Fletcher at 2021-03-06T09:55:03-05:00
Add ITproj to parser

- - - - -
d2abf762 by Ben Gamari at 2021-03-06T19:26:49-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
a0f6047d by Andrew Martin at 2021-03-07T11:25:23-05:00
Update for boxed rep

- - - - -
6f63c99e by Ben Gamari at 2021-03-10T13:20:21-05:00
Update for "FastString: Use FastMutInt instead of IORef Int"

- - - - -
e13f01df by Luke Lau at 2021-03-10T15:38:40-05:00
Implement template-haskell's putDoc

This catches up to GHC using the new extractTHDocs function, which
returns documentation added via the putDoc function (provided it was
compiled with Opt_Haddock). Since it's already a map from names -> docs,
there's no need to do traversal etc.
It also matches the change from the argument map being made an IntMap
rather than a Map Int

- - - - -
89263d94 by Alan Zimmerman at 2021-03-15T17:15:26+00:00
Match changes in GHC AST for in-tree API Annotations

As landed via https://gitlab.haskell.org/ghc/ghc/-/merge_requests/2418

- - - - -
28db1934 by Alan Zimmerman at 2021-03-15T20:40:09+00:00
Change some type family test results.

It is not clear to me whether the original was printing
incorrectly (since we did not have the TopLevel flag before now), or
if this behaviour is expected.

For the time being I am assuming the former.

- - - - -
7c11c989 by Sylvain Henry at 2021-03-22T10:05:19+01:00
Fix after NameCache changes

- - - - -
addbde15 by Sylvain Henry at 2021-03-22T10:05:19+01:00
NameCache doesn't store a UniqSupply anymore

- - - - -
15ec6cec by Ben Gamari at 2021-03-22T17:53:44-04:00
Bump GHC version to 9.2

- - - - -
dbd6aa63 by Hécate Moonlight at 2021-03-24T14:28:36+01:00
Merge pull request haskell/haddock#1365 from hsyl20/wip/hsyl20/iface1

NameCache refactoring
- - - - -
2d32da7e by Oleg Grenrus at 2021-03-27T01:12:00+02:00
Specialization of Data.List

- - - - -
32b84fa6 by Fendor at 2021-03-27T10:50:17+01:00
Add UnitId to Target record

This way we always know to which home-unit a given target belongs to.
So far, there only exists a single home-unit at a time, but it
enables having multiple home-units at the same time.

- - - - -
54bf9f0e by Hécate Moonlight at 2021-03-28T14:08:35+02:00
Merge pull request haskell/haddock#1368 from fendor/target-unit-id-revert

Add UnitId to Target record
- - - - -
7dea168a by Alan Zimmerman at 2021-03-29T08:45:52+01:00
EPA : Rename ApiAnn to EpAnn

- - - - -
72967f65 by Alfredo Di Napoli at 2021-03-29T09:47:01+02:00
pprError changed name in GHC

- - - - -
4bc61035 by Alan Zimmerman at 2021-03-29T16:16:27-04:00
EPA : Rename ApiAnn to EpAnn

- - - - -
108d031d by Ben Gamari at 2021-03-29T18:49:36-04:00
Merge commit '36418c4f70d7d2b179a77925b3ad5caedb08c9b5' into HEAD

- - - - -
1444f700 by Ben Gamari at 2021-03-31T09:18:39-04:00
Merge pull request haskell/haddock#1370 from adinapoli/wip/adinapoli-diag-reason-severity

Rename pprError to mkParserErr
- - - - -
d3087b79 by Ben Gamari at 2021-03-31T11:34:17-04:00
Merge commit 'd8d8024ad6796549a8d3b5512dabf3288d14e30f' into ghc-head

- - - - -
170b79e9 by Ben Gamari at 2021-03-31T12:24:56-04:00
Merge remote-tracking branch 'upstream/ghc-head' into ghc-head

- - - - -
db0d6bae by Ben Gamari at 2021-04-10T09:34:35-04:00
Bump GHC version to 9.3

- - - - -
a9f2c421 by Alan Zimmerman at 2021-04-19T18:26:46-04:00
Update for EPA changes in GHC

(cherry picked from commit cafb48118f7c111020663776845897e225607b41)

- - - - -
1ee4b7c7 by Sylvain Henry at 2021-05-11T10:00:06+02:00
Removal of HsVersions.h (#1388)

* Update for EPA changes in GHC

* Account for HsVersions.h removal

Co-authored-by: Alan Zimmerman <alan.zimm at gmail.com>
- - - - -
79e819e9 by Hécate Moonlight at 2021-05-11T10:14:47+02:00
Revert "Removal of HsVersions.h (#1388)"

This reverts commit 72118896464f94d81f10c52f5d9261efcacc57a6.

- - - - -
3dbd3f8b by Alan Zimmerman at 2021-05-11T10:15:17+02:00
Update for EPA changes in GHC

- - - - -
2ce80c17 by Sylvain Henry at 2021-05-11T10:15:19+02:00
Account for HsVersions.h removal

- - - - -
00e4c918 by Christiaan Baaij at 2021-05-13T08:21:56+02:00
Add Haddock support for the OPAQUE pragma (#1380)


- - - - -
8f9049b2 by Hécate Moonlight at 2021-05-13T08:40:22+02:00
fixup! Use GHC 9.2 in CI runner

- - - - -
27ddec38 by Alan Zimmerman at 2021-05-13T22:51:20+01:00
EPA: match changes from GHC T19834

- - - - -
f8a1d714 by Felix Yan at 2021-05-14T17:10:04+02:00
Allow hspec 2.8 (#1389)

All tests are passing.
- - - - -
df44453b by Divam Narula at 2021-05-20T15:42:42+02:00
Update ref, the variables got renamed. (#1391)

This is due to ghc/ghc!5555 which caused a change in ModDetails in case of
NoBackend. Now the initModDetails is used to recreate the ModDetails from
interface and in-memory ModDetails is not used.
- - - - -
e46bfc87 by Alan Zimmerman at 2021-05-20T19:05:09+01:00
Remove Maybe from HsQualTy

Match changes in GHC for haskell/haddock#19845

- - - - -
79bd7b62 by Shayne Fletcher at 2021-05-22T08:20:39+10:00
FieldOcc: rename extFieldOcc to foExt

- - - - -
6ed68c74 by Ben Gamari at 2021-05-21T22:29:30-04:00
Merge commit '3b6a8774bdb543dad59b2618458b07feab8a55e9' into ghc-head

- - - - -
f9a02d34 by Alfredo Di Napoli at 2021-05-24T13:53:00+02:00
New Parser diagnostics interface

- - - - -
392807d0 by Ben Gamari at 2021-05-24T09:57:40-04:00
Merge pull request haskell/haddock#1394 from adinapoli/wip/adinapoli-align-ps-messages

Align Haddock to use the new Parser diagnostics interface
- - - - -
33023cd8 by Ben Gamari at 2021-05-24T11:19:16-04:00
Revert "Add Haddock support for the OPAQUE pragma (#1380)"

This reverts commit a1337c599ef7720b0482a25c55f11794112496dc.

The GHC patch associated with this change is not yet ready to be merged.

- - - - -
8c005af7 by Ben Simms at 2021-05-28T07:56:20+02:00
CI configuration for ghc-head (#1395)


- - - - -
1e947612 by Hécate Moonlight at 2021-05-28T12:27:35+02:00
Use GHC 9.2 in CI runner (#1378)


- - - - -
e6fa10ab by CGenie at 2021-05-31T09:02:13+02:00
Add page about common errors (#1396)

* Update index.rst

Common errors page

* Create common-errors.rst

* Update common-errors.rst

* Use GHC 9.2 in CI runner (#1378)

* [haddock-api] remove .hspec-failures

Co-authored-by: Hécate Moonlight <Kleidukos at users.noreply.github.com>
- - - - -
abc72a8d by Sylvain Henry at 2021-06-01T10:02:06+02:00
Adapt Haddock to Logger and Parser changes (#1399)


- - - - -
91373656 by Zubin Duggal at 2021-06-01T20:45:10+02:00
Update haddockHypSrc tests since we now compute slighly more type info (#1397)


- - - - -
ed712822 by Marcin Szamotulski at 2021-06-02T08:54:33+02:00
Added myself to contributors

- - - - -
49fdbcb7 by Marcin Szamotulski at 2021-06-02T08:57:24+02:00
Document multi component support

- - - - -
9ddc8d7d by Hécate Moonlight at 2021-06-02T09:35:55+02:00
Merge pull request haskell/haddock#1379 from coot/coot/document-multi-component-support

Document multi component support
- - - - -
585b5c5e by Ben Simms at 2021-06-02T19:46:54+02:00
Update CONTRIBUTING.md (#1402)


- - - - -
1df4a605 by Ben Simms at 2021-06-02T19:47:14+02:00
Update CONTRIBUTING.md (#1403)


- - - - -
58ea43d2 by sheaf at 2021-06-02T22:09:06+02:00
Update Haddock Bug873 to account for renaming

- - - - -
c5d0ab23 by Vladislav Zavialov at 2021-06-10T13:35:42+03:00
HsToken in FunTy, RecConGADT

- - - - -
1ae2f40c by Hécate Moonlight at 2021-06-11T11:19:09+02:00
Update the CI badges
- - - - -
6fdc4de2 by Sylvain Henry at 2021-06-28T19:21:17+02:00
Fix mkParserOpts (#1411)


- - - - -
18201670 by Alfredo Di Napoli at 2021-07-05T07:55:12+02:00
Rename getErrorMessages Lexer import

This commit renames the Lexer import in `Hyperlinker.Parser` from
`getErrorMessages` to `getPsErrorMessages` to eliminate the ambiguity
with the `getErrorMessages` function defined in `GHC.Types.Error`.

- - - - -
23173ca3 by Ben Gamari at 2021-07-07T11:31:44-04:00
Merge pull request haskell/haddock#1413 from adinapoli/wip/adinapoli-issue-19920

Rename getErrorMessages Lexer import
- - - - -
b3dc4ed8 by Alan Zimmerman at 2021-07-28T22:30:59+01:00
EPA: match changes from GHC T19834

(cherry picked from commit 2fec1b44e0ee7e263286709aa528b4ecb99ac6c2)

- - - - -
5f177278 by Ben Gamari at 2021-08-06T01:17:37-04:00
Merge commit '2a966c8ca37' into HEAD

- - - - -
cdd81d08 by Marcin Szamotulski at 2021-08-08T17:19:06+02:00
coot/multiple packages (ghc-9.2) (#1418)


- - - - -
be0d71f1 by Marcin Szamotulski at 2021-08-16T08:46:03+02:00
coot/multiple package (ghc-head) (#1419)

* FromJSON class

Aeson style FromJSON class with Parsec based json parser.

* doc-index.json file for multiple packages

When creating haddock summary page for multiple packages render
doc-index.json file using contents of all found 'doc-index.json' files.

* Render doc-index.json

When rendering html, render doc-index.json file independently of
maybe_index_url option.  doc-index.json file is useful now even if
maybe_index_url is not `Nothing`.

* base url option

New `Flag_BaseURL` which configures from where static files are loaded
(--base-url).  If given and not equal "." static files are not coppied,
as this indicates that they are not read from the the directory where
we'd copy them.  The default value is ".".
- - - - -
3b09dbdf by Hécate Moonlight at 2021-10-07T23:26:03+02:00
Update GHC 9.2 to latest pre-release in CI

- - - - -
7ac55417 by Zubin Duggal at 2021-10-11T12:10:19+02:00
Enable Haddock tests in GHC windows CI (#1428)

* testsuite: strip windows line endings for haddock

* hyperlinker: Work around double escaping (#19236)

* deterministic SCC
- - - - -
1cb81f25 by Andrew Lelechenko at 2021-10-12T15:23:19+02:00
haddock-library does not depend on bytestring or transformers (#1426)


- - - - -
a890b9aa by sheaf at 2021-10-15T22:19:42+02:00
update haddockHypsrcTest for GHC MR !6705 (#1430)


- - - - -
42a55c6c by Sylvain Henry at 2021-10-15T22:20:10+02:00
Fix after PkgQual refactoring (#1429)


- - - - -
91659238 by Alan Zimmerman at 2021-10-28T18:57:10+01:00
Update for changes in GHC for branch

wip/az/no-srcspan-anno-instances

- - - - -
acf23e60 by Vladislav Zavialov at 2021-11-05T02:09:47+03:00
Do not use forall as an identifier

See GHC ticket haskell/haddock#20609

- - - - -
c565db0e by Krzysztof Gogolewski at 2021-11-27T02:42:35+01:00
Update after NoExtCon -> DataConCantHappen rename

- - - - -
b5f55590 by Artem Pelenitsyn at 2021-11-27T11:14:17+01:00
fix CI for 9.2 (#1436)


- - - - -
25cd621e by Matthew Pickering at 2021-12-02T11:46:54+00:00
Update html-test for Data.List revert

- - - - -
1d5ff85f by malteneuss at 2021-12-15T07:56:55+01:00
Add hint about inline link issue (#1444)


- - - - -
791fde81 by Sylvain Henry at 2021-12-16T09:29:51+01:00
Bump ghc-head (#1445)

* Update after NoExtCon -> DataConCantHappen rename

* Update html-test for Data.List revert

* Fix for new Plugins datatype

Co-authored-by: Krzysztof Gogolewski <krzysztof.gogolewski at tweag.io>
Co-authored-by: Matthew Pickering <matthewtpickering at gmail.com>
- - - - -
44236317 by Sylvain Henry at 2021-12-17T09:39:00+01:00
Fix for new Plugins datatype

- - - - -
80ada0fa by Hécate Moonlight at 2021-12-17T17:28:48+01:00
Remove ghc-head workflow (#1446)

Contributions of GHC glue code are now done on the GHC gitlab, not in the GitHub repo anymore.
- - - - -
49e171cd by Matthew Pickering at 2021-12-28T09:47:09+00:00
Remove use of ExtendedModSummary

- - - - -
0e91b5ea by askeblad at 2022-01-04T09:18:35+01:00
update URLs
- - - - -
9f13c212 by Hécate Moonlight at 2022-02-25T10:19:46+01:00
Fix solver for GHC 9.2

- - - - -
386751a1 by Meng Weng Wong at 2022-02-25T19:19:11+01:00
IDoc link has bitrotted; replaced with web.archive.org cache. (#1454)


- - - - -
d877cbe6 by Hécate Moonlight at 2022-02-25T19:21:58+01:00
Fix haddock user guide  (#1456)


- - - - -
cc47f036 by Andrew Lelechenko at 2022-03-04T17:29:36+01:00
Allow text-2.0 in haddock-library (#1459)


- - - - -
7b3685a3 by malteneuss at 2022-03-07T19:27:24+01:00
Add multi-line style hint to style section (#1460)


- - - - -
c51088b8 by John Ericson at 2022-03-11T16:46:26+01:00
Fix CollectPass instance to match TTG refactor

Companion to GHC !7614 (https://gitlab.haskell.org/ghc/ghc/-/merge_requests/7614)

- - - - -
b882195b by Vladislav Zavialov at 2022-03-14T20:32:30+01:00
Link to (~)

- - - - -
877349b8 by Christiaan Baaij at 2022-03-16T09:20:43+01:00
Add Haddock support for the OPAQUE pragma

- - - - -
0ea22721 by askeblad at 2022-03-16T09:44:27+01:00
typos (#1464)


- - - - -
a6d13da1 by Matthew Pickering at 2022-03-22T13:41:17+00:00
Minimum changes needed for compilation with hi-haddock

With hi-haddock, of course there is a much large refactoring of haddock
which could be achieved but that is left for a future patch which can
implemented at any time independently of GHC.

- - - - -
e7ac9129 by Matthew Pickering at 2022-03-22T21:17:50+00:00
Update test output

- - - - -
6d916214 by Matthew Pickering at 2022-03-24T15:06:26+00:00
Merge branch 'wip/opaque_pragma' into 'ghc-head'

Add Haddock support for the OPAQUE pragma

See merge request ghc/haddock!2
- - - - -
42208183 by Steve Hart at 2022-03-25T20:43:50+01:00
Fix CI (#1467)

* CI: Reinstall GHC with docs

CI tests were failing because the GHC preinstalled to the CI
environment does not include documentation, which is required for
running the Haddock tests. This commit causes the CI workflow to
reinstall GHC with docs so that tests can succeed.
- - - - -
9676fd79 by Steve Hart at 2022-03-25T21:33:34+01:00
Make links in Synopsis functional again (#1458)

Commit e41c1cbe9f0476997eac7b4a3f17cbc6b2262faf added a call to
e.preventDefault() when handling click events that reach a toggle
element. This prevents the browser from following hyperlinks within the
Synopsis section when they are clicked by a user. This commit restores
functioning hyperlinks within the Synopsis section by removing the call
to e.preventDefault(), as it does not appear to be necessary, and
removing it increases the flexibility of the details-helper code.
- - - - -
d1edd637 by sheaf at 2022-04-01T12:02:02+02:00
Keep track of promotion ticks in HsOpTy

Keeping track of promotion ticks in HsOpTy allows us to properly
pretty-print promoted constructors such as lists.

- - - - -
9dcb2dfc by Jakob Brünker at 2022-04-01T15:46:22+00:00
Add support for \cases

See merge request ghc/ghc!7873
- - - - -
b0412ee5 by askeblad at 2022-04-06T17:47:57+02:00
spelling errors (#1471)


- - - - -
6b18829b by Vladislav Zavialov at 2022-04-06T18:53:58+02:00
Rename [] to List

- - - - -
2d046691 by Vladislav Zavialov at 2022-04-07T20:25:54+03:00
HsToken ConDeclGADT con_dcolon

- - - - -
90b43da4 by Steve Hart at 2022-04-12T13:29:46+02:00
Parse Markdown links at beginning of line within a paragraph (#1470)

* Catch Markdown links at beginning of line within paragraph

Per Issue haskell/haddock#774, Markdown links were being parsed as ordinary text when
they occurred at the beginning of a line other than the first line of
the paragraph. This occurred because the parser was not interpreting a
left square bracket as a special character that could delimit special
markup. A space character was considered a special character, so, if a
space occurred at the beginning of the new line, then the parser would
interpret the space by itself and then continue parsing, thereby
catching the Markdown link. '\n' was not treated as a special character,
so the parser did not catch a Markdown link that may have followed.

Note that this will allow for Markdown links that are not surrounded by
spaces. For example, the following text includes a Markdown link that
will be parsed:

  Hello, world[label](url)

This is consistent with how the parser handles other types of markup.

* Remove obsolete documentation hint

Commit 6b9aeafddf20efc65d3725c16e3fc43a20aac343 should eliminate the
need for the workaround suggested in the documentation.
- - - - -
5b08312d by Hécate Moonlight at 2022-04-12T13:36:38+02:00
Force ghc-9.2 in the cabal.project

- - - - -
0d0ea349 by dependabot[bot] at 2022-04-12T13:57:41+02:00
Bump path-parse from 1.0.5 to 1.0.7 in /haddock-api/resources/html (#1469)

Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.5 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support at github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- - - - -
2b9fc65e by dependabot[bot] at 2022-04-12T13:57:54+02:00
Bump copy-props from 2.0.4 to 2.0.5 in /haddock-api/resources/html (#1468)

Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/copy-props/compare/2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support at github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- - - - -
ea98a6fb by Ben Gamari at 2022-04-23T22:54:37-04:00
Update for GHC 9.4

- - - - -
9e11864f by Ben Gamari at 2022-04-25T16:24:31-04:00
Merge remote-tracking branch 'upstream/ghc-9.2' into ghc-head

- - - - -
f83cc506 by Ben Gamari at 2022-04-25T17:00:25-04:00
Bump ghc version to 9.5

- - - - -
e01c2e7d by Ben Gamari at 2022-04-28T16:19:04-04:00
Revert "Bump ghc-head (#1445)"

This reverts commit b29a78ef6926101338f62e84f456dac8659dc9d2.

This should not have been merged.

- - - - -
a2b5ee8c by Ben Gamari at 2022-04-28T16:19:24-04:00
Merge commit '2627a86c' into ghc-head

- - - - -
0c6fe4f9 by Ben Gamari at 2022-04-29T10:05:54-04:00
Merge remote-tracking branch 'origin/ghc-head' into ghc-9.4

- - - - -
b6e5cb0a by Ben Gamari at 2022-04-29T11:46:06-04:00
Revert "HsToken ConDeclGADT con_dcolon"

This reverts commit 24208496649a02d5f87373052c430ea4a97842c5.

- - - - -
15a62888 by Ben Gamari at 2022-04-29T15:12:55-04:00
Bump base upper bound

- - - - -
165b9031 by Ben Gamari at 2022-04-29T23:58:38-04:00
Update test output

- - - - -
e0c3e5da by Phil de Joux at 2022-05-02T14:46:38+02:00
Add hlint action .hlint.yaml with ignores & CPP. (#1475)


- - - - -
ead1158d by Raphael Das Gupta at 2022-05-02T14:46:48+02:00
fix grammar in docs: "can the" → "can be" (#1477)


- - - - -
cff97944 by Ben Gamari at 2022-05-02T18:38:56-04:00
Allow base-4.17

- - - - -
e4ecb201 by Phil de Joux at 2022-05-03T13:14:55+02:00
Remove unused imports that GHC warned about. (#1480)


- - - - -
222890b1 by Phil de Joux at 2022-05-03T13:15:46+02:00
Follow hlint suggestion to remove redundant bang. (#1479)


- - - - -
058b671f by Phil de Joux at 2022-05-03T13:34:04+02:00
Follow hlint, remove language pragmas in libs. (#1478)


- - - - -
0a645049 by Ben Simms at 2022-05-03T14:19:24+02:00
Keep track of ordered list indexes and render them (#1407)

* Keep track of ordered list indexes and render them

* Rename some identifiers to clarify
- - - - -
f0433304 by Norman Ramsey at 2022-05-04T15:13:34-04:00
update for changes in GHC API

- - - - -
3740cf71 by Emily Martins at 2022-05-06T18:23:48+02:00
Add link to the readthedocs in cabal description to show on hackage.

(cherry picked from commit 52e2d40d47295c02d3181aac0c53028e730f1e3b)

- - - - -
5d754f1e by Hécate Moonlight at 2022-05-06T18:44:57+02:00
remove Bug873

- - - - -
968fc267 by Hécate Moonlight at 2022-05-06T18:48:28+02:00
Ignore "Use second" HLint suggestion. It increases laziness.

- - - - -
02d14e97 by Jade Lovelace at 2022-05-07T17:42:08+02:00
Fix hyperlinks to external items and modules (#1482)

Fixes haskell/haddock#1481.

There were two bugs in this:
* We were assuming that we were always getting a relative path to the
  module in question, while Nix gives us file:// URLs sometimes. This
  change checks for those and stops prepending `..` to them.
* We were not linking to the file under the module. This seems
  to have been a regression introduced by haskell/haddock#977. That is, the URLs were
  going to something like
  file:///nix/store/3bwbsy0llxxn1pixx3ll02alln56ivxy-ghc-9.0.2-doc/share/doc/ghc/html/libraries/base-4.15.1.0/src
  which does not have the appropriate HTML file or fragment for the item
  in question at the end.

There is a remaining instance of the latter bug, but not in the
hyperlinker: the source links to items reexported from other modules are
also not including the correct file name. e.g. the reexport of Entity in
esqueleto, from persistent.

NOTE: This needs to get tested with relative-path located modules. It seems
correct for Nix based on my testing.

Testing strategy:

```
nix-shell '<nixpkgs>' --pure -A haskell.packages.ghc922.aeson
mkdir /tmp/aesonbuild && cd /tmp/aesonbuild
export out=/tmp/aesonbuild/out
genericBuild

ln -sf $HOME/co/haddock/haddock-api/resources .
./Setup haddock --with-haddock=$HOME/path/to/haddock/exec --hyperlink-source
```
- - - - -
b22b87ed by Artem Pelenitsyn at 2022-05-08T16:19:47+02:00
fix parsing trailing quotes in backticked identifiers (#1408) (#1483)


- - - - -
80ae107b by Alex Biehl at 2022-05-08T16:37:16+02:00
Fix "Defined by not used" error

(cherry picked from commit 6e02a620a26c3a44f98675dd1b93b08070c36c0a)

- - - - -
4c838e84 by Hécate Moonlight at 2022-05-08T16:37:16+02:00
Fix the changelog and bump the version of haddock-library on ghc-9.2

- - - - -
fc9827b4 by Hécate Moonlight at 2022-05-08T16:40:40+02:00
Fix the changelog and bump the version of haddock-library on ghc-9.2

- - - - -
b153b555 by Xia Li-yao at 2022-05-20T17:52:42+02:00
Hide synopsis from search when hidden (#1486)

Fix haskell/haddock#1451
- - - - -
f3e38b85 by Marcin Szamotulski at 2022-05-21T23:32:31+02:00
Allow to hide interfaces when rendering multiple components (#1487)

This is useful when one wishes to `--gen-contents` when rendering
multiple components, but one does not want to render all modules.  This
is in particular useful when adding base package.
- - - - -
f942863b by Marcin Szamotulski at 2022-05-24T08:29:59+02:00
Check if doc-index.json exists before reading it (#1488)


- - - - -
31e92982 by Marcin Szamotulski at 2022-05-25T16:22:13+02:00
Version bump 2.26.1 (#1489)

* Version bump 2.26.1

We extended format accepted by `--read-interface` option, which requires
updating the minor version.

* Update documentation of --read-interface option
- - - - -
7cc873e0 by sheaf at 2022-05-25T16:42:31+02:00
Updated HaddockHypsrcTest output for record update changes (MR !7981)

- - - - -
cd196942 by Marcin Szamotulski at 2022-05-25T20:28:47+02:00
Use visibility to decide which interfaces are included in quickjump (#1490)

This is also consistent with how html index is build.  See
haskell/cabal#7669 for rationale behind this decision.
- - - - -
00c713c5 by Hécate Moonlight at 2022-05-26T17:09:15+02:00
Add code of conduct and hspec failure files in .gitignore

- - - - -
2f3039f1 by Hécate Moonlight at 2022-05-26T17:10:59+02:00
Add code of conduct and hspec failure files in .gitignore

- - - - -
63a5650c by romes at 2022-05-31T12:43:22+01:00
TTG: Match new GHC AST

- - - - -
dd7d1617 by romes at 2022-06-02T16:11:00+01:00
Update for IE changes in !8228

- - - - -
c23aaab7 by cydparser at 2022-06-06T08:48:14+02:00
Fix and improve CI (#1495)

* Pin GHC version before creating the freeze file

* Use newest action versions

* Improve caching

* Avoid unnecessarily reinstalling GHC

* Use GHC 9.2.2 for CI

Co-authored-by: Cyd Wise <cwise at tripshot.com>
- - - - -
c156fa77 by Hécate Moonlight at 2022-06-06T11:59:35+02:00
Add Mergify configuration (#1496)


- - - - -
2dba4188 by Hécate Moonlight at 2022-06-06T16:12:50+02:00
Bump haddock's version in cabal file to 2.26.1 (#1497)


- - - - -
d7d4b8b9 by Marcin Szamotulski at 2022-06-07T06:09:40+00:00
Render module tree per package in the content page (#1492)

* Render module tree per package in the content page

When rendering content page for multiple packages it is useful to split
the module tree per package.  Package names in this patch are inferred
from haddock's interface file names.

* Write PackageInfo into interface file

To keep interface file format backward compatible, instead of using
`Binary` instance for `InterfaceFile` we introduce functions to
serialise and deserialise, which depends on the interface file version.
- - - - -
77765665 by Mike Pilgrem at 2022-06-12T21:57:19+01:00
Fix haskell/haddock#783 Don't show button if --quickjump not present

- - - - -
b0e079b0 by mergify[bot] at 2022-06-13T11:49:37+00:00
Merge pull request haskell/haddock#1108 from mpilgrem/fix783

Fix haskell/haddock#783 Don't show button if --quickjump not present
- - - - -
6c0292b1 by Hécate Moonlight at 2022-06-21T17:21:08+02:00
Update the contribution guide

- - - - -
e413b9fa by dependabot[bot] at 2022-06-21T23:38:19+02:00
Bump shell-quote from 1.6.1 to 1.7.3 in /haddock-api/resources/html (#1500)

Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.6.1 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/1.6.1...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support at github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- - - - -
29d0ef70 by romes at 2022-07-06T11:29:39+02:00
TTG: AST Updates for !8308

- - - - -
1bae7c87 by Alan Zimmerman at 2022-07-06T22:50:43+01:00
Match GHC changes for T21805

This brings in a newtype for FieldLabelString

- - - - -
6fe8b988 by Phil de Joux at 2022-07-16T20:54:26+00:00
Bump hlint version to 3.4.1, the version with counts. (#1503)

Redo the counts available with the --default option.
- - - - -
48fb43af by Phil de Joux at 2022-07-19T09:32:55+02:00
Follow hlint suggestion: unused LANGUAGE pragma. (#1504)

* Follow hlint suggestion: unused LANGUAGE pragma.

* Ignore within modules to pass linting and pass tests.
- - - - -
c1cf1fa7 by Phil de Joux at 2022-07-24T13:45:59+02:00
Follow hlint suggestion: redundant $. (#1505)

* Follow hlint suggestion: redundant $.

* Remove $ and surplus blank lines in Operators.
- - - - -
74777eb2 by Jade Lovelace at 2022-07-29T11:02:41+01:00
Fix hyperlinks to external items and modules (#1482)

Fixes haskell/haddock#1481.

There were two bugs in this:
* We were assuming that we were always getting a relative path to the
  module in question, while Nix gives us file:// URLs sometimes. This
  change checks for those and stops prepending `..` to them.
* We were not linking to the file under the module. This seems
  to have been a regression introduced by haskell/haddock#977. That is, the URLs were
  going to something like
  file:///nix/store/3bwbsy0llxxn1pixx3ll02alln56ivxy-ghc-9.0.2-doc/share/doc/ghc/html/libraries/base-4.15.1.0/src
  which does not have the appropriate HTML file or fragment for the item
  in question at the end.

There is a remaining instance of the latter bug, but not in the
hyperlinker: the source links to items reexported from other modules are
also not including the correct file name. e.g. the reexport of Entity in
esqueleto, from persistent.

NOTE: This needs to get tested with relative-path located modules. It seems
correct for Nix based on my testing.

Testing strategy:

```
nix-shell '<nixpkgs>' --pure -A haskell.packages.ghc922.aeson
mkdir /tmp/aesonbuild && cd /tmp/aesonbuild
export out=/tmp/aesonbuild/out
genericBuild

ln -sf $HOME/co/haddock/haddock-api/resources .
./Setup haddock --with-haddock=$HOME/path/to/haddock/exec --hyperlink-source
```

(cherry picked from commit ab53ccf089ea703b767581ac14be0f6c78a7678a)

- - - - -
faa4cfcf by Hécate Moonlight at 2022-07-29T20:31:20+02:00
Merge pull request haskell/haddock#1516 from duog/9-4-backport-fix-hyperlinks

Backport 9-4: Fix hyperlinks to external items and modules (#1482)
- - - - -
5d2450f3 by Ben Gamari at 2022-08-05T17:41:15-04:00
Merge remote-tracking branch 'origin/ghc-9.4'

- - - - -
63954f73 by Ben Gamari at 2022-08-05T19:08:36-04:00
Clean up build and testsuite for GHC 9.4

- - - - -
d4568cb8 by Hécate Moonlight at 2022-08-05T19:10:49-04:00
Bump the versions

- - - - -
505583a4 by Ben Gamari at 2022-08-06T13:58:27-04:00
Merge pull request haskell/haddock#1518 from bgamari/wip/ghc-9.4-merge

Merge GHC 9.4 into `main`
- - - - -
5706f6a4 by Ben Gamari at 2022-08-06T22:57:21-04:00
html-test: Testsuite changes for GHC 9.4.1

- - - - -
5f2a45a2 by Ben Gamari at 2022-08-15T14:33:05-04:00
doc: Fix a few minor ReST issues

Sphinx was complaining about too-short title underlines.

- - - - -
220e6410 by Ben Gamari at 2022-08-15T14:41:24-04:00
Merge branch 'main' into ghc-head

- - - - -
fbeb1b02 by Ben Gamari at 2022-08-15T14:45:16-04:00
Updates for GHC 9.5

- - - - -
eee562eb by Vladislav Zavialov at 2022-08-15T14:46:13-04:00
HsToken ConDeclGADT con_dcolon

- - - - -
c5f073db by Ben Gamari at 2022-08-15T16:55:35-04:00
Updates for GHC 9.5

- - - - -
3f7ab242 by Vladislav Zavialov at 2022-08-15T16:55:35-04:00
HsToken ConDeclGADT con_dcolon

- - - - -
a18e473d by Ben Gamari at 2022-08-16T08:35:19-04:00
Merge branch 'wip/ghc-head-bump' into ghc-head

- - - - -
af0ff3a4 by M Farkas-Dyck at 2022-09-15T21:16:05+00:00
Disuse `mapLoc`.

- - - - -
a748fc38 by Matthew Farkas-Dyck at 2022-09-17T10:44:18+00:00
Scrub partiality about `NewOrData`.

- - - - -
2758fb6c by John Ericson at 2022-09-18T03:27:37+02:00
Test output changed because of change to `base`

Spooky, but I guess that is intended?

- - - - -
a7eec128 by Torsten Schmits at 2022-09-21T11:06:55+02:00
update tests for the move of tuples to GHC.Tuple.Prim

- - - - -
461e7b9d by Ross Paterson at 2022-09-24T22:01:25+00:00
match implementation of GHC proposal haskell/haddock#106 (Define Kinds Without Promotion)

- - - - -
f7fd77ef by sheaf at 2022-10-17T14:53:01+02:00
Update Haddock for GHC MR !8563 (configuration of diagnostics)

- - - - -
3d3e85ab by Vladislav Zavialov at 2022-10-22T23:04:06+03:00
Class layout info

- - - - -
cbde4cb0 by Simon Peyton Jones at 2022-10-25T23:19:18+01:00
Adapt to Constraint-vs-Type

See haskell/haddock#21623 and !8750

- - - - -
7108ba96 by Tom Smeding at 2022-11-01T22:33:23+01:00
Remove outdated footnote about module re-exports

The footnote is invalid with GHC 9.2.4 (and possibly earlier): the described behaviour in the main text works fine.
- - - - -
206c6bc7 by Hécate Moonlight at 2022-11-01T23:00:46+01:00
Merge pull request haskell/haddock#1534 from tomsmeding/patch-1


- - - - -
a57b4c4b by Andrew Lelechenko at 2022-11-21T00:39:52+00:00
Support mtl-2.3

- - - - -
e9d62453 by Simon Peyton Jones at 2022-11-25T13:49:12+01:00
Track small API change in TyCon.hs

- - - - -
eb1c73f7 by Ben Gamari at 2022-12-07T08:46:21-05:00
Update for GhC 9.6

- - - - -
063268dd by Ben Gamari at 2022-12-07T11:26:32-05:00
Merge remote-tracking branch 'upstream/ghc-head' into HEAD

- - - - -
4ca722fe by Ben Gamari at 2022-12-08T14:43:26-05:00
Bump bounds to accomodate base-4.18

- - - - -
340b7511 by Vladislav Zavialov at 2022-12-10T12:31:28+00:00
HsToken in HsAppKindTy

- - - - -
946226ec by Ben Gamari at 2022-12-13T20:12:56-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
fd8faa66 by Ben Gamari at 2022-12-22T13:44:28-05:00
Bump GHC version to 9.7

- - - - -
2958aa9c by Ben Gamari at 2022-12-22T14:49:16-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
9e0fefd8 by Andrei Borzenkov at 2023-01-30T14:02:04+04:00
Rename () to Unit, Rename (,,...,,) to Tuple<n>

- - - - -
eb3968b5 by Ben Gamari at 2023-03-10T02:32:43-05:00
Bump versions for ghc-9.6 release

- - - - -
4aeead36 by Adam Gundry at 2023-03-23T13:53:47+01:00
Adapt to warning categories changes

- - - - -
642d8d60 by sheaf at 2023-03-29T13:35:56+02:00
Adapt to record field refactor

This commit adapts to the changes in GHC MR !8686, which overhauls
the treatment of record fields in the renamer, adding separate record
field namespaces and entirely removing the GreName datatype.

- - - - -
ac8d4333 by doyougnu at 2023-03-29T11:11:44-04:00
Update UniqMap API

- - - - -
7866fc86 by Ben Orchard at 2023-04-20T11:29:33+02:00
update classify with new tokens

- - - - -
ffcdd683 by Finley McIlwaine at 2023-04-24T09:36:18-06:00
Remove index-state

- - - - -
05b70982 by Finley McIlwaine at 2023-04-26T08:16:31-06:00
`renameInterface` space leak fixes

- Change logic for accumulation of names for which link warnings
  will be generated
- Change handling of `--ignore-link-symbol` to allow qualified and
  unqualified names. Added to CHANGES.md
- Some formatting changes and comments here and there

- - - - -
e5697d7c by Finley McIlwaine at 2023-04-27T18:46:36-06:00
Messy things

- ghc-debug dependency and instrumentation
- cabal.project custom with-compiler
- hie.yaml files
- traces and such

- - - - -
0b8ef80b by Finley McIlwaine at 2023-05-02T18:08:52-06:00
Stop retaining GRE closures

GRE closures should never be necessary to Haddock, so we never want to
keep them on the heap. Despite that, they are retained by a lot of the
data structures that Haddock makes use of.

- Attempt to fix that situation by adding strictness to various
  computations and pruning the `ifaceInstances` field of `Interface` to
  a much thinner data type.

- Removes the `ifaceFamInstances` field, as it was never used.

- Move some of the attach instances types (e.g. `SimpleType`) to the
  types module

- - - - -
8bda991b by Finley McIlwaine at 2023-05-08T16:07:51-06:00
Memory usage fixes

- Refactor `ifaceDeclMap` to drastically reduce memory footprint. We
  no longer store all declarations associated with a given name, since
  we only cared to determine if the only declaration associated with a
  name was a value declaration. Change the `DeclMap` type to better
  reflect this.
- Drop pre-renaming export items after the renaming step. Since the
  Hoogle backend used the pre-renamed export items, this isn't trivial.
  We now generate Hoogle output for exported declarations during the
  renaming step (if Hoogle output /should/ be generated), and store that
  with the renamed export item.
- Slightly refactor Hoogle backend to handle the above change and allow
  for early generation of Hoogle output.
- Remove the `ifaceRnDocMap` and `ifaceRnArgMap` fields of the
  `Interface` type, as they were never used.
- Remove some unnecessary strictness
- Remove a lot of dead code from `Syb` module

- - - - -
1611ac0c by Finley McIlwaine at 2023-05-09T11:51:57-06:00
Unify ErrMsgM and IfM

- Delete ErrMsgM, stop accumulating warnings in a writer
- Make IfM a state monad, print warnings directly to stdout, move IfM
  type into types module
- Drop ErrMsg = String synonym
- Unset IORefs from plugin after they are read, preventing unnecessary
  retention of interfaces

- - - - -
42d696ab by Finley McIlwaine at 2023-05-11T15:52:07-06:00
Thunk leak fixes

The strictness introduced in this commit was motivated by observing
thunk leaks in the eventlog2html output.

- Refactor attach instances list comprehension to avoid large
  intermediate thunks
- Refactor some HTML backend list comprehensions to avoid large
  intermediate thunks
- Avoid thunks accumulating in documentation types or documentation
  parser
- A lot of orphan NFData instances to allow us to force documentation
  values

- - - - -
68561cf6 by Finley McIlwaine at 2023-05-11T17:02:10-06:00
Remove GHC debug dep

- - - - -
10519e3d by Finley McIlwaine at 2023-05-15T12:40:48-06:00
Force HIE file path

Removes a potential retainer of `ModSummary`s

- - - - -
1e4a6ec6 by Finley McIlwaine at 2023-05-15T14:20:34-06:00
Re-add index-state, with-compiler, delete hie.yamls

- - - - -
a2363fe9 by Hécate Moonlight at 2023-05-15T22:45:16+02:00
Merge pull request haskell/haddock#1594 from FinleyMcIlwaine/finley/ghc-9.6-mem-fixes

Reduce memory usage
- - - - -
e8a78383 by Finley McIlwaine at 2023-05-17T12:19:16-06:00
Merge branch ghc-9.6 into ghc-head

- - - - -
22e25581 by Finley McIlwaine at 2023-05-17T12:20:23-06:00
Merge branch 'ghc-head' of gitlab.haskell.org:ghc/haddock into ghc-head

- - - - -
41bbf0df by Bartłomiej Cieślar at 2023-05-24T08:57:58+02:00
changes to the WarningTxt cases

Signed-off-by: Bartłomiej Cieślar <bcieslar2001 at gmail.com>

- - - - -
c686ba9b by Hécate Moonlight at 2023-06-01T14:03:02-06:00
Port the remains of Hi-Haddock

- - - - -
9d8a85fd by Hécate Moonlight at 2023-06-01T14:03:06-06:00
Stdout for tests

- - - - -
36331d07 by Finley McIlwaine at 2023-06-01T14:06:02-06:00
Formatting, organize imports

- - - - -
a06059b1 by Finley McIlwaine at 2023-06-01T14:06:04-06:00
Fix empty context confusion in Convert module

- - - - -
379346ae by Finley McIlwaine at 2023-06-01T14:06:04-06:00
Fix associated type families in Hoogle output

- - - - -
fc6ea7ed by Finley McIlwaine at 2023-06-01T14:06:04-06:00
Fix test refs

Accept several changes in Hoogle tests:

Pretty printing logic no longer prints the `(Proxy (Proxy (...))`
chain in Bug806 with parentheses. Since this test was only meant
to verify that line breaks do not occur, accept the change.

`tyThingToLHsDecl` is called for class and data declarations, which ends
up "synifying" the type variables and giving unlifted types kind
signatures. As a result, type variables of kind `Type -> Type`
are now printed with kind signatures in Hoogle output. This could
be changed by manually drop kind signatures from class variables
in the Hoogle backend if the behavior is deemed unacceptable.

Sometimes subordinate declarations are exported separate from their
parent declarations (e.g. record selectors). In this case, a type
signature is cobbled together for the export item in `extractDecl`.
Since this type signature is very manually constructed, it may lack
kind signatures of decls constructed from `tyThingToLHsDecl`. An
example of this is the `type-sigs` Hoogle test.

Change `*` to `Type` in Hoogle test refs. I don't think this will
break Hoogle behavior, since it appears to not consider type
signatures in search. I have not fully verified this.

- - - - -
e14b7e58 by Finley McIlwaine at 2023-06-01T14:06:05-06:00
Fix LaTeX backend test refs

Changes to GHC pretty printing code have resulted in some
differences to Haddock's LaTeX output.

- Type variables are printed explicitly quantified in the
  LinearTypes test
- Wildcard types in type family equations are now printed numbered,
  e.g. _1 _2, in the TypeFamilies3 test
- Combined signatures in DefaultSignatures test are now documented
  as separate signatures

- - - - -
41b5b296 by Finley McIlwaine at 2023-06-01T14:06:05-06:00
Formatting and test source updates

- Stop using kind `*` in html test sources
- Add TypeOperators where necessary to avoid warnings and future errors
- Rename some test modules to match their module names

- - - - -
c640e2a2 by Finley McIlwaine at 2023-06-01T14:06:05-06:00
Fix missing deprecation warnings on record fields

`lookupOccEnv` was used to resolve `OccNames` with warnings attached, but
it doesn't look in the record field namespace. Thus, if a record field
had a warning attached, it would not resolve and the warning map would
not include it. This commit fixes by using `lookupOccEnv_WithFields`
instead.

- - - - -
fad0c462 by Finley McIlwaine at 2023-06-01T14:06:05-06:00
Formatting and some comments

- - - - -
751fd023 by Finley McIlwaine at 2023-06-01T14:11:41-06:00
Accept HTML test diffs

All diffs now boil down to the expected differences resulting from
declarations being reified from TyThings in hi-haddock. Surface
syntax now has much less control over the syntax used in the
documentation.

- - - - -
d835c845 by Finley McIlwaine at 2023-06-01T14:11:45-06:00
Adapt to new load' type

- - - - -
dcf776c4 by Finley McIlwaine at 2023-06-01T14:13:13-06:00
Update mkWarningMap and moduleWarning

- - - - -
8e8432fd by Finley McIlwaine at 2023-06-01T14:28:54-06:00
Revert load' changes

- - - - -
aeb2982c by Finley McIlwaine at 2023-06-01T14:40:24-06:00
Accept change to Instances test in html-test

Link to Data.Tuple instead of GHC.Tuple.Prim

- - - - -
8adfdbac by Finley McIlwaine at 2023-06-01T15:53:17-06:00
Reset ghc dep to ^>= 9.6

- - - - -
2b1ce93d by Finley McIlwaine at 2023-06-06T07:50:04-06:00
Update CHANGES.md, user guide, recomp avoidance

* Add --trace-args flag for tracing arguments received to standard output
* Avoid recompiling due to changes in optimization flags
* Update users guide and changes.md

- - - - -
f3da6676 by Finley McIlwaine at 2023-06-06T14:12:56-06:00
Add "Avoiding Recompilation" section to docs

This section is a bit of a WIP due to the unstable nature of hi-haddock
and the lack of tooling supporting it, but its a good start.

- - - - -
bf36c467 by Matthew Pickering at 2023-06-07T10:16:09+01:00
Revert back to e16e20d592a6f5d9ed1af17b77fafd6495242345

Neither of these MRs are ready to land yet which causes issues with
other MRs which are ready to land and need haddock changes.

- - - - -
421510a9 by Vladislav Zavialov at 2023-06-07T09:36:30+00:00
atSign has no unicode variant

Prior to this change, atSign was defined as follows:

	atSign unicode = text (if unicode then "@" else "@")

Yes, this is the same symbol '\64' and not your font playing
tricks on you. Now we define:

	atSign = char '@'

Both the LaTeX and the Xhtml backend are updated accordingly.

- - - - -
3785c276 by Vladislav Zavialov at 2023-06-07T09:36:30+00:00
LaTeX: fix printing of type variable bindings

Consider this type signature:

	kindOf :: forall {k} (a :: k). Proxy a -> Proxy k

Prior to this fix, the LaTeX backend rendered it like this:

	kindOf :: forall k a. Proxy a -> Proxy k

Now we preserve explicit specificity and kind annotations.

- - - - -
0febf3a8 by Vladislav Zavialov at 2023-06-07T09:36:30+00:00
Add support for invisible binders in type declarations

- - - - -
13e33bb3 by Finley McIlwaine at 2023-06-08T07:51:59-06:00
Add "Avoiding Recompilation" section to docs

This section is a bit of a WIP due to the unstable nature of hi-haddock
and the lack of tooling supporting it, but its a good start.

- - - - -
3e5340ce by Finley McIlwaine at 2023-06-08T07:54:27-06:00
Add note about stubdir to recompilation docs

- - - - -
db7e84dc by Finley at 2023-06-08T08:11:03-06:00
Merge pull request haskell/haddock#1597 from haskell/finley/hi-haddock-9.6

hi-haddock for ghc 9.6
- - - - -
4e085d17 by Finley McIlwaine at 2023-06-14T13:41:06-06:00
Replace SYB traversals

- - - - -
7b39aec5 by Finley McIlwaine at 2023-06-14T14:20:17-06:00
Test ref accepts, remove unused HaddockClsInst

- - - - -
df9c2090 by Finley McIlwaine at 2023-06-15T08:02:51-06:00
Use batchMsg for progress reporting during load

With hi-haddock as is, there is an awkward silence during the load operation.
This commit makes haddock use the default `batchMsg` Messager for progress
reporting, and makes the default GHC verbosity level 1, so the user can see
what GHC is doing.

- - - - -
f23679a8 by Hécate Moonlight at 2023-06-15T20:31:53+02:00
Merge pull request haskell/haddock#1600 from haskell/finley/hi-haddock-optim


- - - - -
a7982192 by Finley McIlwaine at 2023-06-15T15:02:16-06:00
hi-haddock squashed

- - - - -
c34f0c8d by Finley McIlwaine at 2023-06-15T16:22:03-06:00
Merge remote-tracking branch 'origin/ghc-9.6' into finley/hi-haddock-squashed

- - - - -
40452797 by Bartłomiej Cieślar at 2023-06-16T12:26:04+02:00
Changes related to MR !10283

MR !10283 changes the alternatives for WarningTxt pass. This MR reflects those changes in the haddock codebase.

Signed-off-by: Bartłomiej Cieślar <bcieslar2001 at gmail.com>

- - - - -
e58673bf by Ben Gamari at 2023-06-16T09:33:35-04:00
Bump GHC version to 9.8

- - - - -
74bdf972 by Ben Gamari at 2023-06-16T09:36:18-04:00
Merge commit 'fcaaad06770a26d35d4aafd65772dedadf17669c' into ghc-head

- - - - -
418ee3dc by Finley McIlwaine at 2023-06-20T15:39:05-04:00
Remove NFData SourceText, IfaceWarnings updates

The NFData SourceText instance is now available in GHC

Handle mod_iface mi_warns now being IfaceWarnings

- - - - -
62f31380 by Finley McIlwaine at 2023-06-20T15:39:05-04:00
Accept Instances.hs test output

Due to ghc!10469.

- - - - -
a8f2fc0e by Ben Gamari at 2023-06-20T15:48:08-04:00
Test fixes for "Fix associated data family doc structure items"

Associated data families were being given their own export DocStructureItems,
which resulted in them being documented separately from their classes in
haddocks. This commit fixes it.

- - - - -
cb1ac33e by Bartłomiej Cieślar at 2023-06-21T12:56:02-04:00
Changes related to MR !10283

MR !10283 changes the alternatives for WarningTxt pass. This MR reflects those changes in the haddock codebase.

Signed-off-by: Bartłomiej Cieślar <bcieslar2001 at gmail.com>

- - - - -
9933e10b by Ben Gamari at 2023-06-21T12:56:02-04:00
Bump GHC version to 9.8

- - - - -
fe8c18b6 by Ben Gamari at 2023-06-21T15:36:29-04:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
c61a0d5b by Ben Gamari at 2023-06-21T16:10:51-04:00
Bump GHC version to 9.9

- - - - -
d7f6448a by Matthew Pickering at 2023-06-30T12:38:43-04:00
hadrian: Fix dependencies of docs:* rule

For the docs:* rule we need to actually build the package rather than
just the haddocks for the dependent packages. Therefore we depend on the
.conf files of the packages we are trying to build documentation for as
well as the .haddock files.

Fixes #23472

- - - - -
cec90389 by sheaf at 2023-06-30T12:39:27-04:00
Add tests for #22106

Fixes #22106

- - - - -
083794b1 by Torsten Schmits at 2023-07-03T03:27:27-04:00
Add -fbreak-points to control breakpoint insertion

Rather than statically enabling breakpoints only for the interpreter,
this adds a new flag.

Tracking ticket: #23057

MR: !10466

- - - - -
fd8c5769 by Ben Gamari at 2023-07-03T03:28:04-04:00
rts: Ensure that pinned allocations respect block size

Previously, it was possible for pinned, aligned allocation requests to
allocate beyond the end of the pinned accumulator block. Specifically,
we failed to account for the padding needed to achieve the requested
alignment in the "large object" check. With large alignment requests,
this can result in the allocator using the capability's pinned object
accumulator block to service a request which is larger than
`PINNED_EMPTY_SIZE`.

To fix this we reorganize `allocatePinned` to consistently account for
the alignment padding in all large object checks. This is a bit subtle
as we must handle the case of a small allocation request filling the
accumulator block, as well as large requests.

Fixes #23400.

- - - - -
98185d52 by Ben Gamari at 2023-07-03T03:28:05-04:00
testsuite: Add test for #23400

- - - - -
4aac0540 by Ben Gamari at 2023-07-03T03:28:42-04:00
ghc-heap: Support for BLOCKING_QUEUE closures

- - - - -
03f941f4 by Ben Bellick at 2023-07-03T03:29:29-04:00
Add some structured diagnostics in Tc/Validity.hs

This addresses the work of ticket #20118
Created the following constructors for TcRnMessage
 - TcRnInaccessibleCoAxBranch
 - TcRnPatersonCondFailure

- - - - -
6074cc3c by Moisés Ackerman at 2023-07-03T03:30:13-04:00
Add failing test case for #23492

- - - - -
356a2692 by Moisés Ackerman at 2023-07-03T03:30:13-04:00
Use generated src span for catch-all case of record selector functions

This fixes #23492. The problem was that we used the real source span
of the field declaration for the generated catch-all case in the
selector function, in particular in the generated call to
`recSelError`, which meant it was included in the HIE output. Using
`generatedSrcSpan` instead means that it is not included.

- - - - -
3efe7f39 by Moisés Ackerman at 2023-07-03T03:30:13-04:00
Introduce genLHsApp and genLHsLit helpers in GHC.Rename.Utils

- - - - -
dd782343 by Moisés Ackerman at 2023-07-03T03:30:13-04:00
Construct catch-all default case using helpers

GHC.Rename.Utils concrete helpers instead of wrapGenSpan + HS AST constructors

- - - - -
0e09c38e by Ryan Hendrickson at 2023-07-03T03:30:56-04:00
Add regression test for #23549

- - - - -
32741743 by Alexis King at 2023-07-03T03:31:36-04:00
perf tests: Increase default stack size for MultiLayerModules

An unhelpfully small stack size appears to have been the real culprit
behind the metric fluctuations in #19293. Debugging metric decreases
triggered by !10729 helped to finally identify the problem.

Metric Decrease:
    MultiLayerModules
    MultiLayerModulesTH_Make
    T13701
    T14697

- - - - -
82ac6bf1 by Bryan Richter at 2023-07-03T03:32:15-04:00
Add missing void prototypes to rts functions

See #23561.

- - - - -
6078b429 by Ben Gamari at 2023-07-03T03:32:51-04:00
gitlab-ci: Refactor compilation of gen_ci

Flakify and document it, making it far less sensitive to the build
environment.

- - - - -
aa2db0ae by Ben Gamari at 2023-07-03T03:33:29-04:00
testsuite: Update documentation
- - - - -
924a2362 by Gregory Gerasev at 2023-07-03T03:34:10-04:00
Better error for data deriving of type synonym/family. Closes #23522

- - - - -
4457da2a by Dave Barton at 2023-07-03T03:34:51-04:00
Fix some broken links and typos

- - - - -
de5830d0 by Ben Gamari at 2023-07-04T22:03:59-04:00
configure: Rip out Solaris dyld check

Solaris 11 was released over a decade ago and, moreover, I doubt we have
any Solaris users

- - - - -
59c5fe1d by doyougnu at 2023-07-04T22:04:56-04:00
CI: add JS release and debug builds, regen CI jobs

- - - - -
679bbc97 by Vladislav Zavialov at 2023-07-04T22:05:32-04:00
testsuite: Do not require CUSKs

Numerous tests make use of CUSKs (complete user-supplied kinds),
a legacy feature scheduled for deprecation. In order to proceed
with the said deprecation, the tests have been updated to use SAKS
instead (standalone kind signatures).

This also allows us to remove the Haskell2010 language pragmas that
were added in 115cd3c85a8 to work around the lack of CUSKs in GHC2021.

- - - - -
945d3599 by Ben Gamari at 2023-07-04T22:06:08-04:00
gitlab: Drop backport-for-8.8 MR template

Its usefulness has long passed.
- - - - -
66c721d3 by Alan Zimmerman at 2023-07-04T22:06:44-04:00
EPA: Simplify GHC/Parser.y comb2

Use the HasLoc instance from Ast.hs to allow comb2 to work with
anything with a SrcSpan

This gets rid of the custom comb2A, comb2Al, comb2N functions, and
removes various reLoc calls.

- - - - -
2be99b7e by Matthew Pickering at 2023-07-04T22:07:21-04:00
Fix deprecation warning when deprecated identifier is from another module

A stray 'Just' was being printed in the deprecation message.

Fixes #23573

- - - - -
46c9bcd6 by Ben Gamari at 2023-07-04T22:07:58-04:00
rts: Don't rely on initializers for sigaction_t

As noted in #23577, CentOS's ancient toolchain throws spurious
missing-field-initializer warnings.

- - - - -
ec55035f by Ben Gamari at 2023-07-04T22:07:58-04:00
hadrian: Don't treat -Winline warnings as fatal

Such warnings are highly dependent upon the toolchain, platform, and
build configuration. It's simply too fragile to rely on these.

- - - - -
3a09b789 by Ben Gamari at 2023-07-04T22:07:58-04:00
hadrian: Only pass -Wno-nonportable-include-path on Darwin

This flag, which was introduced due to #17798, is only understood by
Clang and consequently throws warnings on platforms using gcc. Sadly,
there is no good way to treat such warnings as non-fatal with `-Werror`
so for now we simply make this flag specific to platforms known to use
Clang and case-insensitive filesystems (Darwin and Windows).

See #23577.

- - - - -
4af7eac2 by Mario Blažević at 2023-07-04T22:08:38-04:00
Fixed ticket #23571, TH.Ppr.pprLit hanging on large numeric literals

- - - - -
2304c697 by Ben Gamari at 2023-07-04T22:09:15-04:00
compiler: Make OccSet opaque

- - - - -
cf735db8 by Andrei Borzenkov at 2023-07-04T22:09:51-04:00
Add Note about why we need forall in Code to be on the right

- - - - -
fb140f82 by Hécate Moonlight at 2023-07-04T22:10:34-04:00
Relax the constraint about the foreign function's calling convention of FinalizerPtr to capi as well as ccall.
- - - - -
9ce44336 by meooow25 at 2023-07-05T11:42:37-04:00
Improve the situation with the stimes cycle

Currently the Semigroup stimes cycle is resolved in GHC.Base by
importing stimes implementations from a hs-boot file. Resolve the cycle
using hs-boot files for required classes (Num, Integral) instead. Now
stimes can be defined directly in GHC.Base, making inlining and
specialization possible.

This leads to some new boot files for `GHC.Num` and `GHC.Real`, the
methods for those are only used to implement `stimes` so it doesn't
appear that these boot files will introduce any new performance traps.

Metric Decrease:
    T13386
    T8095
Metric Increase:
    T13253
    T13386
    T18698a
    T18698b
    T19695
    T8095

- - - - -
9edcb1fb by Jaro Reinders at 2023-07-05T11:43:24-04:00
Refactor Unique to be represented by Word64

In #22010 we established that Int was not always sufficient to store all
the uniques we generate during compilation on 32-bit platforms. This
commit addresses that problem by using Word64 instead of Int for
uniques.

The core of the change is in GHC.Core.Types.Unique and
GHC.Core.Types.Unique.Supply. However, the representation of uniques is
used in many other places, so those needed changes too. Additionally, the RTS
has been extended with an atomic_inc64 operation.

One major change from this commit is the introduction of the Word64Set and
Word64Map data types. These are adapted versions of IntSet and IntMap
from the containers package. These are planned to be upstreamed in the
future.

As a natural consequence of these changes, the compiler will be a bit
slower and take more space on 32-bit platforms. Our CI tests indicate
around a 5% residency increase.

Metric Increase:
    CoOpt_Read
    CoOpt_Singletons
    LargeRecord
    ManyAlternatives
    ManyConstructors
    MultiComponentModules
    MultiComponentModulesRecomp
    MultiLayerModulesTH_OneShot
    RecordUpdPerf
    T10421
    T10547
    T12150
    T12227
    T12234
    T12425
    T12707
    T13035
    T13056
    T13253
    T13253-spj
    T13379
    T13386
    T13719
    T14683
    T14697
    T14766
    T15164
    T15703
    T16577
    T16875
    T17516
    T18140
    T18223
    T18282
    T18304
    T18698a
    T18698b
    T18923
    T1969
    T19695
    T20049
    T21839c
    T3064
    T3294
    T4801
    T5030
    T5321FD
    T5321Fun
    T5631
    T5642
    T5837
    T6048
    T783
    T8095
    T9020
    T9198
    T9233
    T9630
    T9675
    T9872a
    T9872b
    T9872b_defer
    T9872c
    T9872d
    T9961
    TcPlugin_RewritePerf
    UniqLoop
    WWRec
    hard_hole_fits

- - - - -
6b9db7d4 by Brandon Chinn at 2023-07-05T11:44:03-04:00
Fix docs for __GLASGOW_HASKELL_FULL_VERSION__ macro
- - - - -
40f4ef7c by Torsten Schmits at 2023-07-05T18:06:19-04:00
Substitute free variables captured by breakpoints in SpecConstr

Fixes #23267

- - - - -
2b55cb5f by sheaf at 2023-07-05T18:07:07-04:00
Reinstate untouchable variable error messages

This extra bit of information was accidentally being discarded after
a refactoring of the way we reported problems when unifying a type
variable with another type. This patch rectifies that.

- - - - -
53ed21c5 by Rodrigo Mesquita at 2023-07-05T18:07:47-04:00
configure: Drop Clang command from settings

Due to 01542cb7227614a93508b97ecad5b16dddeb6486 we no longer use the
`runClang` function, and no longer need to configure into settings the
Clang command. We used to determine options at runtime to pass clang when
it was used as an assembler, but now that we configure at configure time
we no longer need to.

- - - - -
6fdcf969 by Torsten Schmits at 2023-07-06T12:12:09-04:00
Filter out nontrivial substituted expressions in substTickish

Fixes #23272

- - - - -
41968fd6 by Sylvain Henry at 2023-07-06T12:13:02-04:00
JS: testsuite: use req_c predicate instead of js_broken

- - - - -
74a4dd2e by Sylvain Henry at 2023-07-06T12:13:02-04:00
JS: implement some file primitives (lstat,rmdir) (#22374)

- Implement lstat and rmdir.
- Implement base_c_s_is* functions (testing a file type)
- Enable passing tests

- - - - -
7e759914 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: cleanup utils (#23314)

- Removed unused code
- Don't export unused functions
- Move toTypeList to Closure module

- - - - -
f617655c by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: rename VarType/Vt into JSRep

- - - - -
19216ca5 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: remove custom PrimRep conversion (#23314)

We use the usual conversion to PrimRep and then we convert these
PrimReps to JSReps.

- - - - -
d3de8668 by Sylvain Henry at 2023-07-07T02:39:38-04:00
JS: don't use isRuntimeRepKindedTy in JS FFI

- - - - -
8d1b75cb by Matthew Pickering at 2023-07-07T02:40:15-04:00
ghcup-metadata: Also updates ghcup-nightlies-0.0.7.yaml file

Fixes #23600

- - - - -
e524fa7f by Matthew Pickering at 2023-07-07T02:40:15-04:00
ghcup-metadata: Use dynamically linked alpine bindists

In theory these will work much better on alpine to allow people to build
statically linked applications there. We don't need to distribute a
statically linked application ourselves in order to allow that.

Fixes #23602

- - - - -
0c2a756e by sheaf at 2023-07-07T13:45:12+02:00
Avoid incomplete record update in Haddock Hoogle

This commit avoids running into an incomplete record update warning
in the Hoogle backend of Haddock.

This was only noticed now, because incomplete record updates were broken
in GHC 9.6. Now that they are fixed, we have to avoid running into them!

- - - - -
b9e7beb9 by Ben Gamari at 2023-07-07T11:32:22-04:00
Drop circle-ci-job.sh

- - - - -
9955eead by Ben Gamari at 2023-07-07T11:32:22-04:00
testsuite: Allow preservation of unexpected output

Here we introduce a new flag to the testsuite driver,
--unexpected-output-dir=<dir>, which allows the user to ask
the driver to preserve unexpected output from tests. The intent is for
this to be used in CI to allow users to more easily fix unexpected
platform-dependent output.

- - - - -
48f80968 by Ben Gamari at 2023-07-07T11:32:22-04:00
gitlab-ci: Preserve unexpected output

Here we enable use of the testsuite driver's `--unexpected-output-dir`
flag by CI, preserving the result as an artifact for use by users.

- - - - -
76983a0d by Matthew Pickering at 2023-07-07T11:32:58-04:00
driver: Fix -S with .cmm files

There was an oversight in the driver which assumed that you would always
produce a `.o` file when compiling a .cmm file.

Fixes #23610

- - - - -
6df15e93 by Mike Pilgrem at 2023-07-07T11:33:40-04:00
Update Hadrian's stack.yaml
- - - - -
1dff43cf by Ben Gamari at 2023-07-08T05:05:37-04:00
compiler: Rework ShowSome

Previously the field used to filter the sub-declarations to show
was rather ad-hoc and was only able to show at most one sub-declaration.

- - - - -
8165404b by Ben Gamari at 2023-07-08T05:05:37-04:00
testsuite: Add test to catch changes in core libraries

This adds testing infrastructure to ensure that changes in core
libraries (e.g. `base` and `ghc-prim`) are caught in CI.

- - - - -
ec1c32e2 by Melanie Phoenix at 2023-07-08T05:06:14-04:00
Deprecate Data.List.NonEmpty.unzip

- - - - -
5d2442b8 by Ben Gamari at 2023-07-08T05:06:51-04:00
Drop latent mentions of -split-objs

Closes #21134.

- - - - -
a9bc20cb by Oleg Grenrus at 2023-07-08T05:07:31-04:00
Add warn_and_run test kind

This is a compile_and_run variant which also captures the GHC's
stderr. The warn_and_run name is best I can come up with,
as compile_and_run is taken.

This is useful specifically for testing warnings.  We want to test that
when warning triggers, and it's not a false positive, i.e. that the
runtime behaviour is indeed "incorrect".

As an example a single test is altered to use warn_and_run

- - - - -
c7026962 by Ben Gamari at 2023-07-08T05:08:11-04:00
configure: Don't use ld.gold on i386

ld.gold appears to produce invalid static constructor tables on i386.
While ideally we would add an autoconf check to check for this
brokenness, sadly such a check isn't easy to compose. Instead to
summarily reject such linkers on i386.

Somewhat hackily closes #23579.

- - - - -
054261dd by Andrew Lelechenko at 2023-07-08T19:32:47-04:00
Add since annotations for Data.Foldable1

- - - - -
550af505 by Sylvain Henry at 2023-07-08T19:33:28-04:00
JS: support -this-unit-id for programs in the linker (#23613)

- - - - -
d284470a by Andrew Lelechenko at 2023-07-08T19:34:08-04:00
Bump text submodule

- - - - -
8e11630e by jade at 2023-07-10T16:58:40-04:00
Add a hint to enable ExplicitNamespaces for type operator imports (Fixes/Enhances #20007)

As suggested in #20007 and implemented in !8895, trying to import type operators
will suggest a fix to use the 'type' keyword, without considering whether
ExplicitNamespaces is enabled. This patch will query whether ExplicitNamespaces
is enabled and add a hint to suggest enabling ExplicitNamespaces if it isn't enabled,
alongside the suggestion of adding the 'type' keyword.

- - - - -
61b1932e by sheaf at 2023-07-10T16:59:26-04:00
tyThingLocalGREs: include all DataCons for RecFlds

The GREInfo for a record field should include the collection of all
the data constructors of the parent TyCon that have this record field.
This information was being incorrectly computed in the tyThingLocalGREs
function for a DataCon, as we were not taking into account other
DataCons with the same parent TyCon.

Fixes #23546

- - - - -
e6627cbd by Alan Zimmerman at 2023-07-10T17:00:05-04:00
EPA: Simplify GHC/Parser.y comb3

A follow up to !10743

- - - - -
ee20da34 by Andrew Lelechenko at 2023-07-10T17:01:01-04:00
Document that compareByteArrays# is available since ghc-prim-0.5.2.0

- - - - -
4926af7b by Matthew Pickering at 2023-07-10T17:01:38-04:00
Revert "Bump text submodule"

This reverts commit d284470a77042e6bc17bdb0ab0d740011196958a.

This commit requires that we bootstrap with ghc-9.4, which we do not
require until #23195 has been completed.

Subsequently this has broken nighty jobs such as the rocky8 job which in
turn has broken nightly releases.

- - - - -
d1c92bf3 by Ben Gamari at 2023-07-11T08:07:02-04:00
compiler: Fingerprint more code generation flags

Previously our recompilation check was quite inconsistent in its
coverage of non-optimisation code generation flags. Specifically, we
failed to account for most flags that would affect the behavior of
generated code in ways that might affect the result of a program's
execution (e.g. `-feager-blackholing`, `-fstrict-dicts`)

Closes #23369.

- - - - -
eb623149 by Ben Gamari at 2023-07-11T08:07:02-04:00
compiler: Record original thunk info tables on stack

Here we introduce a new code generation option, `-forig-thunk-info`,
which ensures that an `stg_orig_thunk_info` frame is pushed before every
update frame. This can be invaluable when debugging thunk cycles and
similar.

See Note [Original thunk info table frames] for details.

Closes #23255.

- - - - -
4731f44e by Jaro Reinders at 2023-07-11T08:07:40-04:00
Fix wrong MIN_VERSION_GLASGOW_HASKELL macros

I forgot to change these after rebasing.

- - - - -
dd38aca9 by Andreas Schwab at 2023-07-11T13:55:56+00:00
Hadrian: enable GHCi support on riscv64

- - - - -
09a5c6cc by Josh Meredith at 2023-07-12T11:25:13-04:00
JavaScript: support unicode code points > 2^16 in toJSString using String.fromCodePoint (#23628)

- - - - -
29fbbd4e by Matthew Pickering at 2023-07-12T11:25:49-04:00
Remove references to make build system in mk/build.mk

Fixes #23636

- - - - -
630e3026 by sheaf at 2023-07-12T11:26:43-04:00
Valid hole fits: don't panic on a Given

The function GHC.Tc.Errors.validHoleFits would end up panicking when
encountering a Given constraint. To fix this, it suffices to filter out
the Givens before continuing.

Fixes #22684

- - - - -
c39f279b by Matthew Pickering at 2023-07-12T23:18:38-04:00
Use deb10 for i386 bindists

deb9 is now EOL so it's time to upgrade the i386 bindist to use deb10

Fixes #23585

- - - - -
bf9b9de0 by Krzysztof Gogolewski at 2023-07-12T23:19:15-04:00
Fix #23567, a specializer bug

Found by Simon in https://gitlab.haskell.org/ghc/ghc/-/issues/23567#note_507834

The testcase isn't ideal because it doesn't detect the bug in master,
unless doNotUnbox is removed as in
https://gitlab.haskell.org/ghc/ghc/-/issues/23567#note_507692.
But I have confirmed that with that modification, it fails before
and passes afterwards.

- - - - -
84c1a4a2 by Bartłomiej Cieślar at 2023-07-12T23:20:08-04:00
Comments

- - - - -
b2846cb5 by Bartłomiej Cieślar at 2023-07-12T23:20:08-04:00
updates to comments

- - - - -
2af23f0e by Bartłomiej Cieślar at 2023-07-12T23:20:08-04:00
changes

- - - - -
6143838a by sheaf at 2023-07-13T08:02:17-04:00
Fix deprecation of record fields

Commit 3f374399 inadvertently broke the deprecation/warning mechanism
for record fields due to its introduction of record field namespaces.

This patch ensures that, when a top-level deprecation is applied to
an identifier, it applies to all the record fields as well.
This is achieved by refactoring GHC.Rename.Env.lookupLocalTcNames, and
GHC.Rename.Env.lookupBindGroupOcc, to not look up a fixed number of
NameSpaces but to look up all NameSpaces and filter out the irrelevant
ones.

- - - - -
6fd8f566 by sheaf at 2023-07-13T08:02:17-04:00
Introduce greInfo, greParent

These are simple helper functions that wrap the internal
field names gre_info, gre_par.

- - - - -
7f0a86ed by sheaf at 2023-07-13T08:02:17-04:00
Refactor lookupGRE_... functions

This commit consolidates all the logic for looking up something in
the Global Reader Environment into the single function lookupGRE.
This allows us to declaratively specify all the different modes of
looking up in the GlobalRdrEnv, and avoids manually passing around
filtering functions as was the case in e.g. the function
GHC.Rename.Env.lookupSubBndrOcc_helper.

-------------------------
Metric Decrease:
    T8095
-------------------------
-------------------------
Metric Increase:
    T8095
-------------------------

- - - - -
5e951395 by Rodrigo Mesquita at 2023-07-13T08:02:54-04:00
configure: Drop DllWrap command

We used to configure into settings a DllWrap command for windows
builds and distributions, however, we no longer do, and dllwrap is
effectively unused.

This simplification is motivated in part by the larger
toolchain-selection project (#19877, !9263)

- - - - -
e10556b6 by Teo Camarasu at 2023-07-14T16:28:46-04:00
base: fix haddock syntax in GHC.Profiling

- - - - -
0f3fda81 by Matthew Pickering at 2023-07-14T16:29:23-04:00
Revert "CI: add JS release and debug builds, regen CI jobs"

This reverts commit 59c5fe1d4b624423b1c37891710f2757bb58d6af.

This commit added two duplicate jobs on all validate pipelines, so we
are reverting for now whilst we work out what the best way forward is.

Ticket #23618

- - - - -
54bca324 by Alan Zimmerman at 2023-07-15T03:23:26-04:00
EPA: Simplify GHC/Parser.y sLL

Follow up to !10743

- - - - -
c8863828 by sheaf at 2023-07-15T03:24:06-04:00
Configure: canonicalise PythonCmd on Windows

This change makes PythonCmd resolve to a canonical absolute path on
Windows, which prevents HLS getting confused (now that we have a
build-time dependency on python).

fixes #23652

- - - - -
ca1e636a by Rodrigo Mesquita at 2023-07-15T03:24:42-04:00
Improve Note [Binder-swap during float-out]

- - - - -
cf86f3ec by Matthew Craven at 2023-07-16T01:42:09+02:00
Equality of forall-types is visibility aware

This patch finally (I hope) nails the question of whether
   (forall a. ty) and (forall a -> ty)
are `eqType`: they aren't!

There is a long discussion in #22762, plus useful Notes:

* Note [ForAllTy and type equality] in GHC.Core.TyCo.Compare
* Note [Comparing visiblities] in GHC.Core.TyCo.Compare
* Note [ForAllCo] in GHC.Core.TyCo.Rep

It also establishes a helpful new invariant for ForAllCo,
and ForAllTy, when the bound variable is a CoVar:in that
case the visibility must be coreTyLamForAllTyFlag.

All this is well documented in revised Notes.

- - - - -
7f13acbf by Vladislav Zavialov at 2023-07-16T01:56:27-04:00
List and Tuple<n>: update documentation

Add the missing changelog.md entries and @since-annotations.

- - - - -
2afbddb0 by Andrei Borzenkov at 2023-07-16T10:21:24+04:00
Type patterns (#22478, #18986)

Improved name resolution and type checking of type patterns in constructors:

1. HsTyPat: a new dedicated data type that represents type patterns in
   HsConPatDetails instead of reusing HsPatSigType

2. rnHsTyPat: a new function that renames a type
   pattern and collects its binders into three groups:
    - explicitly bound type variables, excluding locally bound
      variables
    - implicitly bound type variables from kind signatures
      (only if ScopedTypeVariables are enabled)
    - named wildcards (only from kind signatures)
2a. rnHsPatSigTypeBindingVars: removed in favour of rnHsTyPat
2b. rnImplcitTvBndrs: removed because no longer needed

3. collect_pat: updated to collect type variable binders from type patterns
   (this means that types and terms use the same infrastructure to detect
   conflicting bindings, unused variables and name shadowing)
3a. CollVarTyVarBinders: a new CollectFlag constructor that enables
    collection of type variables

4. tcHsTyPat: a new function that typechecks type patterns, capable of
   handling polymorphic kinds.
   See Note [Type patterns: binders and unifiers]

Examples of code that is now accepted:

   f = \(P @a) -> \(P @a) -> ...  -- triggers -Wname-shadowing

   g :: forall a. Proxy a -> ...
   g (P @a) = ...                 -- also triggers -Wname-shadowing

   h (P @($(TH.varT (TH.mkName "t")))) = ...
                                  -- t is bound at splice time

   j (P @(a :: (x,x))) = ...      -- (x,x) is no longer rejected

   data T where
     MkT :: forall (f :: forall k. k -> Type).
       f Int -> f Maybe -> T
   k :: T -> ()
   k (MkT @f (x :: f Int) (y :: f Maybe)) = ()
                                  -- f :: forall k. k -> Type

Examples of code that is rejected with better error messages:

  f (Left @a @a _) = ...
  -- new message:
  --     • Conflicting definitions for ‘a’
  --       Bound at: Test.hs:1:11
  --                 Test.hs:1:14

Examples of code that is now rejected:

  {-# OPTIONS_GHC -Werror=unused-matches #-}
  f (P @a) = ()
  -- Defined but not used: type variable ‘a’

- - - - -
eb1a6ab1 by sheaf at 2023-07-16T09:20:45-04:00
Don't use substTyUnchecked in newMetaTyVar

There were some comments that explained that we needed to use an
unchecked substitution function because of issue #12931, but that
has since been fixed, so we should be able to use substTy instead now.

- - - - -
c7bbad9a by sheaf at 2023-07-17T02:48:19-04:00
rnImports: var shouldn't import NoFldSelectors

In an import declaration such as

  import M ( var )

the import of the variable "var" should **not** bring into scope record
fields named "var" which are defined with NoFieldSelectors.
Doing so can cause spurious "unused import" warnings, as reported in
ticket #23557.

Fixes #23557

- - - - -
1af2e773 by sheaf at 2023-07-17T02:48:19-04:00
Suggest similar names in imports

This commit adds similar name suggestions when importing. For example

  module A where { spelling = 'o' }
  module B where { import B ( speling ) }

will give rise to the error message:

  Module ‘A’ does not export ‘speling’.
  Suggested fix: Perhaps use ‘spelling’

This also provides hints when users try to import record fields defined
with NoFieldSelectors.

- - - - -
654fdb98 by Alan Zimmerman at 2023-07-17T02:48:55-04:00
EPA: Store leading AnnSemi for decllist in al_rest

This simplifies the markAnnListA implementation in ExactPrint

- - - - -
22565506 by sheaf at 2023-07-17T21:12:59-04:00
base: add COMPLETE pragma to BufferCodec PatSyn

This implements CLC proposal #178, rectifying an oversight in the
implementation of CLC proposal #134 which could lead to spurious
pattern match warnings.

https://github.com/haskell/core-libraries-committee/issues/178
https://github.com/haskell/core-libraries-committee/issues/134

- - - - -
860f6269 by sheaf at 2023-07-17T21:13:00-04:00
exactprint: silence incomplete record update warnings

- - - - -
df706de3 by sheaf at 2023-07-17T21:13:00-04:00
Re-instate -Wincomplete-record-updates

Commit e74fc066 refactored the handling of record updates to use
the HsExpanded mechanism. This meant that the pattern matching inherent
to a record update was considered to be "generated code", and thus we
stopped emitting "incomplete record update" warnings entirely.

This commit changes the "data Origin = Source | Generated" datatype,
adding a field to the Generated constructor to indicate whether we
still want to perform pattern-match checking. We also have to do a bit
of plumbing with HsCase, to record that the HsCase arose from an
HsExpansion of a RecUpd, so that the error message continues to mention
record updates as opposed to a generic "incomplete pattern matches in case"
error.

Finally, this patch also changes the way we handle inaccessible code
warnings. Commit e74fc066 was also a regression in this regard, as we
were emitting "inaccessible code" warnings for case statements spuriously
generated when desugaring a record update (remember: the desugaring mechanism
happens before typechecking; it thus can't take into account e.g. GADT information
in order to decide which constructors to include in the RHS of the desugaring
of the record update).
We fix this by changing the mechanism through which we disable inaccessible
code warnings: we now check whether we are in generated code in
GHC.Tc.Utils.TcMType.newImplication in order to determine whether to
emit inaccessible code warnings.

Fixes #23520
Updates haddock submodule, to avoid incomplete record update warnings

- - - - -
1d05971e by sheaf at 2023-07-17T21:13:00-04:00
Propagate long-distance information in do-notation

The preceding commit re-enabled pattern-match checking inside record
updates. This revealed that #21360 was in fact NOT fixed by e74fc066.

This commit makes sure we correctly propagate long-distance information
in do blocks, e.g. in

```haskell
data T = A { fld :: Int } | B

f :: T -> Maybe T
f r = do
  a at A{} <- Just r
  Just $ case a of { A _ -> A 9 }
```

we need to propagate the fact that "a" is headed by the constructor "A"
to see that the case expression "case a of { A _ -> A 9 }" cannot fail.

Fixes #21360

- - - - -
bea0e323 by sheaf at 2023-07-17T21:13:00-04:00
Skip PMC for boring patterns

Some patterns introduce no new information to the pattern-match
checker (such as plain variable or wildcard patterns). We can thus
skip doing any pattern-match checking on them when the sole purpose
for doing so was introducing new long-distance information.

See Note [Boring patterns] in GHC.Hs.Pat.

Doing this avoids regressing in performance now that we do additional
pattern-match checking inside do notation.

- - - - -
ddcdd88c by Rodrigo Mesquita at 2023-07-17T21:13:36-04:00
Split GHC.Platform.ArchOS from ghc-boot into ghc-platform

Split off the `GHC.Platform.ArchOS` module from the `ghc-boot` package
into this reinstallable standalone package which abides by the PVP, in
part motivated by the ongoing work on `ghc-toolchain` towards runtime
retargetability.

- - - - -
b55a8ea7 by Sylvain Henry at 2023-07-17T21:14:27-04:00
JS: better implementation for plusWord64 (#23597)

- - - - -
889c2bbb by sheaf at 2023-07-18T06:37:32-04:00
Do primop rep-poly checks when instantiating

This patch changes how we perform representation-polymorphism checking
for primops (and other wired-in Ids such as coerce).
When instantiating the primop, we check whether each type variable
is required to instantiated to a concrete type, and if so we create a
new concrete metavariable (a ConcreteTv) instead of a simple MetaTv.
(A little subtlety is the need to apply the substitution obtained from
instantiating to the ConcreteTvOrigins, see
Note [substConcreteTvOrigin] in GHC.Tc.Utils.TcMType.)

This allows us to prevent representation-polymorphism in non-argument
position, as that is required for some of these primops.

We can also remove the logic in tcRemainingValArgs, except for
the part concerning representation-polymorphic unlifted newtypes.
The function has been renamed rejectRepPolyNewtypes; all it does now
is reject unsaturated occurrences of representation-polymorphic newtype
constructors when the representation of its argument isn't a concrete
RuntimeRep (i.e. still a PHASE 1 FixedRuntimeRep check).
The Note [Eta-expanding rep-poly unlifted newtypes] in GHC.Tc.Gen.Head
gives more explanation about a possible path to PHASE 2, which would be
in line with the treatment for primops taken in this patch.

We also update the Core Lint check to handle this new framework. This
means Core Lint now checks representation-polymorphism in continuation
position like needed for catch#.

Fixes #21906

-------------------------
Metric Increase:
    LargeRecord
-------------------------

- - - - -
00648e5d by Krzysztof Gogolewski at 2023-07-18T06:38:10-04:00
Core Lint: distinguish let and letrec in locations

Lint messages were saying "in the body of letrec" even for non-recursive
let.

I've also renamed BodyOfLetRec to BodyOfLet in stg, since there's no
separate letrec.

- - - - -
787bae96 by Krzysztof Gogolewski at 2023-07-18T06:38:50-04:00
Use extended literals when deriving Show

This implements GHC proposal
https://github.com/ghc-proposals/ghc-proposals/pull/596

Also add support for Int64# and Word64#; see testcase ShowPrim.

- - - - -
257f1567 by Jaro Reinders at 2023-07-18T06:39:29-04:00
Add StgFromCore and StgCodeGen linting

- - - - -
34d08a20 by Ben Gamari at 2023-07-19T03:33:22-04:00
Reg.Liveness: Strictness

- - - - -
c5deaa27 by Ben Gamari at 2023-07-19T03:33:22-04:00
Reg.Liveness: Don't repeatedly construct UniqSets

- - - - -
b947250b by Ben Gamari at 2023-07-19T03:33:22-04:00
compiler/Types: Ensure that fromList-type operations can fuse

In #20740 I noticed that mkUniqSet does not fuse. In practice, allowing
it to do so makes a considerable difference in allocations due to the
backend.

Metric Decrease:
    T12707
    T13379
    T3294
    T4801
    T5321FD
    T5321Fun
    T783

- - - - -
6c88c2ba by Sven Tennie at 2023-07-19T03:33:59-04:00
x86 Codegen: Implement MO_S_MulMayOflo for W16

- - - - -
5f1154e0 by Sven Tennie at 2023-07-19T03:33:59-04:00
x86 CodeGen: MO_S_MulMayOflo better error message for rep > W64

It's useful to see which value made the pattern match fail. (If it ever
occurs.)

- - - - -
e8c9a95f by Sven Tennie at 2023-07-19T03:33:59-04:00
x86 CodeGen: Implement MO_S_MulMayOflo for W8

This case wasn't handled before. But, the test-primops test suite showed
that it actually might appear.

- - - - -
a36f9dc9 by Sven Tennie at 2023-07-19T03:33:59-04:00
Add test for %mulmayoflo primop

The test expects a perfect implementation with no false positives.

- - - - -
38a36248 by Matthew Pickering at 2023-07-19T03:34:36-04:00
lint-ci-config: Generate jobs-metadata.json

We also now save the jobs-metadata.json and jobs.yaml file as artifacts
as:

* It might be useful for someone who is modifying CI to copy jobs.yaml
  if they are having trouble regenerating locally.
* jobs-metadata.json is very useful for downstream pipelines to work out
  the right job to download.

Fixes #23654

- - - - -
1535a671 by Vladislav Zavialov at 2023-07-19T03:35:12-04:00
Initialize 9.10.1-notes.rst

Create new release notes for the next GHC release (GHC 9.10)

- - - - -
3bd4d5b5 by sheaf at 2023-07-19T03:35:53-04:00
Prioritise Parent when looking up class sub-binder

When we look up children GlobalRdrElts of a given Parent, we sometimes
would rather prioritise those GlobalRdrElts which have the right Parent,
and sometimes prioritise those that have the right NameSpace:

  - in export lists, we should prioritise NameSpace
  - for class/instance binders, we should prioritise Parent

See Note [childGREPriority] in GHC.Types.Name.Reader.

fixes #23664

- - - - -
9c8fdda3 by Alan Zimmerman at 2023-07-19T03:36:29-04:00
EPA: Improve annotation management in getMonoBind

Ensure the LHsDecl for a FunBind has the correct leading comments and
trailing annotations.

See the added note for details.

- - - - -
ff884b77 by Matthew Pickering at 2023-07-19T11:42:02+01:00
Remove unused files in .gitlab

These were left over after 6078b429

- - - - -
29ef590c by Matthew Pickering at 2023-07-19T11:42:52+01:00
gen_ci: Add hie.yaml file

This allows you to load `gen_ci.hs` into HLS, and now it is a huge
module, that is quite useful.

- - - - -
808b55cf by Matthew Pickering at 2023-07-19T12:24:41+01:00
ci: Make "fast-ci" the default validate configuration

We are trying out a lighter weight validation pipeline where by default
we just test on 5 platforms:

* x86_64-deb10-slow-validate
* windows
* x86_64-fedora33-release
* aarch64-darwin
* aarch64-linux-deb10

In order to enable the "full" validation pipeline you can apply the
`full-ci` label which will enable all the validation pipelines.

All the validation jobs are still run on a marge batch.

The goal is to reduce the overall CI capacity so that pipelines start
faster for MRs and marge bot batches are faster.

Fixes #23694

- - - - -
0b23db03 by Alan Zimmerman at 2023-07-20T05:28:47-04:00
EPA: Simplify GHC/Parser.y sL1

This is the next patch in a series simplifying location management in
GHC/Parser.y

This one simplifies sL1, to use the HasLoc instances introduced in
!10743 (closed)

- - - - -
3ece9856 by Ben Gamari at 2023-07-21T07:30:45-04:00
nativeGen: Explicitly set flags of text sections on Windows

The binutils documentation (for COFF) claims,

> If no flags are specified, the default flags depend upon the section
> name. If the section name is not recognized, the default will be for the
> section to be loaded and writable.

We previously assumed that this would do the right thing for split
sections (e.g. a section named `.text$foo` would be correctly inferred
to be a text section). However, we have observed that this is not the
case (at least under the clang toolchain used on Windows): when
split-sections is enabled, text sections are treated by the assembler as
data (matching the "default" behavior specified by the documentation).

Avoid this by setting section flags explicitly. This should fix split
sections on Windows.

Fixes #22834.

- - - - -
db7f7240 by Ben Gamari at 2023-07-21T07:30:45-04:00
nativeGen: Set explicit section types on all platforms

- - - - -
b444c16f by Finley McIlwaine at 2023-07-21T07:31:28-04:00
Insert documentation into parsed signature modules

Causes haddock comments in signature modules to be properly
inserted into the AST (just as they are for regular modules)
if the `-haddock` flag is given.

Also adds a test that compares `-ddump-parsed-ast` output
for a signature module to prevent further regressions.

Fixes #23315

- - - - -
f9b952a7 by Ben Gamari at 2023-07-21T11:58:05-04:00
Bump base bound to <4.20

For GHC 9.8.

- - - - -
c30cea53 by Ben Gamari at 2023-07-21T23:23:49-04:00
primops: Introduce unsafeThawByteArray#

This addresses an odd asymmetry in the ByteArray# primops, which
previously provided unsafeFreezeByteArray# but no corresponding
thaw operation.

Closes #22710

- - - - -
87f9bd47 by Ben Gamari at 2023-07-21T23:23:49-04:00
testsuite: Elaborate in interface stability README

This discussion didn't make it into the original MR.

- - - - -
e4350b41 by Matthew Pickering at 2023-07-21T23:24:25-04:00
Allow users to override non-essential haddock options in a Flavour

We now supply the non-essential options to haddock using the `extraArgs`
field, which can be specified in a Flavour so that if an advanced user
wants to change how documentation is generated then they can use
something other than the `defaultHaddockExtraArgs`.

This does have the potential to regress some packaging if a user has
overridden `extraArgs` themselves, because now they also need to add
the haddock options to extraArgs. This can easily be done by appending
`defaultHaddockExtraArgs` to their extraArgs invocation but someone
might not notice this behaviour has changed.

In any case, I think passing the non-essential options in this manner is
the right thing to do and matches what we do for the "ghc" builder,
which by default doesn't pass any optmisation levels, and would likewise
be very bad if someone didn't pass suitable `-O` levels for builds.

Fixes #23625

- - - - -
fc186b0c by Ilias Tsitsimpis at 2023-07-21T23:25:03-04:00
ghc-prim: Link against libatomic

Commit b4d39adbb58 made 'hs_cmpxchg64()' available to all architectures.
Unfortunately this made GHC to fail to build on armel, since armel needs
libatomic to support atomic operations on 64-bit word sizes.

Configure libraries/ghc-prim/ghc-prim.cabal to link against libatomic,
the same way as we do in rts/rts.cabal.

- - - - -
4f5538a8 by Matthew Pickering at 2023-07-21T23:25:39-04:00
simplifier: Correct InScopeSet in rule matching

The in-scope set passedto the `exprIsLambda_maybe` call lacked all the
in-scope binders. @simonpj suggests this fix where we augment the
in-scope set with the free variables of expression which fixes this
failure mode in quite a direct way.

Fixes #23630

- - - - -
5ad8d597 by Krzysztof Gogolewski at 2023-07-21T23:26:17-04:00
Add a test for #23413

It was fixed by commit e1590ddc661d6: Add the SolverStage monad.

- - - - -
7e05f6df by sheaf at 2023-07-21T23:26:56-04:00
Finish migration of diagnostics in GHC.Tc.Validity

This patch finishes migrating the error messages in GHC.Tc.Validity
to use the new diagnostic infrastructure.

It also refactors the error message datatypes for class and family
instances, to common them up under a single datatype as much as possible.

- - - - -
4876fddc by Matthew Pickering at 2023-07-21T23:27:33-04:00
ci: Enable some more jobs to run in a marge batch

In !10907 I made the majority of jobs not run on a validate pipeline but
then forgot to renable a select few jobs on the marge batch MR.

- - - - -
026991d7 by Jens Petersen at 2023-07-21T23:28:13-04:00
user_guide/flags.py: python-3.12 no longer includes distutils

packaging.version seems able to handle this fine

- - - - -
b91bbc2b by Matthew Pickering at 2023-07-21T23:28:50-04:00
ci: Mention ~full-ci label in MR template

We mention that if you need a full validation pipeline then you can
apply the ~full-ci label to your MR in order to test against the full
validation pipeline (like we do for marge).

- - - - -
42b05e9b by sheaf at 2023-07-22T12:36:00-04:00
RTS: declare setKeepCAFs symbol

Commit 08ba8720 failed to declare the dependency of keepCAFsForGHCi on
the symbol setKeepCAFs in the RTS, which led to undefined symbol errors
on Windows, as exhibited by the testcase frontend001.

Thanks to Moritz Angermann and Ryan Scott for the diagnosis and fix.

Fixes #22961

- - - - -
a72015d6 by sheaf at 2023-07-22T12:36:01-04:00
Mark plugins-external as broken on Windows

This test is broken on Windows, so we explicitly mark it as such now
that we stop skipping plugin tests on Windows.

- - - - -
cb9c93d7 by sheaf at 2023-07-22T12:36:01-04:00
Stop marking plugin tests as fragile on Windows

Now that b2bb3e62 has landed we are in a better situation with
regards to plugins on Windows, allowing us to unmark many plugin tests
as fragile.

Fixes #16405

- - - - -
a7349217 by Krzysztof Gogolewski at 2023-07-22T12:36:37-04:00
Misc cleanup

- Remove unused RDR names
- Fix typos in comments
- Deriving: simplify boxConTbl and remove unused litConTbl
- chmod -x GHC/Exts.hs, this seems accidental

- - - - -
33b6850a by Vladislav Zavialov at 2023-07-23T10:27:37-04:00
Visible forall in types of terms: Part 1 (#22326)

This patch implements part 1 of GHC Proposal #281,
introducing explicit `type` patterns and `type` arguments.

Summary of the changes:

1. New extension flag:
     RequiredTypeArguments

2. New user-facing syntax:
     `type p` patterns    (represented by EmbTyPat)
     `type e` expressions (represented by HsEmbTy)

3. Functions with required type arguments (visible forall)
   can now be defined and applied:
      idv :: forall a -> a -> a    -- signature   (relevant change: checkVdqOK in GHC/Tc/Validity.hs)
      idv (type a) (x :: a) = x    -- definition  (relevant change: tcPats in GHC/Tc/Gen/Pat.hs)
      x = idv (type Int) 42        -- usage       (relevant change: tcInstFun in GHC/Tc/Gen/App.hs)

4. template-haskell support:
      TH.TypeE corresponds to HsEmbTy
      TH.TypeP corresponds to EmbTyPat

5. Test cases and a new User's Guide section

Changes *not* included here are the t2t (term-to-type) transformation
and term variable capture; those belong to part 2.

- - - - -
73b5c7ce by sheaf at 2023-07-23T10:28:18-04:00
Add test for #22424

This is a simple Template Haskell test in which we refer to
record selectors by their exact Names, in two different ways.

Fixes #22424

- - - - -
83cbc672 by Ben Gamari at 2023-07-24T07:40:49+00:00
ghc-toolchain: Initial commit

- - - - -
31dcd26c by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
ghc-toolchain: Toolchain Selection

This commit integrates ghc-toolchain, the brand new way of configuring
toolchains for GHC, with the Hadrian build system, with configure, and
extends and improves the first iteration of ghc-toolchain.

The general overview is

* We introduce a program invoked `ghc-toolchain --triple=...` which, when run,
  produces a file with a `Target`. A `GHC.Toolchain.Target.Target`
  describes the properties of a target and the toolchain (executables
  and configured flags) to produce code for that target

* Hadrian was modified to read Target files, and will both
  * Invoke the toolchain configured in the Target file as needed
  * Produce a `settings` file for GHC based on the Target file for that stage

* `./configure` will invoke ghc-toolchain to generate target files, but
  it will also generate target files based on the flags configure itself
  configured (through `.in` files that are substituted)

  * By default, the Targets generated by configure are still (for now) the ones used by Hadrian

  * But we additionally validate the Target files generated by
    ghc-toolchain against the ones generated by configure, to get a head
    start on catching configuration bugs before we transition
    completely.

  * When we make that transition, we will want to drop a lot of the
    toolchain configuration logic from configure, but keep it otherwise.

* For each compiler stage we should have 1 target file (up to a stage compiler we can't run in our machine)
  * We just have a HOST target file, which we use as the target for stage0
  * And a TARGET target file, which we use for stage1 (and later stages, if not cross compiling)
  * Note there is no BUILD target file, because we only support cross compilation where BUILD=HOST
  * (for more details on cross-compilation see discussion on !9263)

See also
* Note [How we configure the bundled windows toolchain]
* Note [ghc-toolchain consistency checking]
* Note [ghc-toolchain overview]

Ticket: #19877
MR: !9263

- - - - -
a732b6d3 by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Add flag to enable/disable ghc-toolchain based configurations

This flag is disabled by default, and we'll use the
configure-generated-toolchains by default until we remove the toolchain
configuration logic from configure.

- - - - -
61eea240 by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Split ghc-toolchain executable to new packge

In light of #23690, we split the ghc-toolchain executable out of the
library package to be able to ship it in the bindist using Hadrian.

Ideally, we eventually revert this commit.

- - - - -
38e795ff by Rodrigo Mesquita at 2023-07-24T07:40:49+00:00
Ship ghc-toolchain in the bindist

Add the ghc-toolchain binary to the binary distribution we ship to
users, and teach the bindist configure to use the existing ghc-toolchain.

- - - - -
32cae784 by Matthew Craven at 2023-07-24T16:48:24-04:00
Kill off gen_bytearray_addr_access_ops.py

The relevant primop descriptions are now
generated directly by genprimopcode.

This makes progress toward fixing #23490, but it is not
a complete fix since there is more than one way in which
cabal-reinstall (hadrian/build build-cabal) is broken.

- - - - -
02e6a6ce by Matthew Pickering at 2023-07-24T16:49:00-04:00
compiler: Remove unused `containers.h` include

Fixes #23712

- - - - -
822ef66b by Matthew Pickering at 2023-07-25T08:44:50-04:00
Fix pretty printing of WARNING pragmas

There is still something quite unsavoury going on with WARNING pragma
printing because the printing relies on the fact that for decl
deprecations the SourceText of WarningTxt is empty. However, I let that
lion sleep and just fixed things directly.

Fixes #23465

- - - - -
e7b38ede by Matthew Pickering at 2023-07-25T08:45:28-04:00
ci-images: Bump to commit which has 9.6 image

The test-bootstrap job has been failing for 9.6 because we accidentally
used a non-master commit.

- - - - -
bb408936 by Matthew Pickering at 2023-07-25T08:45:28-04:00
Update bootstrap plans for 9.6.2 and 9.4.5

- - - - -
355e1792 by Alan Zimmerman at 2023-07-26T10:17:32-04:00
EPA: Simplify GHC/Parser.y comb4/comb5

Use the HasLoc instance from Ast.hs to allow comb4/comb5 to work with
anything with a SrcSpan

Also get rid of some more now unnecessary reLoc calls.

- - - - -
9393df83 by Gavin Zhao at 2023-07-26T10:18:16-04:00
compiler: make -ddump-asm work with wasm backend NCG

Fixes #23503.

Now the `-ddump-asm` flag is respected in the wasm backend
NCG, so developers can directly view the generated ASM instead of
needing to pass `-S` or `-keep-tmp-files` and manually find & open
the assembly file.

Ideally, we should be able to output the assembly files in smaller
chunks like in other NCG backends. This would also make dumping assembly
stats easier. However, this would require a large refactoring, so for
short-term debugging purposes I think the current approach works fine.

Signed-off-by: Gavin Zhao <git at gzgz.dev>

- - - - -
79463036 by Krzysztof Gogolewski at 2023-07-26T10:18:54-04:00
llvm: Restore accidentally deleted code in 0fc5cb97

Fixes #23711

- - - - -
20db7e26 by Rodrigo Mesquita at 2023-07-26T10:19:33-04:00
configure: Default missing options to False when preparing ghc-toolchain Targets

This commit fixes building ghc with 9.2 as the boostrap compiler.

The ghc-toolchain patch assumed all _STAGE0 options were available, and
forgot to account for this missing information in 9.2.

Ghc 9.2 does not have in settings whether ar supports -l, hence can't
report it with --info (unliked 9.4 upwards).

The fix is to default the missing information (we default "ar supports
-l" and other missing options to False)

- - - - -
fac9e84e by Naïm Favier at 2023-07-26T10:20:16-04:00
docs: Fix typo
- - - - -
503fd647 by Bartłomiej Cieślar at 2023-07-26T17:23:10-04:00
This MR is an implementation of the proposal #516.

It adds a warning -Wincomplete-record-selectors for usages of a record
field access function (either a record selector or getField @"rec"),
while trying to silence the warning whenever it can be sure that a constructor
without the record field would not be invoked (which would otherwise cause
the program to fail). For example:

    data T = T1 | T2 {x :: Bool}

    f a = x a -- this would throw an error

    g T1 = True
    g a = x a -- this would not throw an error

    h :: HasField "x" r Bool => r -> Bool
    h = getField @"x"

    j :: T -> Bool
    j = h -- this would throw an error because of the `HasField`
          -- constraint being solved

See the tests DsIncompleteRecSel* and TcIncompleteRecSel for more examples of the warning.
See Note [Detecting incomplete record selectors] in GHC.HsToCore.Expr for implementation details

- - - - -
af6fdf42 by Arnaud Spiwack at 2023-07-26T17:23:52-04:00
Fix user-facing label in MR template

- - - - -
5d45b92a by Matthew Pickering at 2023-07-27T05:46:46-04:00
ci: Test bootstrapping configurations with full-ci and on marge batches

There have been two incidents recently where bootstrapping has been
broken by removing support for building with 9.2.*.

The process for bumping the minimum required version starts with bumping
the configure version and then other CI jobs such as the bootstrap jobs
have to be updated. We must not silently bump the minimum required
version.

Now we are running a slimmed down validate pipeline it seems worthwile
to test these bootstrap configurations in the full-ci pipeline.

- - - - -
25d4fee7 by Matthew Pickering at 2023-07-27T05:46:46-04:00
bootstrap: Remove ghc-9_2_* plans

We are anticipating shortly making it necessary to use ghc-9.4 to boot
the compiler.

- - - - -
2f66da16 by Matthew Pickering at 2023-07-27T05:46:46-04:00
Update bootstrap plans for ghc-platform and ghc-toolchain dependencies

Fixes #23735

- - - - -
c8c6eab1 by Matthew Pickering at 2023-07-27T05:46:46-04:00
bootstrap: Disable -selftest flag from bootstrap plans

This saves on building one dependency (QuickCheck) which is unecessary
for bootstrapping.

- - - - -
a80ca086 by Andrew Lelechenko at 2023-07-27T05:47:26-04:00
Link reference paper and package from System.Mem.{StableName,Weak}

- - - - -
a5319358 by David Knothe at 2023-07-28T13:13:10-04:00
Update Match Datatype

EquationInfo currently contains a list of the equation's patterns together with a CoreExpr that is to be evaluated after a successful match on this equation.
All the match-functions only operate on the first pattern of an equation - after successfully matching it, match is called recursively on the tail of the pattern list.
We can express this more clearly and make the code a little more elegant by updating the datatype of EquationInfo as follows:

data EquationInfo
    = EqnMatch { eqn_pat = Pat GhcTc, eqn_rest = EquationInfo }
    | EqnDone { eqn_rhs = MatchResult CoreExpr }

An EquationInfo now explicitly exposes its first pattern which most functions operate on, and exposes the equation that remains after processing the first pattern. An EqnDone signifies an empty equation where the CoreExpr can now be evaluated.

- - - - -
86ad1af9 by David Binder at 2023-07-28T13:13:53-04:00
Improve documentation for Data.Fixed

- - - - -
f8fa1d08 by Ben Gamari at 2023-07-28T13:14:31-04:00
ghc-prim: Use C11 atomics

Previously `ghc-prim`'s atomic wrappers used the legacy `__sync_*`
family of C builtins. Here we refactor these to rather use the
appropriate C11 atomic equivalents, allowing us to be more explicit
about the expected ordering semantics.

- - - - -
0bfc8908 by Finley McIlwaine at 2023-07-28T18:46:26-04:00
Include -haddock in DynFlags fingerprint

The -haddock flag determines whether or not the resulting .hi files
contain haddock documentation strings. If the existing .hi files do
not contain haddock documentation strings and the user requests them,
we should recompile.

- - - - -
40425c50 by Andreas Klebinger at 2023-07-28T18:47:02-04:00
Aarch64 NCG: Use encoded immediates for literals.

Try to generate

    instr x2, <imm>

instead of

    mov x1, lit
    instr x2, x1

When possible. This get's rid if quite a few redundant
mov instructions.

I believe this causes a metric decrease for LargeRecords as
we reduce register pressure.

-------------------------
Metric Decrease:
    LargeRecord
-------------------------

- - - - -
e9a0fa3f by Andrew Lelechenko at 2023-07-28T18:47:42-04:00
Bump filepath submodule to 1.4.100.4

Resolves #23741

Metric Decrease:
    MultiComponentModules
    MultiComponentModulesRecomp
    MultiLayerModules
    MultiLayerModulesRecomp
    T10421
    T12234
    T12425
    T13035
    T13701
    T13719
    T16875
    T18304
    T18698a
    T18698b
    T21839c
    T9198
    TcPlugin_RewritePerf
    hard_hole_fits

Metric decrease on Windows can be probably attributed to https://github.com/haskell/filepath/pull/183

- - - - -
ee93edfd by Andrew Lelechenko at 2023-07-28T18:48:21-04:00
Add since pragmas to GHC.IO.Handle.FD

- - - - -
d0369802 by Simon Peyton Jones at 2023-07-30T09:24:48+01:00
Make the occurrence analyser smarter about join points

This MR addresses #22404.  There is a big Note

   Note [Occurrence analysis for join points]

that explains it all.  Significant changes

* New field occ_join_points in OccEnv

* The NonRec case of occAnalBind splits into two cases:
  one for existing join points (which does the special magic for
  Note [Occurrence analysis for join points], and one for other
  bindings.

* mkOneOcc adds in info from occ_join_points.

* All "bring into scope" activity is centralised in the
  new function `addInScope`.

* I made a local data type LocalOcc for use inside the occurrence analyser
  It is like OccInfo, but lacks IAmDead and IAmALoopBreaker, which in turn
  makes computationns over it simpler and more efficient.

* I found quite a bit of allocation in GHC.Core.Rules.getRules
  so I optimised it a bit.

More minor changes

* I found I was using (Maybe Arity) a lot, so I defined a new data
  type JoinPointHood and used it everwhere.  This touches a lot of
  non-occ-anal files, but it makes everything more perspicuous.

* Renamed data constructor WithUsageDetails to WUD, and
  WithTailUsageDetails to WTUD

This also fixes #21128, on the way.

--------- Compiler perf -----------
I spent quite a time on performance tuning, so even though it
does more than before, the occurrence analyser runs slightly faster
on average.  Here are the compile-time allocation changes over 0.5%

      CoOpt_Read(normal) ghc/alloc    766,025,520    754,561,992  -1.5%
CoOpt_Singletons(normal) ghc/alloc    759,436,840    762,925,512  +0.5%
     LargeRecord(normal) ghc/alloc  1,814,482,440  1,799,530,456  -0.8%
       PmSeriesT(normal) ghc/alloc     68,159,272     67,519,720  -0.9%
          T10858(normal) ghc/alloc    120,805,224    118,746,968  -1.7%
          T11374(normal) ghc/alloc    164,901,104    164,070,624  -0.5%
          T11545(normal) ghc/alloc     79,851,808     78,964,704  -1.1%
          T12150(optasm) ghc/alloc     73,903,664     71,237,544  -3.6% GOOD
          T12227(normal) ghc/alloc    333,663,200    331,625,864  -0.6%
          T12234(optasm) ghc/alloc     52,583,224     52,340,344  -0.5%
          T12425(optasm) ghc/alloc     81,943,216     81,566,720  -0.5%
          T13056(optasm) ghc/alloc    294,517,928    289,642,512  -1.7%
      T13253-spj(normal) ghc/alloc    118,271,264     59,859,040 -49.4% GOOD
          T15164(normal) ghc/alloc  1,102,630,352  1,091,841,296  -1.0%
          T15304(normal) ghc/alloc  1,196,084,000  1,166,733,000  -2.5%
          T15630(normal) ghc/alloc    148,729,632    147,261,064  -1.0%
          T15703(normal) ghc/alloc    379,366,664    377,600,008  -0.5%
          T16875(normal) ghc/alloc     32,907,120     32,670,976  -0.7%
          T17516(normal) ghc/alloc  1,658,001,888  1,627,863,848  -1.8%
          T17836(normal) ghc/alloc    395,329,400    393,080,248  -0.6%
          T18140(normal) ghc/alloc     71,968,824     73,243,040  +1.8%
          T18223(normal) ghc/alloc    456,852,568    453,059,088  -0.8%
          T18282(normal) ghc/alloc    129,105,576    131,397,064  +1.8%
          T18304(normal) ghc/alloc     71,311,712     70,722,720  -0.8%
         T18698a(normal) ghc/alloc    208,795,112    210,102,904  +0.6%
         T18698b(normal) ghc/alloc    230,320,736    232,697,976  +1.0%  BAD
          T19695(normal) ghc/alloc  1,483,648,128  1,504,702,976  +1.4%
          T20049(normal) ghc/alloc     85,612,024     85,114,376  -0.6%
         T21839c(normal) ghc/alloc    415,080,992    410,906,216  -1.0% GOOD
           T4801(normal) ghc/alloc    247,590,920    250,726,272  +1.3%
           T6048(optasm) ghc/alloc     95,699,416     95,080,680  -0.6%
            T783(normal) ghc/alloc    335,323,384    332,988,120  -0.7%
           T9233(normal) ghc/alloc    709,641,224    685,947,008  -3.3% GOOD
           T9630(normal) ghc/alloc    965,635,712    948,356,120  -1.8%
           T9675(optasm) ghc/alloc    444,604,152    428,987,216  -3.5% GOOD
           T9961(normal) ghc/alloc    303,064,592    308,798,800  +1.9%  BAD
           WWRec(normal) ghc/alloc    503,728,832    498,102,272  -1.1%

               geo. mean                                          -1.0%
               minimum                                           -49.4%
               maximum                                            +1.9%

In fact these figures seem to vary between platforms; generally worse
on i386 for some reason.  The Windows numbers vary by 1% espec in
benchmarks where the total allocation is low. But the geom mean stays
solidly negative, which is good.  The "increase/decrease" list below
covers all platforms.

The big win on T13253-spj comes because it has a big nest of join
points, each occurring twice in the next one.  The new occ-anal takes
only one iteration of the simplifier to do the inlining; the old one
took four.  Moreover, we get much smaller code with the new one:

  New: Result size of Tidy Core
    = {terms: 429, types: 84, coercions: 0, joins: 14/14}

  Old: Result size of Tidy Core
    = {terms: 2,437, types: 304, coercions: 0, joins: 10/10}

--------- Runtime perf -----------
No significant changes in nofib results, except a 1% reduction in
compiler allocation.

Metric Decrease:
    CoOpt_Read
    T13253-spj
    T9233
    T9630
    T9675
    T12150
    T21839c
    LargeRecord
    MultiComponentModulesRecomp
    T10421
    T13701
    T10421
    T13701
    T12425

Metric Increase:
    T18140
    T9961
    T18282
    T18698a
    T18698b
    T19695

- - - - -
42aa7fbd by Julian Ospald at 2023-07-30T17:22:01-04:00
Improve documentation around IOException and ioe_filename

See:

* https://github.com/haskell/core-libraries-committee/issues/189
* https://github.com/haskell/unix/pull/279
* https://github.com/haskell/unix/pull/289

- - - - -
33598ecb by Sylvain Henry at 2023-08-01T14:45:54-04:00
JS: implement getMonotonicTime (fix #23687)

- - - - -
d2bedffd by Bartłomiej Cieślar at 2023-08-01T14:46:40-04:00
Implementation of the Deprecated Instances proposal #575

This commit implements the ability to deprecate certain instances,
which causes the compiler to emit the desired deprecation message
whenever they are instantiated. For example:

  module A where
  class C t where
  instance {-# DEPRECATED "dont use" #-} C Int where

  module B where
  import A
  f :: C t => t
  f = undefined
  g :: Int
  g = f -- "dont use" emitted here

The implementation is as follows:
  - In the parser, we parse deprecations/warnings attached to instances:

      instance {-# DEPRECATED "msg" #-} Show X
      deriving instance {-# WARNING "msg2" #-} Eq Y

    (Note that non-standalone deriving instance declarations do not support
    this mechanism.)

  - We store the resulting warning message in `ClsInstDecl` (respectively, `DerivDecl`).
    In `GHC.Tc.TyCl.Instance.tcClsInstDecl` (respectively, `GHC.Tc.Deriv.Utils.newDerivClsInst`),
    we pass on that information to `ClsInst` (and eventually store it in `IfaceClsInst` too).

  - Finally, when we solve a constraint using such an instance, in
    `GHC.Tc.Instance.Class.matchInstEnv`, we emit the appropriate warning
    that was stored in `ClsInst`.
    Note that we only emit a warning when the instance is used in a different module
    than it is defined, which keeps the behaviour in line with the deprecation of
    top-level identifiers.

Signed-off-by: Bartłomiej Cieślar <bcieslar2001 at gmail.com>

- - - - -
d5a65af6 by Ben Gamari at 2023-08-01T14:47:18-04:00
compiler: Style fixes

- - - - -
7218c80a by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Fix implicit cast

This ensures that Task.h can be built with a C++ compiler.

- - - - -
d6d5aafc by Ben Gamari at 2023-08-01T14:47:19-04:00
testsuite: Fix warning in hs_try_putmvar001

- - - - -
d9eddf7a by Ben Gamari at 2023-08-01T14:47:19-04:00
testsuite: Add AtomicModifyIORef test

- - - - -
f9eea4ba by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce NO_WARN macro

This allows fine-grained ignoring of warnings.

- - - - -
497b24ec by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Simplify atomicModifyMutVar2# implementation

Previously we would perform a redundant load in the non-threaded RTS in
atomicModifyMutVar2# implementation for the benefit of the non-moving
GC's write barrier. Eliminate this.

- - - - -
52ee082b by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce more principled fence operations

- - - - -
cd3c0377 by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Introduce SET_INFO_RELAXED

- - - - -
6df2352a by Ben Gamari at 2023-08-01T14:47:19-04:00
rts: Style fixes

- - - - -
4ef6f319 by Ben Gamari at 2023-08-01T14:47:19-04:00
codeGen/tsan: Rework handling of spilling

- - - - -
f9ca7e27 by Ben Gamari at 2023-08-01T14:47:19-04:00
hadrian: More debug information

- - - - -
df4153ac by Ben Gamari at 2023-08-01T14:47:19-04:00
Improve TSAN documentation

- - - - -
fecae988 by Ben Gamari at 2023-08-01T14:47:19-04:00
hadrian: More selective TSAN instrumentation

- - - - -
465a9a0b by Alan Zimmerman at 2023-08-01T14:47:56-04:00
EPA: Provide correct annotation span for ImportDecl

Use the whole declaration, rather than just the span of the 'import'
keyword.

Metric Decrease:
   T9961
   T5205
Metric Increase:
  T13035

- - - - -
ae63d0fa by Bartłomiej Cieślar at 2023-08-01T14:48:40-04:00
Add cases to T23279: HasField for deprecated record fields

This commit adds additional tests from ticket #23279 to ensure that we don't
regress on reporting deprecated record fields in conjunction with HasField,
either when using overloaded record dot syntax or directly through `getField`.

Fixes #23279

- - - - -
00fb6e6b by Andreas Klebinger at 2023-08-01T14:49:17-04:00
AArch NCG: Pure refactor

Combine some alternatives. Add some line breaks for overly long lines

- - - - -
8f3b3b78 by Andreas Klebinger at 2023-08-01T14:49:54-04:00
Aarch ncg: Optimize immediate use for address calculations

When the offset doesn't fit into the immediate we now just reuse the
general getRegister' code path which is well optimized to compute the
offset into a register instead of a special case for CmmRegOff.

This means we generate a lot less code under certain conditions which is
why performance metrics for these improve.

-------------------------
Metric Decrease:
    T4801
    T5321FD
    T5321Fun
-------------------------

- - - - -
74a882dc by MorrowM at 2023-08-02T06:00:03-04:00
Add a RULE to make lookup fuse

See https://github.com/haskell/core-libraries-committee/issues/175

Metric Increase:
    T18282

- - - - -
cca74dab by Ben Gamari at 2023-08-02T06:00:39-04:00
hadrian: Ensure that way-flags are passed to CC

Previously the way-specific compilation flags (e.g. `-DDEBUG`,
`-DTHREADED_RTS`) would not be passed to the CC invocations. This meant
that C dependency files would not correctly reflect
dependencies predicated on the way, resulting in the rather
painful #23554.

Closes #23554.

- - - - -
622b483c by Jaro Reinders at 2023-08-02T06:01:20-04:00
Native 32-bit Enum Int64/Word64 instances

This commits adds more performant Enum Int64 and Enum Word64 instances
for 32-bit platforms, replacing the Integer-based implementation.

These instances are a copy of the Enum Int and Enum Word instances with
minimal changes to manipulate Int64 and Word64 instead.

On i386 this yields a 1.5x performance increase and for the JavaScript
back end it even yields a 5.6x speedup.

Metric Decrease:
    T18964

- - - - -
c8bd7fa4 by Sylvain Henry at 2023-08-02T06:02:03-04:00
JS: fix typos in constants (#23650)

- - - - -
b9d5bfe9 by Josh Meredith at 2023-08-02T06:02:40-04:00
JavaScript: update MK_TUP macros to use current tuple constructors (#23659)

- - - - -
28211215 by Matthew Pickering at 2023-08-02T06:03:19-04:00
ci: Pass -Werror when building hadrian in hadrian-ghc-in-ghci job

Warnings when building Hadrian can end up cluttering the output of HLS,
and we've had bug reports in the past about these warnings when building
Hadrian. It would be nice to turn on -Werror on at least one build of
Hadrian in CI to avoid a patch introducing warnings when building
Hadrian.

Fixes #23638

- - - - -
aca20a5d by Ben Gamari at 2023-08-02T06:03:55-04:00
codeGen: Ensure that TSAN is aware of writeArray# write barriers

By using a proper release store instead of a fence.

- - - - -
453c0531 by Ben Gamari at 2023-08-02T06:03:55-04:00
codeGen: Ensure that array reads have necessary barriers

This was the cause of #23541.

- - - - -
93a0d089 by Arnaud Spiwack at 2023-08-02T06:04:37-04:00
Add test for #23550

- - - - -
6a2f4a20 by Arnaud Spiwack at 2023-08-02T06:04:37-04:00
Desugar non-recursive lets to non-recursive lets (take 2)

This reverts commit 522bd584f71ddeda21efdf0917606ce3d81ec6cc. And
takes care of the case that I missed in my previous attempt. Namely
the case of an AbsBinds with no type variables and no dictionary
variable.

Ironically, the comment explaining why non-recursive lets were
desugared to recursive lets were pointing specifically at this case
as the reason. I just failed to understand that it was until Simon PJ
pointed it out to me.

See #23550 for more discussion.

- - - - -
ff81d53f by jade at 2023-08-02T06:05:20-04:00
Expand documentation of List & Data.List

This commit aims to improve the documentation and examples
of symbols exported from Data.List

- - - - -
fa4e5913 by Jade at 2023-08-02T06:06:03-04:00
Improve documentation of Semigroup & Monoid

This commit aims to improve the documentation of various symbols
exported from Data.Semigroup and Data.Monoid

- - - - -
1b27e151 by Vladislav Zavialov at 2023-08-02T10:42:11+00:00
Check for puns (see ghc#23368)

- - - - -
457341fd by Vladislav Zavialov at 2023-08-02T10:42:11+00:00
Remove fake exports for (~), List, and Tuple<n>

The old reasoning no longer applies, nowadays those names can be
mentioned in export lists.

- - - - -
bf3dcddf by Vladislav Zavialov at 2023-08-02T10:42:11+00:00
Fix pretty-printing of Solo and MkSolo

- - - - -
e2c91bff by Gergő Érdi at 2023-08-03T02:55:46+01:00
Desugar bindings in the context of their evidence

Closes #23172

- - - - -
481f4a46 by Gergő Érdi at 2023-08-03T07:48:43+01:00
Add flag to `-f{no-}specialise-incoherents` to enable/disable specialisation of
incoherent instances

Fixes #23287

- - - - -
d751c583 by Profpatsch at 2023-08-04T12:24:26-04:00
base: Improve String & IsString documentation

- - - - -
01db1117 by Ben Gamari at 2023-08-04T12:25:02-04:00
rts/win32: Ensure reliability of IO manager shutdown

When the Win32 threaded IO manager shuts down, `ioManagerDie` sends an
`IO_MANAGER_DIE` event to the IO manager thread using the
`io_manager_event` event object. Finally, it will closes the event object,
and invalidate `io_manager_event`.

Previously, `readIOManagerEvent` would see that `io_manager_event` is
invalid and return `0`, suggesting that everything is right with the
world. This meant that if `ioManagerDie` invalidated the handle before
the event manager was blocked on the event we would end up in a
situation where the event manager would never realize it was asked to
shut down.

Fix this by ensuring that `readIOManagerEvent` instead returns
`IO_MANAGER_DIE` when we detect that the event object has been
invalidated by `ioManagerDie`.

Fixes #23691.

- - - - -
fdef003a by Ryan Scott at 2023-08-04T12:25:39-04:00
Look through TH splices in splitHsApps

This modifies `splitHsApps` (a key function used in typechecking function
applications) to look through untyped TH splices and quasiquotes. Not doing so
was the cause of #21077. This builds on !7821 by making `splitHsApps` match on
`HsUntypedSpliceTop`, which contains the `ThModFinalizers` that must be run as
part of invoking the TH splice. See the new `Note [Looking through Template
Haskell splices in splitHsApps]` in `GHC.Tc.Gen.Head`.

Along the way, I needed to make the type of `splitHsApps.set` slightly more
general to accommodate the fact that the location attached to a quasiquote is
a `SrcAnn NoEpAnns` rather than a `SrcSpanAnnA`.

Fixes #21077.

- - - - -
e77a0b41 by Ben Gamari at 2023-08-04T12:26:15-04:00
Bump deepseq submodule to 1.5.

And bump bounds

(cherry picked from commit 1228d3a4a08d30eaf0138a52d1be25b38339ef0b)

- - - - -
cebb5819 by Ben Gamari at 2023-08-04T12:26:15-04:00
configure: Bump minimal boot GHC version to 9.4

(cherry picked from commit d3ffdaf9137705894d15ccc3feff569d64163e8e)

- - - - -
83766dbf by Ben Gamari at 2023-08-04T12:26:15-04:00
template-haskell: Bump version to 2.21.0.0

Bumps exceptions submodule.

(cherry picked from commit bf57fc9aea1196f97f5adb72c8b56434ca4b87cb)

- - - - -
1211112a by Ben Gamari at 2023-08-04T12:26:15-04:00
base: Bump version to 4.19

Updates all boot library submodules.

(cherry picked from commit 433d99a3c24a55b14ec09099395e9b9641430143)

- - - - -
3ab5efd9 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Normalise versions more aggressively

In backpack hashes can contain `+` characters.

(cherry picked from commit 024861af51aee807d800e01e122897166a65ea93)

- - - - -
d52be957 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Declare bkpcabal08 as fragile

Due to spurious output changes described in #23648.

(cherry picked from commit c046a2382420f2be2c4a657c56f8d95f914ea47b)

- - - - -
e75a58d1 by Ben Gamari at 2023-08-04T12:26:15-04:00
gitlab-ci: Only mark linker_unload_native as broken in static jobs

This test passes on dynamically-linked Alpine.

(cherry picked from commit f356a7e8ec8ec3d6b2b30fd175598b9b80065d87)

- - - - -
8b176514 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite: Update base-exports

- - - - -
4b647936 by Ben Gamari at 2023-08-04T12:26:15-04:00
testsuite/interface-stability: normalise versions

This eliminates spurious changes from version bumps.

- - - - -
0eb54c05 by Ben Gamari at 2023-08-04T12:26:51-04:00
linker/PEi386: Don't sign-extend symbol section number

Previously we incorrectly interpreted PE section numbers as signed
values. However, this isn't the case; rather, it's an unsigned 16-bit number
with a few special bit-patterns (0xffff and 0xfffe). This resulted in #22941
as the linker would conclude that the sections were invalid.

Fixing this required quite a bit of refactoring.

Closes #22941.

- - - - -
fd7ce39c by Ben Gamari at 2023-08-04T12:27:28-04:00
testsuite: Mark MulMayOflo_full as broken rather than skipping

To ensure that we don't accidentally fix it.

See #23742.

- - - - -
824092f2 by Ben Gamari at 2023-08-04T12:27:28-04:00
nativeGen/AArch64: Fix sign extension in MulMayOflo

Previously the 32-bit implementations of MulMayOflo would use the
a non-sensical sign-extension mode. Rewrite these to reflect what gcc 11
produces. Also similarly rework the 16- and 8-bit cases.

This now passes the MulMayOflo tests in ghc/test-primops> in all four
widths, including the precision tests.

Fixes #23721.

- - - - -
1b15dbc4 by Jan Hrček at 2023-08-04T12:28:08-04:00
Fix haddock markup in code example for coerce

- - - - -
46fd8ced by Vladislav Zavialov at 2023-08-04T12:28:44-04:00
Fix (~) and (@) infix operators in TH splices (#23748)

8168b42a "Whitespace-sensitive bang patterns" allows GHC to accept
the following infix operators:

	a ~ b = ()
	a @ b = ()

But not if TH is used to generate those declarations:

	$([d| a ~ b = ()
	      a @ b = ()
	    |])

	-- Test.hs:5:2: error: [GHC-55017]
	--    Illegal variable name: ‘~’
	--    When splicing a TH declaration: (~_0) a_1 b_2 = GHC.Tuple.Prim.()

This is easily fixed by modifying `reservedOps` in GHC.Utils.Lexeme

- - - - -
a1899d8f by Aaron Allen at 2023-08-04T12:29:24-04:00
[#23663] Show Flag Suggestions in GHCi

Makes suggestions when using `:set` in GHCi with a misspelled flag. This
mirrors how invalid flags are handled when passed to GHC directly. Logic
for producing flag suggestions was moved to GHC.Driver.Sesssion so it
can be shared.

resolves #23663

- - - - -
03f2debd by Rodrigo Mesquita at 2023-08-04T12:30:00-04:00
Improve ghc-toolchain validation configure warning

Fixes the layout of the ghc-toolchain validation warning produced by
configure.

- - - - -
de25487d by Alan Zimmerman at 2023-08-04T12:30:36-04:00
EPA make getLocA a synonym for getHasLoc

This is basically a no-op change, but allows us to make future changes
that can rely on the HasLoc instances

And I presume this means we can use more precise functions based on
class resolution, so the Windows CI build reports

Metric Decrease:
    T12234
    T13035

- - - - -
3ac423b9 by Ben Gamari at 2023-08-04T12:31:13-04:00
ghc-platform: Add upper bound on base

Hackage upload requires this.
- - - - -
8ba20b21 by Matthew Craven at 2023-08-04T17:22:59-04:00
Adjust and clarify handling of primop effects

Fixes #17900; fixes #20195.

The existing "can_fail" and "has_side_effects" primop attributes
that previously governed this were used in inconsistent and
confusingly-documented ways, especially with regard to raising
exceptions.  This patch replaces them with a single "effect"
attribute, which has four possible values: NoEffect, CanFail,
ThrowsException, and ReadWriteEffect.  These are described in
Note [Classifying primop effects].

A substantial amount of related documentation has been re-drafted
for clarity and accuracy.

In the process of making this attribute format change for literally
every primop, several existing mis-classifications were detected and
corrected.  One of these mis-classifications was tagToEnum#, which
is now considered CanFail; this particular fix is known to cause a
regression in performance for derived Enum instances.  (See #23782.)
Fixing this is left as future work.

New primop attributes "cheap" and "work_free" were also added,
and used in the corresponding parts of GHC.Core.Utils.

In view of their actual meaning and uses, `primOpOkForSideEffects`
and `exprOkForSideEffects` have been renamed to `primOpOkToDiscard`
and `exprOkToDiscard`, respectively.

Metric Increase:
    T21839c

- - - - -
41bf2c09 by sheaf at 2023-08-04T17:23:42-04:00
Update inert_solved_dicts for ImplicitParams

When adding an implicit parameter dictionary to the inert set, we must
make sure that it replaces any previous implicit parameter dictionaries
that overlap, in order to get the appropriate shadowing behaviour, as in

  let ?x = 1 in let ?x = 2 in ?x

We were already doing this for inert_cans, but we weren't doing the same
thing for inert_solved_dicts, which lead to the bug reported in #23761.

The fix is thus to make sure that, when handling an implicit parameter
dictionary in updInertDicts, we update **both** inert_cans and
inert_solved_dicts to ensure a new implicit parameter dictionary
correctly shadows old ones.

Fixes #23761

- - - - -
43578d60 by Matthew Craven at 2023-08-05T01:05:36-04:00
Bump bytestring submodule to 0.11.5.1

- - - - -
91353622 by Ben Gamari at 2023-08-05T01:06:13-04:00
Initial commit of Note [Thunks, blackholes, and indirections]

This Note attempts to summarize the treatment of thunks, thunk update,
and indirections.

This fell out of work on #23185.

- - - - -
8d686854 by sheaf at 2023-08-05T01:06:54-04:00
Remove zonk in tcVTA

This removes the zonk in GHC.Tc.Gen.App.tc_inst_forall_arg and its
accompanying Note [Visible type application zonk]. Indeed, this zonk
is no longer necessary, as we no longer maintain the invariant that
types are well-kinded without zonking; only that typeKind does not
crash; see Note [The Purely Kinded Type Invariant (PKTI)].

This commit removes this zonking step (as well as a secondary zonk),
and replaces the aforementioned Note with the explanatory
Note [Type application substitution], which justifies why the
substitution performed in tc_inst_forall_arg remains valid without
this zonking step.

Fixes #23661

- - - - -
19dea673 by Ben Gamari at 2023-08-05T01:07:30-04:00
Bump nofib submodule

Ensuring that nofib can be build using the same range of bootstrap
compilers as GHC itself.

- - - - -
aa07402e by Luite Stegeman at 2023-08-05T23:15:55+09:00
JS: Improve compatibility with recent emsdk

The JavaScript code in libraries/base/jsbits/base.js had some
hardcoded offsets for fields in structs, because we expected
the layout of the data structures to remain unchanged. Emsdk
3.1.42 changed the layout of the stat struct, breaking this
assumption, and causing code in .hsc files accessing the
stat struct to fail.

This patch improves compatibility with recent emsdk by
removing the assumption that data layouts stay unchanged:

    1. offsets of fields in structs used by JavaScript code are
       now computed by the configure script, so both the .js and
       .hsc files will automatically use the new layout if anything
       changes.
    2. the distrib/configure script checks that the emsdk version
       on a user's system is the same version that a bindist was
       booted with, to avoid data layout inconsistencies

See #23641

- - - - -
b938950d by Luite Stegeman at 2023-08-07T06:27:51-04:00
JS: Fix missing local variable declarations

This fixes some missing local variable declarations that were
found by running the testsuite in strict mode.

Fixes #23775

- - - - -
6c0e2247 by sheaf at 2023-08-07T13:31:21-04:00
Update Haddock submodule to fix #23368

This submodule update adds the following three commits:

bbf1c8ae - Check for puns
0550694e - Remove fake exports for (~), List, and Tuple<n>
5877bceb - Fix pretty-printing of Solo and MkSolo

These commits fix the issues with Haddock HTML rendering reported in
ticket #23368.

Fixes #23368

- - - - -
5b5be3ea by Matthew Pickering at 2023-08-07T13:32:00-04:00
Revert "Bump bytestring submodule to 0.11.5.1"

This reverts commit 43578d60bfc478e7277dcd892463cec305400025.

Fixes #23789

- - - - -
01961be3 by Ben Gamari at 2023-08-08T02:47:14-04:00
configure: Derive library version from ghc-prim.cabal.in

Since ghc-prim.cabal is now generated by Hadrian, we cannot depend upon
it.

Closes #23726.

- - - - -
3b373838 by Ryan Scott at 2023-08-08T02:47:49-04:00
tcExpr: Push expected types for untyped TH splices inwards

In !10911, I deleted a `tcExpr` case for `HsUntypedSplice` in favor of a much
simpler case that simply delegates to `tcApp`. Although this passed the test
suite at the time, this was actually an error, as the previous `tcExpr` case
was critically pushing the expected type inwards. This actually matters for
programs like the one in #23796, which GHC would not accept with type inference
alone—we need full-blown type _checking_ to accept these.

I have added back the previous `tcExpr` case for `HsUntypedSplice` and now
explain why we have two different `HsUntypedSplice` cases (one in `tcExpr` and
another in `splitHsApps`) in `Note [Looking through Template Haskell splices in
splitHsApps]` in `GHC.Tc.Gen.Head`.

Fixes #23796.

- - - - -
0ef1d8ae by sheaf at 2023-08-08T21:26:51-04:00
Compute all emitted diagnostic codes

This commit introduces in GHC.Types.Error.Codes the function

  constructorCodes :: forall diag. (...) => Map DiagnosticCode String

which computes a collection of all the diagnostic codes that correspond
to a particular type. In particular, we can compute the collection of
all diagnostic codes emitted by GHC using the invocation

  constructorCodes @GhcMessage

We then make use of this functionality in the new "codes" test which
checks consistency and coverage of GHC diagnostic codes.
It performs three checks:

  - check 1: all non-outdated GhcDiagnosticCode equations
    are statically used.
  - check 2: all outdated GhcDiagnosticCode equations
    are statically unused.
  - check 3: all statically used diagnostic codes are covered by
    the testsuite (modulo accepted exceptions).

- - - - -
4bc7b1e5 by Fraser Tweedale at 2023-08-08T21:27:32-04:00
numberToRangedRational: fix edge cases for exp ≈ (maxBound :: Int)

Currently a negative exponent less than `minBound :: Int` results in
Infinity, which is very surprising and obviously wrong.

```
λ> read "1e-9223372036854775808" :: Double
0.0
λ> read "1e-9223372036854775809" :: Double
Infinity
```

There is a further edge case where the exponent can overflow when
increased by the number of tens places in the integer part, or
underflow when decreased by the number of leading zeros in the
fractional part if the integer part is zero:

```
λ> read "10e9223372036854775807" :: Double
0.0
λ> read "0.01e-9223372036854775808" :: Double
Infinity
```

To resolve both of these issues, perform all arithmetic and
comparisons involving the exponent in type `Integer`.  This approach
also eliminates the need to explicitly check the exponent against
`maxBound :: Int` and `minBound :: Int`, because the allowed range
of the exponent (i.e. the result of `floatRange` for the target
floating point type) is certainly within those bounds.

This change implements CLC proposal 192:
https://github.com/haskell/core-libraries-committee/issues/192

- - - - -
6eab07b2 by Alan Zimmerman at 2023-08-08T21:28:10-04:00
EPA: Remove Location from WarningTxt source

This is not needed.

- - - - -
1a98d673 by Sebastian Graf at 2023-08-09T16:24:29-04:00
Cleanup a TODO introduced in 1f94e0f7

The change must have slipped through review of !4412

- - - - -
2274abc8 by Sebastian Graf at 2023-08-09T16:24:29-04:00
More explicit strictness in GHC.Real

- - - - -
ce8aa54c by Sebastian Graf at 2023-08-09T16:24:30-04:00
exprIsTrivial: Factor out shared implementation

The duplication between `exprIsTrivial` and `getIdFromTrivialExpr_maybe` has
been bugging me for a long time.

This patch introduces an inlinable worker function `trivial_expr_fold` acting
as the single, shared decision procedure of triviality. It "returns" a
Church-encoded `Maybe (Maybe Id)`, so when it is inlined, it fuses to similar
code as before.
(Better code, even, in the case of `getIdFromTrivialExpr` which presently
allocates a `Just` constructor that cancels away after this patch.)

- - - - -
d004a36d by Sebastian Graf at 2023-08-09T16:24:30-04:00
Simplify: Simplification of arguments in a single function

The Simplifier had a function `simplArg` that wasn't called in `rebuildCall`,
which seems to be the main way to simplify args. Hence I consolidated the code
path to call `simplArg`, too, renaming to `simplLazyArg`.

- - - - -
8c73505e by Sebastian Graf at 2023-08-09T16:24:30-04:00
Core.Ppr: Omit case binder for empty case alternatives

A minor improvement to pretty-printing

- - - - -
d8d993f1 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Disable tests RepPolyWrappedVar2 and RepPolyUnsafeCoerce1 in JS backend

... because those coerce between incompatible/unknown PrimReps.

- - - - -
f06e87e4 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Inlining literals into boring contexts is OK

- - - - -
4a6b7c87 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Clarify floating of unsafeEqualityProofs (#23754)

- - - - -
b0f4752e by Sebastian Graf at 2023-08-09T16:24:30-04:00
Kill SetLevel.notWorthFloating.is_triv (#23270)

We have had it since b84ba676034, when it operated on annotated expressions.
Nowadays it operates on vanilla `CoreExpr` though, so we should just call
`exprIsTrivial`; thus handling empty cases and string literals correctly.

- - - - -
7e0c8b3b by Sebastian Graf at 2023-08-09T16:24:30-04:00
ANFise string literal arguments (#23270)

This instates the invariant that a trivial CoreExpr translates to an atomic
StgExpr. Nice.

Annoyingly, in -O0 we sometimes generate
```
foo = case "blah"# of sat { __DEFAULT -> unpackCString# sat }
```
which makes it a bit harder to spot that we can emit a standard
`stg_unpack_cstring` thunk.

Fixes #23270.

- - - - -
357f2738 by Sebastian Graf at 2023-08-09T16:24:30-04:00
Deactivate -fcatch-nonexhaustive-cases in ghc-bignum (#23345)

- - - - -
59202c80 by Sebastian Graf at 2023-08-09T16:24:30-04:00
CorePrep: Eliminate EmptyCase and unsafeEqualityProof in CoreToStg instead

We eliminate EmptyCase by way of `coreToStg (Case e _ _ []) = coreToStg e` now.
The main reason is that it plays far better in conjunction with eta expansion
(as we aim to do for arguments in CorePrep, #23083), because we can discard
any arguments, `(case e of {}) eta == case e of {}`, whereas in `(e |> co) eta`
it's impossible to discard the argument.

We do also give the same treatment to unsafeCoerce proofs and treat them as
trivial iff their RHS is trivial.

It is also both much simpler to describe than the previous mechanism of emitting
an unsafe coercion and simpler to implement, removing quite a bit of commentary
and `CorePrepProv`.

In the ghc/alloc perf test `LargeRecord`, we introduce an additional Simplifier
iteration due to #17910. E.g., FloatOut produces a binding
```
lvl_s6uK [Occ=Once1] :: GHC.Types.Int
[LclId]
lvl_s6uK = GHC.Types.I# 2#

lvl_s6uL [Occ=Once1] :: GHC.Types.Any
[LclId]
lvl_s6uL
  = case Unsafe.Coerce.unsafeEqualityProof ... of
    { Unsafe.Coerce.UnsafeRefl v2_i6tr -> lvl_s6uK `cast` (... v2_i6tr ...)
    }
```
That occurs once and hence is pre-inlined unconditionally in the next Simplifier
pass. It's non-trivial to find a way around that, but not really harmful
otherwise. Hence we accept a 1.2% increase on some architectures.

Metric Increase:
    LargeRecord

- - - - -
00d31188 by Sebastian Graf at 2023-08-09T16:24:30-04:00
CorePrep: Eta expand arguments (#23083)

Previously, we'd only eta expand let bindings and lambdas,
now we'll also eta expand arguments such as in T23083:
```hs
g f h = f (h `seq` (h $))
```
Unless `-fpedantic-bottoms` is set, we'll now transform to
```hs
g f h = f (\eta -> h eta)
```
in CorePrep.

See the new `Note [Eta expansion of arguments in CorePrep]` for the details.

We only do this optimisation with -O2 because we saw 2-3% ghc/alloc regressions
in T4801 and T5321FD.

Fixes #23083.

- - - - -
bf885d7a by Matthew Craven at 2023-08-09T16:25:07-04:00
Bump bytestring submodule to 0.11.5, again

Fixes #23789.

The bytestring commit used here is unreleased;
a release can be made when necessary.

- - - - -
7acbf0fd by Sven Tennie at 2023-08-10T19:17:11-04:00
Serialize CmmRetInfo in .rodata

The handling of case was missing.

- - - - -
0c3136f2 by Sven Tennie at 2023-08-10T19:17:11-04:00
Reference StgRetFun payload by its struct field address

This is easier to grasp than relative pointer offsets.

- - - - -
f68ff313 by Sven Tennie at 2023-08-10T19:17:11-04:00
Better variable name: u -> frame

The 'u' was likely introduced by copy'n'paste.

- - - - -
0131bb7f by Sven Tennie at 2023-08-10T19:17:11-04:00
Make checkSTACK() public

Such that it can also be used in tests.

- - - - -
7b6e1e53 by Sven Tennie at 2023-08-10T19:17:11-04:00
Publish stack related fields in DerivedConstants.h

These will be used in ghc-heap to decode these parts of the stack.

- - - - -
907ed054 by Sven Tennie at 2023-08-10T19:17:11-04:00
ghc-heap: Decode StgStack and its stack frames

Previously, ghc-heap could only decode heap closures.

The approach is explained in detail in note
[Decoding the stack].

- - - - -
6beb6ac2 by Sven Tennie at 2023-08-10T19:17:11-04:00
Remove RetFunType from RetFun stack frame representation

It's a technical detail. The single usage is replaced by a predicate.

- - - - -
006bb4f3 by Sven Tennie at 2023-08-10T19:17:11-04:00
Better parameter name

The call-site uses the term "offset", too.

- - - - -
d4c2c1af by Sven Tennie at 2023-08-10T19:17:11-04:00
Make closure boxing pure

There seems to be no need to do something complicated. However, the
strictness of the closure pointer matters, otherwise a thunk gets
decoded.

- - - - -
8d8426c9 by Sven Tennie at 2023-08-10T19:17:11-04:00
Document entertainGC in test

It wasn't obvious why it's there and what its role is.

Also, increase the "entertainment level" a bit.

I checked in STG and Cmm dumps that this really generates closures (and
is not e.g. constant folded away.)

- - - - -
cc52c358 by Finley McIlwaine at 2023-08-10T19:17:47-04:00
Add -dipe-stats flag

This is useful for seeing which info tables have information.

- - - - -
261c4acb by Finley McIlwaine at 2023-08-10T19:17:47-04:00
Add -finfo-table-map-with-fallback -finfo-table-map-with-stack

The -fno-info-table-map-with-stack flag omits STACK info tables from the info
table map, and the -fno-info-table-map-with-fallback flag omits info tables
with defaulted source locations from the map. In a test on the Agda codebase
the build results were about 7% smaller when both of those types of tables
were omitted.

Adds a test that verifies that passing each combination of these flags
results in the correct output for -dipe-stats, which is disabled for the js
backend since profiling is not implemented.

This commit also refactors a lot of the logic around extracting info tables
from the Cmm results and building the info table map.

This commit also fixes some issues in the users guide rst source to fix
warnings that were noticed while debugging the documentation for these flags.

Fixes #23702

- - - - -
d7047e0d by Jaro Reinders at 2023-08-14T04:41:42-04:00
Add changelog entry for specialised Enum Int64/Word64 instances

- - - - -
52f5e8fb by cydparser at 2023-08-14T04:42:20-04:00
Fix -ddump-to-file and -ddump-timings interaction (#20316)

- - - - -
1274c5d6 by cydparser at 2023-08-14T04:42:20-04:00
Update release notes (#20316)

- - - - -
8e699b23 by Matthew Pickering at 2023-08-14T10:44:47-04:00
base: Add changelog entry for CLC #188

This proposal modified the implementations of copyBytes, moveBytes and
fillBytes (as detailed in the proposal)

https://github.com/haskell/core-libraries-committee/issues/188

- - - - -
026f040a by Matthew Pickering at 2023-08-14T10:45:23-04:00
packaging: Build manpage in separate directory to other documentation

We were installing two copies of the manpage:

* One useless one in the `share/doc` folder, because we copy the doc/
  folder into share/
* The one we deliberately installed into `share/man` etc

The solution is to build the manpage into the `manpage` directory when
building the bindist, and then just install it separately.

Fixes #23707

- - - - -
524c60c8 by Bartłomiej Cieślar at 2023-08-14T13:46:33-04:00
Report deprecated fields bound by record wildcards when used

This commit ensures that we emit the appropriate warnings when
a deprecated record field bound by a record wildcard is used.

For example:

    module A where
    data Foo = Foo {x :: Int, y :: Bool, z :: Char}

    {-# DEPRECATED x "Don't use x" #-}
    {-# WARNING y "Don't use y" #-}

    module B where
    import A

    foo (Foo {..}) = x

This will cause us to emit a "Don't use x" warning, with location the
location of the record wildcard. Note that we don't warn about `y`,
because it is unused in the RHS of `foo`.

Fixes #23382

- - - - -
d6130065 by Matthew Pickering at 2023-08-14T13:47:11-04:00
Add zstd suffix to jobs which rely on zstd

This was causing some confusion as the job was named simply
"x86_64-linux-deb10-validate", which implies a standard configuration
rather than any dependency on libzstd.

- - - - -
e24e44fc by Matthew Pickering at 2023-08-14T13:47:11-04:00
ci: Always run project-version job

This is needed for the downstream test-primops pipeline to workout what
the version of a bindist produced by a pipeline is.

- - - - -
f17b9d62 by Matthew Pickering at 2023-08-14T13:47:11-04:00
gen_ci: Rework how jobs-metadata.json is generated

* We now represent a job group a triple of Maybes, which makes it easier
  to work out when jobs are enabled/disabled on certain pipelines.

```
data JobGroup a = StandardTriple { v :: Maybe (NamedJob a)
                                 , n :: Maybe (NamedJob a)
                                 , r :: Maybe (NamedJob a) }
```

* `jobs-metadata.json`  generation is reworked using the following
  algorithm.
  - For each pipeline type, find all the platforms we are doing builds
    for.
  - Select one build per platform
  - Zip together the results

This way we can choose different pipelines for validate/nightly/release
which makes the metadata also useful for validate pipelines. This
feature is used by the test-primops downstream CI in order to select the
right bindist for testing validate pipelines.

This makes it easier to inspect which jobs are going to be enabled on a
particular pipeline.

- - - - -
f9a5563d by Matthew Pickering at 2023-08-14T13:47:11-04:00
gen_ci: Rules rework

In particular we now distinguish between whether we are dealing with a
Nightly/Release pipeline (which labels don't matter for) and a validate
pipeline where labels do matter.

The overall goal here is to allow a disjunction of labels for validate
pipelines, for example,

> Run a job if we have the full-ci label or test-primops label

Therefore the "ValidateOnly" rules are treated as a set of disjunctions
rather than conjunctions like before.

What this means in particular is that if we want to ONLY run a job if a
label is set, for example, "FreeBSD" label then we have to override the
whole label set.

Fixes #23772

- - - - -
d54b0c1d by Matthew Pickering at 2023-08-14T13:47:11-04:00
ci: set -e for lint-ci-config scripts

- - - - -
994a9b35 by Matthew Pickering at 2023-08-14T13:47:11-04:00
ci: Fix job metadata generation

- - - - -
e194ed2b by Ben Gamari at 2023-08-15T00:58:09-04:00
users-guide: Note that GHC2021 doesn't include ExplicitNamespaces

As noted in #23801.

- - - - -
d814bda9 by Ben Gamari at 2023-08-15T05:43:53-04:00
users-guide: Support both distutils and packaging

As noted in #23818, some old distributions (e.g. Debian 9) only include
`distutils` while newer distributions only include `packaging`.

Fixes #23818.

- - - - -
1726db3f by Ben Gamari at 2023-08-15T05:43:53-04:00
users-guide: Ensure extlinks is compatible with Sphinx <4

The semantics of the `extlinks` attribute annoyingly changed in Sphinx
4. Reflect this in our configuration. See #22690.

Fixes #23807.

- - - - -
173338cf by Matthew Pickering at 2023-08-15T22:00:24-04:00
ci: Run full-ci on master and release branches

Fixes #23737

- - - - -
bdab6898 by Andrew Lelechenko at 2023-08-15T22:01:03-04:00
Add @since pragmas for Data.Ord.clamp and GHC.Float.clamp

- - - - -
662d351b by Matthew Pickering at 2023-08-16T09:35:04-04:00
ghc-toolchain: Match CPP args with configure script

At the moment we need ghc-toolchain to precisely match the output as
provided by the normal configure script. The normal configure script
(FP_HSCPP_CMD_WITH_ARGS) branches on whether we are using clang or gcc
so we match that logic exactly in ghc-toolchain.

The old implementation (which checks if certain flags are supported) is
better but for now we have to match to catch any potential errors in the
configuration.

Ticket: #23720

- - - - -
09c6759e by Matthew Pickering at 2023-08-16T09:35:04-04:00
configure: Fix `-Wl,--no-as-needed` check

The check was failing because the args supplied by $$1 were quoted which
failed because then the C compiler thought they were an input file.

Fixes #23720

- - - - -
2129678b by Matthew Pickering at 2023-08-16T09:35:04-04:00
configure: Add flag which turns ghc-toolchain check into error

We want to catch these errors in CI, but first we need to a flag which
turns this check into an error.

- - - - -
6e2aa8e0 by Matthew Pickering at 2023-08-16T09:35:04-04:00
ci: Enable --enable-strict-ghc-toolchain-check for all CI jobs

This will cause any CI job to fail if we have a mismatch between what
ghc-toolchain reports and what ./configure natively reports. Fixing
these kinds of issues is highest priority for 9.10 release.

- - - - -
12d39e24 by Rodrigo Mesquita at 2023-08-16T09:35:04-04:00
Pass user-specified options to ghc-toolchain

The current user interface to configuring target toolchains is `./configure`.

In !9263 we added a new tool to configure target toolchains called
`ghc-toolchain`, but the blessed way of creating these toolchains is
still through configure.

However, we were not passing the user-specified options given with the
`./configure` invocation to the ghc-toolchain tool.

This commit remedies that by storing the user options and environment
variables in USER_* variables, which then get passed to GHC-toolchain.

The exception to the rule is the windows bundled toolchain, which
overrides the USER_* variables with whatever flags the windows bundled
toolchain requires to work.
We consider the bundled toolchain to be effectively the user specifying
options, since the actual user delegated that configuration work.

Closes #23678

- - - - -
f7b3c3a0 by Rodrigo Mesquita at 2023-08-16T09:35:04-04:00
ghc-toolchain: Parse javascript and ghcjs as a Arch and OS

- - - - -
8a0ae4ee by Rodrigo Mesquita at 2023-08-16T09:35:04-04:00
ghc-toolchain: Fix ranlib option

- - - - -
31e9ec96 by Rodrigo Mesquita at 2023-08-16T09:35:04-04:00
Check Link Works with -Werror

- - - - -
bc1998b3 by Matthew Pickering at 2023-08-16T09:35:04-04:00
Only check for no_compact_unwind support on darwin

While writing ghc-toolchain we noticed that the
FP_PROG_LD_NO_COMPACT_UNWIND check is subtly wrong. Specifically, we
pass -Wl,-no_compact_unwind to cc. However, ld.gold interprets this as
-n o_compact_unwind, which is a valid argument.

Fixes #23676

- - - - -
0283f36e by Matthew Pickering at 2023-08-16T09:35:04-04:00
Add some javascript special cases to ghc-toolchain

On javascript there isn't a choice of toolchain but some of the
configure checks were not accurately providing the correct answer.

1. The linker was reported as gnu LD because the --version output
   mentioned gnu LD.
2. The --target flag makes no sense on javascript but it was just
   ignored by the linker, so we add a special case to stop ghc-toolchain
   thinking that emcc supports --target when used as a linker.

- - - - -
a48ec5f8 by Matthew Pickering at 2023-08-16T09:35:04-04:00
check for emcc in gnu_LD check

- - - - -
50df2e69 by Matthew Pickering at 2023-08-16T09:35:04-04:00
Add ldOverrideWhitelist to only default to ldOverride on windows/linux

On some platforms - ie darwin, javascript etc we really do not want to
allow the user to use any linker other than the default one as this
leads to all kinds of bugs. Therefore it is a bit more prudant to add a
whitelist which specifies on which platforms it might be possible to use
a different linker.

- - - - -
a669a39c by Matthew Pickering at 2023-08-16T09:35:04-04:00
Fix plaform glob in FPTOOLS_SET_C_LD_FLAGS

A normal triple may look like

x86_64-unknown-linux

but when cross-compiling you get $target set to a quad such as..

aarch64-unknown-linux-gnu

Which should also match this check.

- - - - -
c52b6769 by Matthew Pickering at 2023-08-16T09:35:04-04:00
ghc-toolchain: Pass ld-override onto ghc-toolchain

- - - - -
039b484f by Matthew Pickering at 2023-08-16T09:35:04-04:00
ld override: Make whitelist override user given option

- - - - -
d2b63cbc by Matthew Pickering at 2023-08-16T09:35:05-04:00
ghc-toolchain: Add format mode to normalise differences before diffing.

The "format" mode takes an "--input" and "--ouput" target file and
formats it.

This is intended to be useful on windows where the
configure/ghc-toolchain target files can't be diffed very easily because
the path separators are different.

- - - - -
f2b39e4a by Matthew Pickering at 2023-08-16T09:35:05-04:00
ghc-toolchain: Bump ci-images commit to get new ghc-wasm-meta

We needed to remove -Wno-unused-command-line-argument from the arguments
passed in order for the configure check to report correctly.

See https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10976#note_516335

- - - - -
92103830 by Matthew Pickering at 2023-08-16T09:35:05-04:00
configure: MergeObjsCmd - distinguish between empty string and unset variable

If `MergeObjsCmd` is explicitly set to the empty string then we should
assume that MergeObjs is just not supported.

This is especially important for windows where we set MergeObjsCmd to ""
in m4/fp_setup_windows_toolchain.m4.

- - - - -
3500bb2c by Matthew Pickering at 2023-08-16T09:35:05-04:00
configure: Add proper check to see if object merging works

- - - - -
08c9a014 by Matthew Pickering at 2023-08-16T09:35:05-04:00
ghc-toolchain: If MergeObjsCmd is not set, replace setting with Nothing

If the user explicitly chooses to not set a MergeObjsCmd then it is
correct to use Nothing for tgtMergeObjs field in the Target file.

- - - - -
c9071d94 by Matthew Pickering at 2023-08-16T09:35:05-04:00
HsCppArgs: Augment the HsCppOptions

This is important when we pass -I when setting up the windows toolchain.

- - - - -
294a6d80 by Matthew Pickering at 2023-08-16T09:35:05-04:00
Set USER_CPP_ARGS when setting up windows toolchain

- - - - -
bde4b5d4 by Rodrigo Mesquita at 2023-08-16T09:35:05-04:00
Improve handling of Cc as a fallback

- - - - -
f4c1c3a3 by Rodrigo Mesquita at 2023-08-16T09:35:05-04:00
ghc-toolchain: Configure Cpp and HsCpp correctly when user specifies flags

In ghc-toolchain, we were only /not/ configuring required flags when the
user specified any flags at all for the  of the HsCpp and Cpp tools.

Otherwise, the linker takes into consideration the user specified flags
to determine whether to search for a better linker implementation, but
already configured the remaining GHC and platform-specific flags
regardless of the user options.

Other Tools consider the user options as a baseline for further
configuration (see `findProgram`), so #23689 is not applicable.

Closes #23689

- - - - -
bfe4ffac by Matthew Pickering at 2023-08-16T09:35:05-04:00
CPP_ARGS: Put new options after user specified options

This matches up with the behaviour of ghc-toolchain, so that the output
of both matches.

- - - - -
a6828173 by Gergő Érdi at 2023-08-16T09:35:41-04:00
If a defaulting plugin made progress, re-zonk wanteds before built-in defaulting

Fixes #23821.

- - - - -
e2b38115 by Sylvain Henry at 2023-08-17T07:54:06-04:00
JS: implement openat(AT_FDCWD...) (#23697)

Use `openSync` to implement `openat(AT_FDCWD...)`.

- - - - -
a975c663 by sheaf at 2023-08-17T07:54:47-04:00
Use unsatisfiable for missing methods w/ defaults

When a class instance has an Unsatisfiable constraint in its context
and the user has not explicitly provided an implementation of a method,
we now always provide a RHS of the form `unsatisfiable @msg`, even
if the method has a default definition available. This ensures that,
when deferring type errors, users get the appropriate error message
instead of a possible runtime loop, if class default methods were
defined recursively.

Fixes #23816

- - - - -
45ca51e5 by Ben Gamari at 2023-08-17T15:16:41-04:00
ghc-internal: Initial commit of the skeleton

- - - - -
88bbf8c5 by Ben Gamari at 2023-08-17T15:16:41-04:00
ghc-experimental: Initial commit

- - - - -
664468c0 by Ben Gamari at 2023-08-17T15:17:17-04:00
testsuite/cloneStackLib: Fix incorrect format specifiers

- - - - -
eaa835bb by Ben Gamari at 2023-08-17T15:17:17-04:00
rts/ipe: Fix const-correctness of IpeBufferListNode

Both info tables and the string table should be `const`

- - - - -
78f6f6fd by Ben Gamari at 2023-08-17T15:17:17-04:00
nonmoving: Drop dead debugging utilities

These are largely superceded by support in the ghc-utils GDB extension.

- - - - -
3f6e8f42 by Ben Gamari at 2023-08-17T15:17:17-04:00
nonmoving: Refactor management of mark thread

Here we refactor that treatment of the worker thread used by the
nonmoving GC for concurrent marking, avoiding creating a new thread with
every major GC cycle. As well, the new scheme is considerably easier to
reason about, consolidating all state in one place, accessed via a small
set of accessors with clear semantics.

- - - - -
88c32b7d by Ben Gamari at 2023-08-17T15:17:17-04:00
testsuite: Skip T23221 in nonmoving GC ways

This test is very dependent upon GC behavior.

- - - - -
381cfaed by Ben Gamari at 2023-08-17T15:17:17-04:00
ghc-heap: Don't expose stack dirty and marking fields

These are GC metadata and are not relevant to the end-user. Moreover,
they are unstable which makes ghc-heap harder to test than necessary.

- - - - -
16828ca5 by Luite Stegeman at 2023-08-21T18:42:53-04:00
bump process submodule to include macOS fix and JS support

- - - - -
b4d5f6ed by Matthew Pickering at 2023-08-21T18:43:29-04:00
ci: Add support for triggering test-primops pipelines

This commit adds 4 ways to trigger testing with test-primops.

1. Applying the ~test-primops label to a validate pipeline.
2. A manually triggered job on a validate pipeline
3. A nightly pipeline job
4. A release pipeline job

Fixes #23695

- - - - -
32c50daa by Matthew Pickering at 2023-08-21T18:43:29-04:00
Add test-primops label support

The test-primops CI job requires some additional builds in the
validation pipeline, so we make sure to enable these jobs when
test-primops label is set.

- - - - -
73ca8340 by Matthew Pickering at 2023-08-21T18:43:29-04:00
Revert "Aarch ncg: Optimize immediate use for address calculations"

This reverts commit 8f3b3b78a8cce3bd463ed175ee933c2aabffc631.

See #23793

- - - - -
5546ad9e by Matthew Pickering at 2023-08-21T18:43:29-04:00
Revert "AArch NCG: Pure refactor"

This reverts commit 00fb6e6b06598752414a0b9a92840fb6ca61338d.

See #23793

- - - - -
02dfcdc2 by Matthew Pickering at 2023-08-21T18:43:29-04:00
Revert "Aarch64 NCG: Use encoded immediates for literals."

This reverts commit 40425c5021a9d8eb5e1c1046e2d5fa0a2918f96c.

See #23793

-------------------------
Metric Increase:
    T4801
    T5321FD
    T5321Fun
-------------------------

- - - - -
7be4a272 by Matthew Pickering at 2023-08-22T08:55:20+01:00
ci: Remove manually triggered test-ci job

This doesn't work on slimmed down pipelines as the needed jobs don't
exist.

If you want to run test-primops then apply the label.

- - - - -
76a4d11b by Jaro Reinders at 2023-08-22T08:08:13-04:00
Remove Ptr example from roles docs

- - - - -
069729d3 by Bryan Richter at 2023-08-22T08:08:49-04:00
Guard against duplicate pipelines in forks

- - - - -
f861423b by Rune K. Svendsen at 2023-08-22T08:09:35-04:00
dump-decls: fix "Ambiguous module name"-error

Fixes errors of the following kind, which happen when dump-decls is run on a package that contains a module name that clashes with that of another package.

```
dump-decls: <no location info>: error:
    Ambiguous module name `System.Console.ANSI.Types':
      it was found in multiple packages:
      ansi-terminal-0.11.4 ansi-terminal-types-0.11.5
```

- - - - -
edd8bc43 by Krzysztof Gogolewski at 2023-08-22T12:31:20-04:00
Fix MultiWayIf linearity checking (#23814)

Co-authored-by: Thomas BAGREL <thomas.bagrel at tweag.io>

- - - - -
4ba088d1 by konsumlamm at 2023-08-22T12:32:02-04:00
Update `Control.Concurrent.*` documentation

- - - - -
015886ec by ARATA Mizuki at 2023-08-22T15:13:13-04:00
Support 128-bit SIMD on AArch64 via LLVM backend

- - - - -
52a6d868 by Krzysztof Gogolewski at 2023-08-22T15:13:51-04:00
Testsuite cleanup

- Remove misleading help text in perf_notes, ways are not metrics
- Remove no_print_summary - this was used for Phabricator
- In linters tests, run 'git ls-files' just once.
  Previously, it was called on each has_ls_files()
- Add ghc-prim.cabal to gitignore, noticed in #23726
- Remove ghc-prim.cabal, it was accidentally committed in 524c60c8cd

- - - - -
ab40aa52 by Alan Zimmerman at 2023-08-22T15:14:28-04:00
EPA: Use Introduce [DeclTag] in AnnSortKey

The AnnSortKey is used to keep track of the order of declarations for
printing when the container has split them apart.

This applies to HsValBinds and ClassDecl, ClsInstDecl.

When making modifications to the list of declarations, the new order
must be captured for when it must be printed. For each list of
declarations (binds and sigs for a HsValBind) we can just store the
list in order.

To recreate the list when printing, we must merge them, and this is
what the AnnSortKey records. It used to be indexed by SrcSpan, we now
simply index by a marker as to which list to take the next item from.

- - - - -
e7db36c1 by sheaf at 2023-08-23T08:41:28-04:00
Don't attempt pattern synonym error recovery

This commit gets rid of the pattern synonym error recovery mechanism
(recoverPSB). The rationale is that the fake pattern synonym binding
that the recovery mechanism introduced could lead to undesirable
knock-on errors, and it isn't really feasible to conjure up a
satisfactory binding as pattern synonyms can be used both in expressions
and patterns.
See Note [Pattern synonym error recovery] in GHC.Tc.TyCl.PatSyn.

It isn't such a big deal to eagerly fail compilation on a pattern synonym
that doesn't typecheck anyway.

Fixes #23467

- - - - -
6ccd9d65 by Ben Gamari at 2023-08-23T08:42:05-04:00
base: Don't use Data.ByteString.Internals.memcpy

This function is now deprecated from `bytestring`. Use
`Foreign.Marshal.Utils.copyBytes` instead.

Fixes #23880.

- - - - -
0bfa0031 by Matthew Pickering at 2023-08-23T13:43:48-04:00
hadrian: Uniformly pass buildOptions to all builders in runBuilder

In Builder.hs, runBuilderWith mostly ignores the buildOptions in BuildInfo.

This leads to hard to diagnose bugs as any build options you pass with
runBuilderWithCmdOptions are ignored for many builders.

Solution: Uniformly pass buildOptions to the invocation of cmd.

Fixes #23845

- - - - -
9cac8f11 by Matthew Pickering at 2023-08-23T13:43:48-04:00
Abstract windows toolchain setup

This commit splits up the windows toolchain setup logic into two
functions.

* FP_INSTALL_WINDOWS_TOOLCHAIN - deals with downloading the toolchain if
  it isn't already downloaded
* FP_SETUP_WINDOWS_TOOLCHAIN - sets the environment variables to point
  to the correct place

FP_SETUP_WINDOWS_TOOLCHAIN is abstracted from the location of the mingw
toolchain and also the eventual location where we will install the
toolchain in the installed bindist.

This is the first step towards #23608

- - - - -
6c043187 by Matthew Pickering at 2023-08-23T13:43:48-04:00
Generate build.mk for bindists

The config.mk.in script was relying on some variables which were
supposed to be set by build.mk but therefore never were when used to
install a bindist.

Specifically

* BUILD_PROF_LIBS to determine whether we had profiled libraries or not
* DYNAMIC_GHC_PROGRAMS to determine whether we had shared libraries or
  not

Not only were these never set but also not really accurate because you
could have shared libaries but still statically linked ghc executable.

In addition variables like GhcLibWays were just never used, so those
have been deleted from the script.

Now instead we generate a build.mk file which just directly specifies
which RtsWays we have supplied in the bindist and whether we have
DYNAMIC_GHC_PROGRAMS.

- - - - -
fe23629b by Matthew Pickering at 2023-08-23T13:43:48-04:00
hadrian: Add reloc-binary-dist-* targets

This adds a command line option to build a "relocatable" bindist.

The bindist is created by first creating a normal bindist and then
installing it using the `RelocatableBuild=YES` option. This creates a
bindist without any wrapper scripts pointing to the libdir.

The motivation for this feature is that we want to ship relocatable
bindists on windows and this method is more uniform than the ad-hoc
method which lead to bugs such as #23608 and #23476

The relocatable bindist can be built with the "reloc-binary-dist" target
and supports the same suffixes as the normal "binary-dist" command to
specify the compression style.

- - - - -
41cbaf44 by Matthew Pickering at 2023-08-23T13:43:48-04:00
packaging: Fix installation scripts on windows/RelocatableBuild case

This includes quite a lot of small fixes which fix the installation
makefile to work on windows properly. This also required fixing the
RelocatableBuild variable which seemed to have been broken for a long
while.

Sam helped me a lot writing this patch by providing a windows machine to
test the changes. Without him it would have taken ages to tweak
everything.

Co-authored-by: sheaf <sam.derbyshire at gmail.com>

- - - - -
03474456 by Matthew Pickering at 2023-08-23T13:43:48-04:00
ci: Build relocatable bindist on windows

We now build the relocatable bindist target on windows, which means we
test and distribute the new method of creating a relocatable bindist.

- - - - -
d0b48113 by Matthew Pickering at 2023-08-23T13:43:48-04:00
hadrian: Add error when trying to build binary-dist target on windows

The binary dist produced by `binary-dist` target doesn't work on windows
because of the wrapper script the makefile installs. In order to not
surprise any packagers we just give an error if someone tries to build
the old binary-dist target rather than the reloc-binary-dist target.

- - - - -
7cbf9361 by Matthew Pickering at 2023-08-23T13:43:48-04:00
hadrian: Remove query' logic to use tooldir

- - - - -
03fad42e by Matthew Pickering at 2023-08-23T13:43:48-04:00
configure: Set WindresCmd directly and removed unused variables

For some reason there was an indirection via the Windres variable before
setting WindresCmd. That indirection led to #23855.

I then also noticed that these other variables were just not used
anywhere when trying to work out what the correct condition was for this
bit of the configure script.

- - - - -
c82770f5 by sheaf at 2023-08-23T13:43:48-04:00
Apply shellcheck suggestion to SUBST_TOOLDIR
- - - - -
896e35e5 by sheaf at 2023-08-23T13:44:34-04:00
Compute hints from TcSolverReportMsg

This commit changes how hints are handled in conjunction with
constraint solver report messages.

Instead of storing `[GhcHint]` in the TcRnSolverReport error constructor,
we compute the hints depending on the underlying TcSolverReportMsg.
This disentangles the logic and makes it easier to add new hints for
certain errors.

- - - - -
a05cdaf0 by Alexander Esgen at 2023-08-23T13:45:16-04:00
users-guide: remove note about fatal Haddock parse failures

- - - - -
4908d798 by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Introduce Data.Enum

- - - - -
f59707c7 by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add export list to GHC.Num.Integer

- - - - -
b1054053 by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add export list to GHC.Num

- - - - -
6baa481d by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add export list to GHC.Num.Natural

- - - - -
2ac15233 by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add export list to GHC.Float

- - - - -
f3c489de by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add export list to GHC.Real

- - - - -
94f59eaa by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Eliminate module reexport in GHC.Exception

The metric increase here isn't strictly due to this commit but it's a
rather small, incidental change.

Metric Increase:
    T8095
    T13386

Metric Decrease:
    T8095
    T13386
    T18304

- - - - -
be1fc7df by Ben Gamari at 2023-08-23T17:36:41-04:00
base: Add disclaimers in internal modules

To warn users that these modules are internal and their interfaces may
change with little warning.

As proposed in Core Libraries Committee #146 [CLC146].

[CLC146]: https://github.com/haskell/core-libraries-committee/issues/146

- - - - -
0326f3f4 by sheaf at 2023-08-23T17:37:29-04:00
Bump Cabal submodule

We need to bump the Cabal submodule to include commit ec75950
which fixes an issue with a dodgy import Rep(..) which relied
on GHC bug #23570

- - - - -
0504cd08 by Facundo Domínguez at 2023-08-23T17:38:11-04:00
Fix typos in the documentation of Data.OldList.permutations
- - - - -
1420b8cb by Antoine Leblanc at 2023-08-24T16:18:17-04:00
Be more eager in TyCon boot validity checking

This commit performs boot-file consistency checking for TyCons into
checkValidTyCl. This ensures that we eagerly catch any mismatches,
which prevents the compiler from seeing these inconsistencies and
panicking as a result.

See Note [TyCon boot consistency checking] in GHC.Tc.TyCl.

Fixes #16127

- - - - -
d99c816f by Finley McIlwaine at 2023-08-24T16:18:55-04:00
Refactor estimation of stack info table provenance

This commit greatly refactors the way we compute estimated provenance for stack
info tables. Previously, this process was done using an entirely separate traversal
of the whole Cmm code stream to build the map from info tables to source locations.
The separate traversal is now fused with the Cmm code generation pipeline in
GHC.Driver.Main.

This results in very significant code generation speed ups when -finfo-table-map is
enabled. In testing, this patch reduces code generation times by almost 30% with
-finfo-table-map and -O0, and 60% with -finfo-table-map and -O1 or -O2 .

Fixes #23103

- - - - -
d3e0124c by Finley McIlwaine at 2023-08-24T16:18:55-04:00
Add a test checking overhead of -finfo-table-map

We want to make sure we don't end up with poor codegen performance resulting from
-finfo-table-map again as in #23103. This test adds a performance test tracking
total allocations while compiling ExactPrint with -finfo-table-map.

- - - - -
fcfc1777 by Ben Gamari at 2023-08-25T10:58:16-04:00
llvmGen: Add export list to GHC.Llvm.MetaData

- - - - -
5880fff6 by Ben Gamari at 2023-08-25T10:58:16-04:00
llvmGen: Allow LlvmLits in MetaExprs

This omission appears to be an oversight.

- - - - -
86ce92a2 by Ben Gamari at 2023-08-25T10:58:16-04:00
compiler: Move platform feature predicates to GHC.Driver.DynFlags

These are useful in `GHC.Driver.Config.*`.

- - - - -
a6a38742 by Ben Gamari at 2023-08-25T10:58:16-04:00
llvmGen: Introduce infrastructure for module flag metadata

- - - - -
e9af2cf3 by Ben Gamari at 2023-08-25T10:58:16-04:00
llvmGen: Don't pass stack alignment via command line

As of https://reviews.llvm.org/D103048 LLVM no longer supports the
`-stack-alignment=...` flag. Instead this information is passed via a
module flag metadata node.

This requires dropping support for LLVM 11 and 12.

Fixes #23870

- - - - -
a936f244 by Alan Zimmerman at 2023-08-25T10:58:56-04:00
EPA: Keep track of "in" token for WarningTxt category

A warning can now be written with a category, e.g.

    {-# WARNInG in "x-c" e "d" #-}

Keep track of the location of the 'in' keyword and string, as well as
the original SourceText of the label, in case it uses character escapes.

- - - - -
3df8a653 by Matthew Pickering at 2023-08-25T17:42:18-04:00
Remove redundant import in InfoTableProv

The copyBytes function is provided by the import of Foreign.

Fixes #23889

- - - - -
d6f807ec by Ben Gamari at 2023-08-25T17:42:54-04:00
gitlab/issue-template: Mention report-a-bug
- - - - -
50b9f75d by Artin Ghasivand at 2023-08-26T20:02:50+03:30
Added StandaloneKindSignature examples to replace CUSKs ones

- - - - -
2f6309a4 by Vladislav Zavialov at 2023-08-27T03:47:37-04:00
Remove outdated CPP in compiler/* and template-haskell/*

The boot compiler was bumped to 9.4 in cebb5819b43.
There is no point supporting older GHC versions with CPP.

- - - - -
5248fdf7 by Zubin Duggal at 2023-08-28T15:01:09+05:30
testsuite: Add regression test for #23861

Simon says this was fixed by

commit 8d68685468d0b6e922332a3ee8c7541efbe46137
Author: sheaf <sam.derbyshire at gmail.com>
Date:   Fri Aug 4 15:28:45 2023 +0200

    Remove zonk in tcVTA

- - - - -
b6903f4d by Zubin Duggal at 2023-08-28T12:33:58-04:00
testsuite: Add regression test for #23864

Simon says this was fixed by

commit 59202c800f2c97c16906120ab2561f6e1556e4af
Author: Sebastian Graf <sebastian.graf at kit.edu>
Date:   Fri Mar 31 17:35:22 2023 +0200

    CorePrep: Eliminate EmptyCase and unsafeEqualityProof in CoreToStg instead

    We eliminate EmptyCase by way of `coreToStg (Case e _ _ []) = coreToStg e` now.
    The main reason is that it plays far better in conjunction with eta expansion
    (as we aim to do for arguments in CorePrep, #23083), because we can discard
    any arguments, `(case e of {}) eta == case e of {}`, whereas in `(e |> co) eta`
    it's impossible to discard the argument.

- - - - -
9eecdf33 by sheaf at 2023-08-28T18:54:06+00:00
Remove ScopedTypeVariables => TypeAbstractions

This commit implements [amendment 604](https://github.com/ghc-proposals/ghc-proposals/pull/604/)
to [GHC proposal 448](https://github.com/ghc-proposals/ghc-proposals/pull/448)
by removing the implication of language extensions

  ScopedTypeVariables => TypeAbstractions

To limit breakage, we now allow type arguments in constructor patterns
when both ScopedTypeVariables and TypeApplications are enabled, but
we emit a warning notifying the user that this is deprecated behaviour
that will go away starting in GHC 9.12.

Fixes #23776

- - - - -
fadd5b4d by sheaf at 2023-08-28T18:54:06+00:00
.stderr: ScopedTypeVariables =/> TypeAbstractions

This commit accepts testsuite changes for the changes in the previous
commit, which mean that TypeAbstractions is no longer implied by
ScopedTypeVariables.

- - - - -
4f5fb500 by Greg Steuck at 2023-08-29T07:55:13-04:00
Repair `codes` test on OpenBSD by explicitly requesting extended RE

- - - - -
6bbde581 by Vasily Sterekhov at 2023-08-29T12:06:58-04:00
Add test for #23540

`T23540.hs` makes use of `explainEv` from `HieQueries.hs`, so
`explainEv` has been moved to `TestUtils.hs`.

- - - - -
257bb3bd by Vasily Sterekhov at 2023-08-29T12:06:58-04:00
Add test for #23120

- - - - -
4f192947 by Vasily Sterekhov at 2023-08-29T12:06:58-04:00
Make some evidence uses reachable by toHie

Resolves #23540, #23120

This adds spans to certain expressions in the typechecker and renamer,
and lets 'toHie' make use of those spans. Therefore the relevant
evidence uses for the following syntax will now show up under the
expected nodes in 'HieAst's:

- Overloaded literals ('IsString', 'Num', 'Fractional')

- Natural patterns and N+k patterns ('Eq', 'Ord', and instances from the
  overloaded literals being matched on)

- Arithmetic sequences ('Enum')

- Monadic bind statements ('Monad')

- Monadic body statements ('Monad', 'Alternative')

- ApplicativeDo ('Applicative', 'Functor')

- Overloaded lists ('IsList')

Also see Note [Source locations for implicit function calls]

In the process of handling overloaded lists I added an extra 'SrcSpan'
field to 'VAExpansion' - this allows us to more accurately reconstruct
the locations from the renamer in 'rebuildHsApps'. This also happens to
fix #23120.

See the additions to Note [Looking through HsExpanded]

- - - - -
fe9fcf9d by Sylvain Henry at 2023-08-29T12:07:50-04:00
ghc-heap: rename C file (fix #23898)

- - - - -
b60d6576 by Krzysztof Gogolewski at 2023-08-29T12:08:29-04:00
Misc cleanup

- Builtin.PrimOps: ReturnsAlg was used only for unboxed tuples.
  Rename to ReturnsTuple.
- Builtin.Utils: use SDoc for a panic message.
  The comment about <<details unavailable>> was obsoleted by e8d356773b56.
- TagCheck: fix wrong logic. It was zipping a list 'args' with its
  version 'args_cmm' after filtering.
- Core.Type: remove an outdated 1999 comment about unlifted polymorphic types
- hadrian: remove leftover debugging print

- - - - -
3054fd6d by Krzysztof Gogolewski at 2023-08-29T12:09:08-04:00
Add a regression test for #23903

The bug has been fixed by commit bad2f8b8aa8424.

- - - - -
21584b12 by Ben Gamari at 2023-08-29T19:52:02-04:00
README: Refer to ghc-hq repository for contributor and governance information

- - - - -
e542d590 by sheaf at 2023-08-29T19:52:40-04:00
Export setInertSet from GHC.Tc.Solver.Monad

We used to export getTcSInerts and setTcSInerts from GHC.Tc.Solver.Monad.
These got renamed to getInertSet/setInertSet in e1590ddc. That commit also removed
the export of setInertSet, but that function is useful for the GHC API.

- - - - -
694ec5b1 by sheaf at 2023-08-30T10:18:32-04:00
Don't bundle children for non-parent Avails

We used to bundle all children of the parent Avail with things that
aren't the parent, e.g. with

  class C a where
    type T a
    meth :: ..

we would bundle the whole Avail (C, T, meth) with all of C, T and meth,
instead of only with C.

Avoiding this fixes #23570

- - - - -
d926380d by Krzysztof Gogolewski at 2023-08-30T10:19:08-04:00
Fix typos

- - - - -
d07080d2 by Josh Meredith at 2023-08-30T19:42:32-04:00
JS: Implement missing C functions `rename`, `realpath`, and `getcwd` (#23806)

- - - - -
e2940272 by David Binder at 2023-08-30T19:43:08-04:00
Bump submodules of hpc and hpc-bin to version 0.7.0.0

hpc 0.7.0.0 dropped SafeHaskell safety guarantees in order to simplify
compatibility with newer versions of the directory package which
dropped all SafeHaskell guarantees.

- - - - -
5d56d05c by David Binder at 2023-08-30T19:43:08-04:00
Bump hpc bound in ghc.cabal.in

- - - - -
99fff496 by Dominik Schrempf at 2023-08-31T00:04:46-04:00
ghc classes documentation: rm redundant comment

- - - - -
fe021bab by Dominik Schrempf at 2023-08-31T00:04:46-04:00
prelude documentation: various nits

- - - - -
48c84547 by Dominik Schrempf at 2023-08-31T00:04:46-04:00
integer documentation: minor corrections

- - - - -
20cd12f4 by Dominik Schrempf at 2023-08-31T00:04:46-04:00
real documentation: nits

- - - - -
dd39bdc0 by sheaf at 2023-08-31T00:05:27-04:00
Add a test for #21765

This issue (of reporting a constraint as being redundant even though
removing it causes typechecking to fail) was fixed in aed1974e.
This commit simply adds a regression test.

Fixes #21765

- - - - -
f1ec3628 by Andrew Lelechenko at 2023-08-31T23:53:30-04:00
Export foldl' from Prelude and bump submodules

See https://github.com/haskell/core-libraries-committee/issues/167 for discussion

Metric Decrease:
    T8095
    T13386
Metric Increase:
    T13386
    T8095

T8095 ghc/alloc decreased on x86_64, but increased on aarch64.
T13386 ghc/alloc decreased on x86_64-windows, but increased on other platforms.
Neither has anything to do with `foldl'`, so I conclude that both are flaky.

- - - - -
3181b97d by Gergő Érdi at 2023-08-31T23:54:06-04:00
Allow cross-tyvar defaulting proposals from plugins

Fixes #23832.

- - - - -
495b2241 by Matthew Pickering at 2023-09-01T13:02:07+02:00
Fix issue with duplicate reexported definitions (T23616)

When a class method was reexported, it's default methods were also
showing up in the generated html page.

The simplest and most non-invasive fix is to not look for the default
method if we are just exporting the class method.. because the backends
are just showing default methods when the whole class is exported.

In general it would be worthwhile to rewrite this bit of code I think as
the logic and what gets included is split over `lookupDocs` and
`availExportDecl` it would be clearer to combine the two. The result of
lookupDocs is always just passed to availExportDecl so it seems simpler
and more obvious to just write the function directly.

- - - - -
e4af506e by Sebastian Graf at 2023-09-01T14:29:12-04:00
Clarify Note [GlobalId/LocalId] after CorePrep (#23797)

Fixes #23797.

- - - - -
ac29787c by Sylvain Henry at 2023-09-01T14:30:02-04:00
Fix warning with UNPACK on sum type (#23921)

- - - - -
9765ac7b by Zubin Duggal at 2023-09-05T00:37:45-04:00
hadrian: track python dependencies in doc rules

- - - - -
1578215f by sheaf at 2023-09-05T00:38:26-04:00
Bump Haddock to fix #23616

This commit updates the Haddock submodule to include
the fix to #23616.

Fixes #23616

- - - - -
5a2fe35a by David Binder at 2023-09-05T00:39:07-04:00
Fix example in GHC user guide in SafeHaskell section

The example given in the SafeHaskell section uses an implementation of
Monad which no longer works. This MR removes the non-canonical return
instance and adds the necessary instances of Functor and Applicative.

- - - - -
291d81ae by Matthew Pickering at 2023-09-05T14:03:10-04:00
driver: Check transitive closure of haskell package dependencies when deciding whether to relink

We were previously just checking whether direct package dependencies had
been modified. This caused issues when compiling without optimisations
as we wouldn't relink the direct dependency if one of its dependenices
changed.

Fixes #23724

- - - - -
35da0775 by Krzysztof Gogolewski at 2023-09-05T14:03:47-04:00
Re-export GHC.Utils.Panic.Plain from GHC.Utils.Panic

Fixes #23930

- - - - -
6551824d by Finley McIlwaine at 2023-09-05T13:06:57-07:00
Remove fake export of `FUN` from Prelude

This prevents `data FUN` from being shown at the top of the Prelude docs. Fixes
\#23920 on GHC.

- - - - -
3930d793 by Jaro Reinders at 2023-09-06T18:42:55-04:00
Make STG rewriter produce updatable closures

- - - - -
0104221a by Krzysztof Gogolewski at 2023-09-06T18:43:32-04:00
configure: update message to use hadrian (#22616)

- - - - -
b34f8586 by Alan Zimmerman at 2023-09-07T10:58:38-04:00
EPA: Incorrect locations for UserTyVar with '@'

In T13343.hs, the location for the @ is not within the span of the
surrounding UserTyVar.

  type Bad @v = (forall (v1 :: RuntimeRep) (a1 :: TYPE v). a1) :: TYPE v

Widen it so it is captured.

Closes #23887

- - - - -
8046f020 by Finley McIlwaine at 2023-09-07T10:59:15-04:00
Bump haddock submodule to fix #23920

Removes the fake export of `FUN` from Prelude. Fixes #23920.

Bumps haddock submodule.

- - - - -
e0aa8c6e by Krzysztof Gogolewski at 2023-09-07T11:00:03-04:00
Fix wrong role in mkSelCo_maybe

In the Lint failure in #23938, we start with a coercion Refl :: T a ~R T a,
and call mkSelCo (SelTyCon 1 nominal) Refl.
The function incorrectly returned Refl :: a ~R a. The returned role
should be nominal, according to the SelCo rule:

      co : (T s1..sn) ~r0 (T t1..tn)
      r = tyConRole tc r0 i
      ----------------------------------
      SelCo (SelTyCon i r) : si ~r ti

In this test case, r is nominal while r0 is representational.

- - - - -
1d92f2df by Gergő Érdi at 2023-09-08T04:04:30-04:00
If we have multiple defaulting plugins, then we should zonk in between them

after any defaulting has taken place, to avoid a defaulting plugin seeing
a metavariable that has already been filled.

Fixes #23821.

- - - - -
eaee4d29 by Gergő Érdi at 2023-09-08T04:04:30-04:00
Improvements to the documentation of defaulting plugins

Based on @simonpj's draft and comments in !11117

- - - - -
ede3df27 by Alan Zimmerman at 2023-09-08T04:05:06-04:00
EPA: Incorrect span for LWarnDec GhcPs

The code (from T23465.hs)

    {-# WARNInG in "x-c" e "d" #-}
    e = e

gives an incorrect span for the LWarnDecl GhcPs

Closes #23892

It also fixes the Test23465/Test23464 mixup

- - - - -
a0ccef7a by Krzysztof Gogolewski at 2023-09-08T04:05:42-04:00
Valid hole fits: don't suggest unsafeCoerce (#17940)

- - - - -
9ab5a448 by Alan Zimmerman at 2023-09-08T18:26:53+01:00
Match changes in wip/az/T23885-unicode-funtycon

- - - - -
88b942c4 by Oleg Grenrus at 2023-09-08T19:58:42-04:00
Add warning for badly staged types.

Resolves #23829.

The stage violation results in out-of-bound names in splices.
Technically this is an error, but someone might rely on this!?

Internal changes:
- we now track stages for TyVars.
- thLevel (RunSplice _) = 0, instead of panic, as reifyInstances does
  in fact rename its argument type, and it can contain variables.

- - - - -
9861f787 by Ben Gamari at 2023-09-08T19:59:19-04:00
rts: Fix invalid symbol type

I suspect this code is dead since we haven't observed this failing
despite the obviously incorrect macro name.

- - - - -
03ed6a9a by Ben Gamari at 2023-09-08T19:59:19-04:00
testsuite: Add simple test exercising C11 atomics in GHCi

See #22012.

- - - - -
1aa5733a by Ben Gamari at 2023-09-08T19:59:19-04:00
rts/RtsSymbols: Add AArch64 outline atomic operations

Fixes #22012 by adding the symbols described in
https://github.com/llvm/llvm-project/blob/main/llvm/docs/Atomics.rst#libcalls-atomic.

Ultimately this would be better addressed by #22011, but this is a first
step in the right direction and fixes the immediate symptom.

Note that we dropped the `__arch64_cas16` operations as these provided
by all platforms's compilers. Also, we don't link directly against the
libgcc/compiler-rt definitions but rather provide our own wrappers to
work around broken toolchains (e.g. https://bugs.gentoo.org/868018).

Generated via https://gitlab.haskell.org/ghc/ghc/-/snippets/5733.

- - - - -
8f7d3041 by Matthew Pickering at 2023-09-08T19:59:55-04:00
ci: Build debian12 and fedora38 bindists

This adds builds for the latest releases for fedora and debian

We build these bindists in nightly and release pipelines.

- - - - -
a1f0d55c by Felix Leitz at 2023-09-08T20:00:37-04:00
Fix documentation around extension implication for MultiParamTypeClasses/ConstrainedClassMethods.

- - - - -
98166389 by Teo Camarasu at 2023-09-12T04:30:54-04:00
docs: move -xn flag beside --nonmoving-gc

It makes sense to have these beside each other as they are aliases.

- - - - -
f367835c by Teo Camarasu at 2023-09-12T04:30:55-04:00
nonmoving: introduce a family of dense allocators

Supplement the existing power 2 sized nonmoving allocators with a family
of dense allocators up to a configurable threshold.

This should reduce waste from rounding up block sizes while keeping the
amount of allocator sizes manageable.

This patch:
  - Adds a new configuration option `--nonmoving-dense-allocator-count`
    to control the amount of these new dense allocators.
  - Adds some constants to `NonmovingAllocator` in order to keep
    marking fast with the new allocators.

Resolves #23340

- - - - -
2b07bf2e by Teo Camarasu at 2023-09-12T04:30:55-04:00
Add changelog entry for #23340

- - - - -
f96fe681 by sheaf at 2023-09-12T04:31:44-04:00
Use printGhciException in run{Stmt, Decls}

When evaluating statements in GHCi, we need to use printGhciException
instead of the printException function that GHC provides in order to
get the appropriate error messages that are customised for ghci use.

- - - - -
d09b932b by psilospore at 2023-09-12T04:31:44-04:00
T23686: Suggest how to enable Language Extension when in ghci
Fixes #23686

- - - - -
da30f0be by Matthew Craven at 2023-09-12T04:32:24-04:00
Unarise: Split Rubbish literals in function args

Fixes #23914.  Also adds a check to STG lint that
these args are properly unary or nullary after unarisation

- - - - -
261b6747 by Matthew Pickering at 2023-09-12T04:33:04-04:00
darwin: Bump MAXOSX_DEPLOYMENT_TARGET to 10.13

This bumps the minumum supported version to 10.13 (High Sierra) which is
6 years old at this point.

Fixes #22938

- - - - -
f418f919 by Mario Blažević at 2023-09-12T04:33:45-04:00
Fix TH pretty-printing of nested GADTs, issue #23937

This commit fixes `Language.Haskell.TH.Ppr.pprint` so that it correctly
pretty-prints GADTs declarations contained within data family instances.

Fixes #23937

- - - - -
d7a64753 by John Ericson at 2023-09-12T04:34:20-04:00
Put hadrian non-bootstrap plans through `jq`

This makes it possible to review changes with conventional diffing
tools.

This is picking up where ad8cfed4195b1bbfc15b841f010e75e71f63157d left
off.

- - - - -
ff0a709a by Sylvain Henry at 2023-09-12T08:46:28-04:00
JS: fix some tests

- Tests using Setup programs need to pass --with-hc-pkg
- Several other fixes

See https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend/bug_triage
for the current status

- - - - -
fc86f0e7 by Krzysztof Gogolewski at 2023-09-12T08:47:04-04:00
Fix in-scope set assertion failure (#23918)

Patch by Simon

- - - - -
21a906c2 by Matthew Pickering at 2023-09-12T17:21:04+02:00
Add -Winconsistent-flags warning

The warning fires when inconsistent command line flags are passed.

For example:

* -dynamic-too and -dynamic
* -dynamic-too on windows
* -O and --interactive
* etc

This is on by default and allows users to control whether the warning is
displayed and whether it should be an error or not.

Fixes #22572

- - - - -
dfc4f426 by Krzysztof Gogolewski at 2023-09-12T20:31:35-04:00
Avoid serializing BCOs with the internal interpreter

Refs #23919

- - - - -
9217950b by Finley McIlwaine at 2023-09-13T08:06:03-04:00
Fix numa auto configure

- - - - -
98e7c1cf by Simon Peyton Jones at 2023-09-13T08:06:40-04:00
Add -fno-cse to T15426 and T18964

This -fno-cse change is to avoid these performance tests depending on
flukey CSE stuff.  Each contains several independent tests, and we don't
want them to interact.

See #23925.

By killing CSE we expect a 400% increase in T15426, and 100% in T18964.

Metric Increase:
    T15426
    T18964

- - - - -
236a134e by Simon Peyton Jones at 2023-09-13T08:06:40-04:00
Tiny refactor

canEtaReduceToArity was only called internally, and always with
two arguments equal to zero.  This patch just specialises the
function, and renames it to cantEtaReduceFun.

No change in behaviour.

- - - - -
56b403c9 by Ben Gamari at 2023-09-13T19:21:36-04:00
spec-constr: Lift argument limit for SPEC-marked functions

When the user adds a SPEC argument to a function, they are informing us
that they expect the function to be specialised. However, previously
this instruction could be preempted by the specialised-argument limit
(sc_max_args). Fix this.

This fixes #14003.

- - - - -
6840012e by Simon Peyton Jones at 2023-09-13T19:22:13-04:00
Fix eta reduction

Issue #23922 showed that GHC was bogusly eta-reducing a join point.
We should never eta-reduce (\x -> j x) to j, if j is a join point.

It is extremly difficult to trigger this bug.  It took me 45 mins of
trying to make a small tests case, here immortalised as T23922a.

- - - - -
e5c00092 by Andreas Klebinger at 2023-09-14T08:57:43-04:00
Profiling: Properly escape characters when using `-pj`.

There are some ways in which unusual characters like quotes or others
can make it into cost centre names. So properly escape these.

Fixes #23924

- - - - -
ec490578 by Ellie Hermaszewska at 2023-09-14T08:58:24-04:00
Use clearer example variable names for bool eliminator

- - - - -
5126a2fe by Sylvain Henry at 2023-09-15T11:18:02-04:00
Add missing int64/word64-to-double/float rules (#23907)

CLC proposal: https://github.com/haskell/core-libraries-committee/issues/203

- - - - -
566ef411 by Mario Blažević at 2023-09-15T11:18:43-04:00
Fix and test TH pretty-printing of type operator role declarations

This commit fixes and tests `Language.Haskell.TH.Ppr.pprint` so that it
correctly pretty-prints `type role` declarations for operator names.

Fixes #23954

- - - - -
8e05c54a by Simon Peyton Jones at 2023-09-16T01:42:33-04:00
Use correct FunTyFlag in adjustJoinPointType

As the Lint error in #23952 showed, the function adjustJoinPointType
was failing to adjust the FunTyFlag when adjusting the type.

I don't think this caused the seg-fault reported in the ticket,
but it is definitely.  This patch fixes it.

It is tricky to come up a small test case; Krzysztof came up with
this one, but it only triggers a failure in GHC 9.6.

- - - - -
778c84b6 by Pierre Le Marre at 2023-09-16T01:43:15-04:00
Update to Unicode 15.1.0

See: https://www.unicode.org/versions/Unicode15.1.0/

- - - - -
f9d79a6c by Alan Zimmerman at 2023-09-18T00:00:14-04:00
EPA: track unicode version for unrestrictedFunTyCon

Closes #23885

Updates haddock submodule

- - - - -
9374f116 by Andrew Lelechenko at 2023-09-18T00:00:54-04:00
Bump parsec submodule to allow text-2.1 and bytestring-0.12

- - - - -
7ca0240e by Ben Gamari at 2023-09-18T15:16:48-04:00
base: Advertise linear time of readFloat

As noted in #23538, `readFloat` has runtime that scales nonlinearly in
the size of its input. Consequently, its use on untrusted input can
be exploited as a denial-of-service vector. Point this out and suggest
use of `read` instead.

See #23538.

- - - - -
f3f58f13 by Simon Peyton Jones at 2023-09-18T15:17:24-04:00
Remove dead code GHC.CoreToStg.Prep.canFloat

This function never fires, so we can delete it: #23965.

- - - - -
ccab5b15 by Ben Gamari at 2023-09-18T15:18:02-04:00
base/changelog: Move fix for #23907 to 9.8.1 section

Since the fix was backported to 9.8.1

- - - - -
51b57d65 by Matthew Pickering at 2023-09-19T08:44:31-04:00
Add aarch64 alpine bindist

This is dynamically linked and makes creating statically linked
executables more straightforward.

Fixes #23482

- - - - -
02c87213 by Matthew Pickering at 2023-09-19T08:44:31-04:00
Add aarch64-deb11 bindist

This adds a debian 11 release job for aarch64.

Fixes #22005

- - - - -
8b61dfd6 by Alexis King at 2023-09-19T08:45:13-04:00
Don’t store the async exception masking state in CATCH frames

- - - - -
86d2971e by doyougnu at 2023-09-19T19:08:19-04:00
compiler,ghci: error codes link to HF error index

closes: #23259

- adds -fprint-error-index-links={auto|always|never} flag

- - - - -
5f826c18 by sheaf at 2023-09-19T19:09:03-04:00
Pass quantified tyvars in tcDefaultAssocDecl

This commit passes the correct set of quantified type variables written
by the user in associated type default declarations for validity
checking. This ensures that validity checking of associated type defaults
mirrors that of standalone type family instances.

Fixes #23768 (see testcase T23734 in subsequent commit)

- - - - -
aba18424 by sheaf at 2023-09-19T19:09:03-04:00
Avoid panic in mkGADTVars

This commit avoids panicking in mkGADTVars when we encounter
a type variable as in #23784 that is bound by a user-written
forall but not actually used.

Fixes #23784

- - - - -
a525a92a by sheaf at 2023-09-19T19:09:03-04:00
Adjust reporting of unused tyvars in data FamInsts

This commit adjusts the validity checking of data family
instances to improve the reporting of unused type variables.

See Note [Out of scope tvs in data family instances] in GHC.Tc.Validity.

The problem was that, in a situation such as

  data family D :: Type
  data instance forall (d :: Type). D = MkD

the RHS passed to 'checkFamPatBinders' would be the TyCon app

  R:D d

which mentions the type variable 'd' quantified in the user-written
forall. Thus, when computing the set of unused type variables in
the RHS of the data family instance, we would find that 'd' is used,
and report a strange error message that would say that 'd' is not
bound on the LHS.

To fix this, we special-case the data-family instance case,
manually extracting all the type variables that appear in the
arguments of all the data constructores of the data family instance.

Fixes #23778

- - - - -
28dd52ee by sheaf at 2023-09-19T19:09:03-04:00
Unused tyvars in FamInst: only report user tyvars

This commit changes how we perform some validity checking for
coercion axioms to mirror how we handle default declarations for
associated type families. This allows us to keep track of whether
type variables in type and data family instances were user-written
or not, in order to only report the user-written ones in
"unused type variable" error messages.

Consider for example:

  {-# LANGUAGE PolyKinds #-}
  type family F
  type instance forall a. F = ()

In this case, we get two quantified type variables,
(k :: Type) and (a :: k); the second being user-written, but the first
is introduced by the typechecker. We should only report 'a' as being
unused, as the user has no idea what 'k' is.

Fixes #23734

- - - - -
1eed645c by sheaf at 2023-09-19T19:09:03-04:00
Validity: refactor treatment of data families

This commit refactors the reporting of unused type variables in type
and data family instances to be more principled. This avoids ad-hoc
logic in the treatment of data family instances.

- - - - -
35bc506b by John Ericson at 2023-09-19T19:09:40-04:00
Remove `ghc-cabal`

It is dead code since the Make build system was removed.

I tried to go over every match of `git grep -i ghc-cabal` to find other
stray bits. Some of those might be workarounds that can be further
removed.

- - - - -
665ca116 by John Paul Adrian Glaubitz at 2023-09-19T19:10:39-04:00
Re-add unregisterised build support for sparc and sparc64

Closes #23959

- - - - -
142f8740 by Matthew Pickering at 2023-09-19T19:11:16-04:00
Bump ci-images to use updated version of Alex

Fixes #23977

- - - - -
fa977034 by John Ericson at 2023-09-21T12:55:25-04:00
Use Cabal 3.10 for Hadrian

We need the newer version for `CABAL_FLAG_*` env vars for #17191.

- - - - -
a5d22cab by John Ericson at 2023-09-21T12:55:25-04:00
hadrian: `need` any `configure` script we will call

When the script is changed, we should reconfigure.

- - - - -
db882b57 by John Ericson at 2023-09-21T12:55:25-04:00
hadrian: Make it easier to debug Cabal configure

Right now, output is squashed. This make per-package configure scripts
extremely hard to maintain, because we get vague "library is missing"
errors when the actually probably is usually completely unrelated except
for also involving the C/C++ toolchain.

(I can always pass `-VVV` to Hadrian locally, but these errors are
subtle and I often cannot reproduce them locally!)

`--disable-option-checking` was added back in
75c6e0684dda585c37b4ac254cd7a13537a59a91 but seems to be a bit overkill;
if other flags are passed that are not recognized behind the two from
Cabal mentioned in the former comment, we *do* want to know about it.

- - - - -
7ed65f5a by John Ericson at 2023-09-21T12:55:25-04:00
hadrian: Increase verbosity of certain cabal commands

This is a hack to get around the cabal function we're calling
*decreasing* the verbosity it passes to another function, which is the
stuff we often actually care about. Sigh.

Keeping this a separate commit so if this makes things too verbose it is
easy to revert.

- - - - -
a4fde569 by John Ericson at 2023-09-21T12:55:25-04:00
rts: Move most external symbols logic to the configure script

This is much more terse because we are programmatically handling the
leading underscore.

`findPtr` however is still handled in the Cabal file because we need a
newer Cabal to pass flags to the configure script automatically.

Co-Authored-By: Ben Gamari <ben at well-typed.com>

- - - - -
56cc85fb by Andrew Lelechenko at 2023-09-21T12:56:21-04:00
Bump Cabal submodule to allow text-2.1 and bytestring-0.12

- - - - -
0cd6148c by Matthew Pickering at 2023-09-21T12:56:21-04:00
hadrian: Generate Distribution/Fields/Lexer.x before creating a source-dist

- - - - -
b10ba6a3 by Andrew Lelechenko at 2023-09-21T12:56:21-04:00
Bump hadrian's index-state to upgrade alex at least to 3.2.7.3

- - - - -
11ecc37b by Luite Stegeman at 2023-09-21T12:57:03-04:00
JS: correct file size and times

Programs produced by the JavaScript backend were returning
incorrect file sizes and modification times, causing cabal
related tests to fail.

This fixes the problem and adds an additional test that verifies
basic file information operations.

fixes #23980

- - - - -
b35fd2cd by Ben Gamari at 2023-09-21T12:57:39-04:00
gitlab-ci: Drop libiserv from upload_ghc_libs

libiserv has been merged into the ghci package.

- - - - -
37ad04e8 by Ben Gamari at 2023-09-21T12:58:15-04:00
testsuite: Fix Windows line endings

- - - - -
5795b365 by Ben Gamari at 2023-09-21T12:58:15-04:00
testsuite: Use makefile_test

- - - - -
15118740 by Ben Gamari at 2023-09-21T12:58:55-04:00
system-cxx-std-lib: Add license and description
- - - - -
0208f1d5 by Ben Gamari at 2023-09-21T12:59:33-04:00
gitlab/issue-templates: Rename bug.md -> default.md

So that it is visible by default.

- - - - -
23cc3f21 by Andrew Lelechenko at 2023-09-21T20:18:11+01:00
Bump submodule text to 2.1

- - - - -
b8e4fe23 by Andrew Lelechenko at 2023-09-22T20:05:05-04:00
Bump submodule unix to 2.8.2.1

- - - - -
54b2016e by John Ericson at 2023-09-23T11:40:41-04:00
Move lib{numa,dw} defines to RTS configure

Clean up the m4 to handle the auto case always and be more consistent.
Also simplify the CPP --- we should always have both headers if we are
using libnuma.

"side effects" (AC_DEFINE, and AC_SUBST) are removed from the macros to
better separate searching from actions taken based on search results.
This might seem overkill now, but will make shuffling logic between
configure scripts easier later.

The macro comments are converted from `dnl` to `#` following the
recomendation in
https://www.gnu.org/software/autoconf/manual/autoconf-2.71/html_node/Macro-Definitions.html

- - - - -
d51b601b by John Ericson at 2023-09-23T11:40:50-04:00
Shuffle libzstd configuring between scripts

Like the prior commit for libdw and libnuma, `AC_DEFINE` to RTS
configure, `AC_SUBST` goes to the top-level configure script, and the
documentation of the m4 macro is improved.

- - - - -
d1425af0 by John Ericson at 2023-09-23T11:41:03-04:00
Move `FP_ARM_OUTLINE_ATOMICS` to RTS configure

It is just `AC_DEFINE` it belongs there instead.

- - - - -
18de37e4 by John Ericson at 2023-09-23T11:41:03-04:00
Move mmap in the runtime linker check to the RTS configure

`AC_DEFINE` should go there instead.

- - - - -
74132c2b by Andrew Lelechenko at 2023-09-25T21:56:54-04:00
Elaborate comment on GHC_NO_UNICODE

- - - - -
de142aa2 by Ben Gamari at 2023-09-26T15:25:03-04:00
gitlab-ci: Mark T22012 as broken on CentOS 7

Due to #23979.

- - - - -
6a896ce8 by Teo Camarasu at 2023-09-26T15:25:39-04:00
hadrian: better error for failing to find file's dependencies

Resolves #24004

- - - - -
d697a6c2 by Stefan Holdermans at 2023-09-26T20:58:37+00:00
Refactor uses of `partitionEithers . map`

This patch changes occurences of the idiom
`partitionEithers (map f xs)` by the simpler form
`partitionWith f xs` where `partitionWith` is the utility function
defined in `GHC.Utils.Misc`.

Resolves: #23953

- - - - -
8a2968b7 by Stefan Holdermans at 2023-09-26T20:58:37+00:00
Refactor uses of `partitionEithers <$> mapM f xs`

This patch changes occurences of the idiom
`partitionEithers <$> mapM f xs` by the simpler form
`partitionWithM f xs` where `partitionWithM` is a utility function
newly added to `GHC.Utils.Misc`.

- - - - -
6a27eb97 by Stefan Holdermans at 2023-09-26T20:58:37+00:00
Mark `GHC.Utils.Misc.partitionWithM` as inlineable

This patch adds an `INLINEABLE` pragma for `partitionWithM` to ensure
that the right-hand side of the definition of this function remains
available for specialisation at call sites.

- - - - -
f1e5245a by David Binder at 2023-09-27T01:19:00-04:00
Add RTS option to supress tix file

- - - - -
1f43124f by David Binder at 2023-09-27T01:19:00-04:00
Add expected output to testsuite in test interface-stability/base-exports

- - - - -
b9d2c354 by David Binder at 2023-09-27T01:19:00-04:00
Expose HpcFlags and getHpcFlags from GHC.RTS.Flags

- - - - -
345675c6 by David Binder at 2023-09-27T01:19:00-04:00
Fix expected output of interface-stability test

- - - - -
146e1c39 by David Binder at 2023-09-27T01:19:00-04:00
Implement getHpcFlags

- - - - -
61ba8e20 by David Binder at 2023-09-27T01:19:00-04:00
Add section in user guide

- - - - -
ea05f890 by David Binder at 2023-09-27T01:19:01-04:00
Rename --emit-tix-file to --write-tix-file

- - - - -
cabce2ce by David Binder at 2023-09-27T01:19:01-04:00
Update the golden files for interface stability

- - - - -
1dbdb9d0 by Krzysztof Gogolewski at 2023-09-27T01:19:37-04:00
Refactor: introduce stgArgRep

The function 'stgArgType' returns the type in STG. But this violates
the abstraction: in STG we're supposed to operate on PrimReps.

This introduces
stgArgRep ty = typePrimRep (stgArgType ty)
stgArgRep1 ty = typePrimRep1 (stgArgType ty)
stgArgRep_maybe ty = typePrimRep_maybe (stgArgType ty)

stgArgType is still directly used for unboxed tuples (should be fixable), FFI
and in ticky.

- - - - -
b02f8042 by Mario Blažević at 2023-09-27T17:33:28-04:00
Fix TH pretty-printer's parenthesization

This PR Fixes `Language.Haskell.TH.Ppr.pprint` so it correctly emits parentheses where needed.

Fixes #23962, #23968, #23971, and #23986

- - - - -
79104334 by Krzysztof Gogolewski at 2023-09-27T17:34:04-04:00
Add a testcase for #17564

The code in the ticket relied on the behaviour of Derived constraints.
Derived constraints were removed in GHC 9.4 and now the code works
as expected.

- - - - -
d7a80143 by sheaf at 2023-09-28T03:25:53-04:00
lint-codes: add new modes of operation

This commit adds two new modes of operation to the lint-codes
utility:

  list - list all statically used diagnostic codes
  outdated - list all outdated diagnostic codes

The previous behaviour is now:

  test - test consistency and coverage of diagnostic codes

- - - - -
477d223c by sheaf at 2023-09-28T03:25:53-04:00
lint codes: avoid using git-grep

We manually traverse through the filesystem to find the diagnostic codes
embedded in .stdout and .stderr files, to avoid any issues with old
versions of grep.

Fixes #23843

- - - - -
a38ae69a by sheaf at 2023-09-28T03:25:53-04:00
lint-codes: add Hadrian targets

This commit adds new Hadrian targets:

  codes, codes:used - list all used diagnostic codes
  codes:outdated - list outdated diagnostic codes

This allows users to easily query GHC for used and outdated
diagnostic codes, e.g.

  hadrian/build -j --flavour=<..> codes

will list all used diagnostic codes in the command line by running
the lint-codes utility in the "list codes" mode of operation.

The diagnostic code consistency and coverage test is still run as usual,
through the testsuite:

  hadrian/build test --only="codes"

- - - - -
9cdd629b by Ben Gamari at 2023-09-28T03:26:29-04:00
hadrian: Install LICENSE files in bindists

Fixes #23548.

- - - - -
b8ebf876 by Matthew Craven at 2023-09-28T03:27:05-04:00
Fix visibility when eta-reducing a type lambda

Fixes #24014.

- - - - -
d3874407 by Torsten Schmits at 2023-09-30T16:08:10-04:00
Fix several mistakes around free variables in iface breakpoints

Fixes #23612 , #23607, #23998 and #23666.

MR: !11026

The fingerprinting logic in `Iface.Recomp` failed lookups when processing decls containing breakpoints for two reasons:

* IfaceBreakpoint created binders for free variables instead of expressions

* When collecting free names for the dependency analysis for fingerprinting, breakpoint FVs were skipped

- - - - -
ef5342cd by Simon Peyton Jones at 2023-09-30T16:08:48-04:00
Refactor to combine HsLam and HsLamCase

This MR is pure refactoring (#23916):
* Combine `HsLam` and `HsLamCase`
* Combine `HsCmdLam` and `HsCmdLamCase`

This just arranges to treat uniformly
   \x -> e
   \case pi -> ei
   \cases pis -> ie

In the exising code base the first is treated differently
to the latter two.

No change in behaviour.

More specifics:

* Combine `HsLam` and `HsLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsExpr`) into one data construtor covering
  * Lambda
  * `\case`
  * `\cases`

* The new `HsLam` has an argument of type `HsLamVariant` to distinguish the three cases.

* Similarly, combine `HsCmdLam` and `HsCmdLamCase` (constructors of `Language.Haskell.Syntax.Expr.HsCmd` ) into one.

* Similarly, combine `mkHsLamPV` and `mkHsLamCasePV` (methods of class `DisambECP`) into one. (Thank you Alan Zimmerman.)

* Similarly, combine `LambdaExpr` and `LamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsMatchContext`) into one: `LamAlt` with a `HsLamVariant` argument.

* Similarly, combine `KappaExpr` and `ArrowLamCaseAlt` (constructors of `Language.Haskell.Syntax.Expr.HsArrowMatchContext`) into one: `ArrowLamAlt` with a `HsLamVariant` argument.

* Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.

* Similarly, combine `PsErrLambdaInPat` and `PsErrLambdaCaseInPat` (constructors of `GHC.Parser.Errors.Ppr.PsError`) into one.

* In the same `PsError` data type, combine `PsErrLambdaCmdInFunAppCmd` and `PsErrLambdaCaseCmdInFunAppCmd` into one.

* In the same `PsError` data tpye, combine `PsErrLambdaInFunAppExpr` and `PsErrLambdaCaseInFunAppExpr` into one.

p* Smilarly combine `ExpectedFunTyLam` and `ExpectedFunTyLamCase` (constructors of `GHC.Tc.Types.Origin.ExpectedFunTyOrigin`) into one.

Phew!

- - - - -
b048bea0 by Andreas Klebinger at 2023-09-30T16:09:24-04:00
Arm: Make ppr methods easier to use by not requiring NCGConfig

- - - - -
2adc0508 by Andreas Klebinger at 2023-09-30T16:09:24-04:00
AArch64: Fix broken conditional jumps for offsets >= 1MB

Rewrite conditional jump instructions with offsets >= 1MB to use unconditional jumps
to avoid overflowing the immediate.

Fixes #23746

- - - - -
1424f790 by Alan Zimmerman at 2023-09-30T16:10:00-04:00
EPA: Replace Monoid with NoAnn

We currently use the Monoid class as a constraint on Exact Print
Annotation functions, so we can use mempty. But this leads to
requiring Semigroup instances too, which do not always make sense.

Instead, introduce a class NoAnn, with a function noAnn analogous to
mempty.

Closes #20372

Updates haddock submodule

- - - - -
c1a3ecde by Ben Gamari at 2023-09-30T16:10:36-04:00
users-guide: Refactor handling of :base-ref: et al.

- - - - -
bc204783 by Richard Eisenberg at 2023-10-02T14:50:52+02:00
Simplify and correct nasty case in coercion opt

This fixes #21062.

No test case, because triggering this code seems challenging.

- - - - -
9c9ca67e by Andrew Lelechenko at 2023-10-04T05:42:28-04:00
Bump bytestring submodule to 0.12.0.2

- - - - -
4e46dc2b by Andrew Lelechenko at 2023-10-04T05:42:28-04:00
Inline bucket_match

- - - - -
f6b2751f by Ben Gamari at 2023-10-04T05:43:05-04:00
configure: Fix #21712 again

This is a bit of a shot in the dark to fix #24033, which appears to be
another instance of #21712. For some reason the ld-override logic
*still* appears to be active on Darwin targets (or at least one).
Consequently, on misconfigured systems we may choose a non-`ld64`
linker.

It's a bit unclear exactly what happened in #24033 but ultimately the
check added for #21712 was not quite right, checking for the
`ghc_host_os` (the value of which depends upon the bootstrap compiler)
instead of the target platform. Fix this.

Fixes #24033.

- - - - -
2f0a101d by Krzysztof Gogolewski at 2023-10-04T05:43:42-04:00
Add a regression test for #24029

- - - - -
8cee3fd7 by sheaf at 2023-10-04T05:44:22-04:00
Fix non-symbolic children lookup of fixity decl

The fix for #23664 did not correctly account for non-symbolic names
when looking up children of a given parent. This one-line fix changes
that.

Fixes #24037

- - - - -
a4785b33 by Cheng Shao at 2023-10-04T05:44:59-04:00
rts: fix incorrect ticket reference

- - - - -
e037f459 by Ben Gamari at 2023-10-04T05:45:35-04:00
users-guide: Fix discussion of -Wpartial-fields

 * fix a few typos
 * add a new example showing when the warning fires
 * clarify the existing example
 * point out -Wincomplete-record-selects

Fixes #24049.

- - - - -
8ff3134e by Matthew Pickering at 2023-10-05T05:34:58-04:00
Revert "Pass preprocessor options to C compiler when building foreign C files (#16737)"

This reverts commit 1c18d3b41f897f34a93669edaebe6069f319f9e2.

`-optP` should pass options to the preprocessor, that might be a very
different program to the C compiler, so passing the options to the C
compiler is likely to result in `-optP` being useless.

Fixes #17185 and #21291

- - - - -
8f6010b9 by Ben Gamari at 2023-10-05T05:35:36-04:00
rts/nonmoving: Fix on LLP64 platforms

Previously `NONMOVING_SEGMENT_MASK` and friends were defined with the `UL`
size suffix. However, this is wrong on LLP64 platforms like Windows,
where `long` is 32-bits.

Fixes #23003.
Fixes #24042.

- - - - -
f20d02f8 by Andreas Klebinger at 2023-10-05T05:36:14-04:00
Fix isAArch64Bitmask for 32bit immediates.

Fixes #23802

- - - - -
63afb701 by Bryan Richter at 2023-10-05T05:36:49-04:00
Work around perf note fetch failure

Addresses #24055.

- - - - -
242102f4 by Krzysztof Gogolewski at 2023-10-05T05:37:26-04:00
Add a test for #21348

- - - - -
7d390bce by Rewbert at 2023-10-05T05:38:08-04:00
Fixes #24046

- - - - -
69abb171 by Finley McIlwaine at 2023-10-06T14:06:28-07:00
Ensure unconstrained instance dictionaries get IPE info

In the `StgRhsCon` case of `GHC.Stg.Debug.collectStgRhs`, we were not coming up
with an initial source span based on the span of the binder, which was causing
instance dictionaries without dynamic superclass constraints to not have source
locations in their IPE info. Now they do.

Resolves #24005

- - - - -
390443b7 by Andreas Klebinger at 2023-10-07T10:00:20-04:00
rts: Split up rts/include/stg/MachRegs.h by arch

- - - - -
3685942f by Bryan Richter at 2023-10-07T10:00:56-04:00
Actually set hackage index state

Or at least, use a version of the cabal command that *claims* to set the
index state.

Time will tell.

- - - - -
46a0e5be by Bryan Richter at 2023-10-07T10:00:56-04:00
Update hackage index state

- - - - -
d4b037de by Bryan Richter at 2023-10-07T10:00:56-04:00
Ensure hadrian uses CI's hackage index state

- - - - -
e206be64 by Andrew Lelechenko at 2023-10-08T15:06:14-04:00
Do not use O_NONBLOCK on regular files or block devices

CLC proposal https://github.com/haskell/core-libraries-committee/issues/166

- - - - -
a06197c4 by David Binder at 2023-10-08T15:06:55-04:00
Update hpc-bin submodule to 0.69

- - - - -
ed6785b6 by David Binder at 2023-10-08T15:06:55-04:00
Update Hadrian with correct path to happy file for hpc-bin

- - - - -
94066d58 by Alan Zimmerman at 2023-10-09T21:35:53-04:00
EPA: Introduce HasAnnotation class

The class is defined as

    class HasAnnotation e where
      noAnnSrcSpan :: SrcSpan -> e

This generalises noAnnSrcSpan, and allows

    noLocA :: (HasAnnotation e) => a -> GenLocated e a
    noLocA = L (noAnnSrcSpan noSrcSpan)

- - - - -
8792a1bc by Ben Gamari at 2023-10-09T21:36:29-04:00
Bump unix submodule to v2.8.3.0

- - - - -
e96c51cb by Andreas Klebinger at 2023-10-10T16:44:27+01:00
Add a flag -fkeep-auto-rules to optionally keep auto-generated rules around.

The motivation for the flag is given in #21917.

- - - - -
3ed58cef by Matthew Pickering at 2023-10-10T19:01:22-04:00
hadrian: Add ghcToolchain to tool args list

This allows you to load ghc-toolchain and ghc-toolchain-bin into HLS.

- - - - -
476c02d4 by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Normalise triple via config.sub

We were not normalising the target triple anymore like we did with the
old make build system.

Fixes #23856

- - - - -
303dd237 by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Add missing vendor normalisation

This is copied from m4/ghc_convert_vendor.m4

Towards #23868

- - - - -
838026c9 by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Add loongarch64 to parseArch

Towards #23868

- - - - -
1a5bc0b5 by Matthew Pickering at 2023-10-10T19:01:22-04:00
Add same LD hack to ghc-toolchain

In the ./configure script, if you pass the `LD` variable then this has
the effect of stopping use searching for a linker and hence passing
`-fuse-ld=...`.

We want to emulate this logic in ghc-toolchain, if a use explicilty
specifies `LD` variable then don't add `-fuse-ld=..` with the goal of
making ./configure and ghc-toolchain agree on which flags to use when
using the C compiler as a linker.

This is quite unsavoury as we don't bake the choice of LD into the
configuration anywhere but what's important for now is making
ghc-toolchain and ./configure agree as much as possible.

See #23857 for more discussion

- - - - -
42d50b5a by Ben Gamari at 2023-10-10T19:01:22-04:00
ghc-toolchain: Check for C99 support with -std=c99

Previously we failed to try enabling C99 support with `-std=c99`, as
`autoconf` attempts. This broke on older compilers (e.g. CentOS 7) which
don't enable C99 by default.

Fixes #23879.

- - - - -
da2961af by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Add endianess check using __BYTE_ORDER__ macro

In very old toolchains the BYTE_ORDER macro is not set but thankfully
the __BYTE_ORDER__ macro can be used instead.

- - - - -
d8da73cd by Matthew Pickering at 2023-10-10T19:01:22-04:00
configure: AC_PATH_TARGET_TOOL for LD

We want to make sure that LD is set to an absolute path in order to be
consistent with the `LD=$(command -v ld)` call. The AC_PATH_TARGET_TOOL
macro uses the absolute path rather than AC_CHECK_TARGET_TOOL which
might use a relative path.

- - - - -
171f93cc by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Check whether we need -std=gnu99 for CPP as well

In ./configure the C99 flag is passed to the C compiler when used as a C
preprocessor. So we also check the same thing in ghc-toolchain.

- - - - -
89a0918d by Matthew Pickering at 2023-10-10T19:01:22-04:00
Check for --target linker flag separately to C compiler

There are situations where the C compiler doesn't accept `--target` but
when used as a linker it does (but doesn't do anything most likely)

In particular with old gcc toolchains, the C compiler doesn't support
--target but when used as a linker it does.

- - - - -
37218329 by Matthew Pickering at 2023-10-10T19:01:22-04:00
Use Cc to compile test file in nopie check

We were attempting to use the C compiler, as a linker, to compile a file
in the nopie check, but that won't work in general as the flags we pass
to the linker might not be compatible with the ones we pass when using
the C compiler.

- - - - -
9b2dfd21 by Matthew Pickering at 2023-10-10T19:01:22-04:00
configure: Error when ghc-toolchain fails to compile

This is a small QOL change as if you are working on ghc-toolchain and it
fails to compile then configure will continue and can give you outdated
results.

- - - - -
1f0de49a by Matthew Pickering at 2023-10-10T19:01:22-04:00
configure: Check whether -no-pie works when the C compiler is used as a linker

`-no-pie` is a flag we pass when using the C compiler as a linker (see
pieCCLDOpts in GHC.Driver.Session) so we should test whether the C
compiler used as a linker supports the flag, rather than just the C
compiler.

- - - - -
62cd2579 by Matthew Pickering at 2023-10-10T19:01:22-04:00
ghc-toolchain: Remove javascript special case for --target detection

emcc when used as a linker seems to ignore the --target flag, and for
consistency with configure which now tests for --target, we remove this
special case.

- - - - -
0720fde7 by Ben Gamari at 2023-10-10T19:01:22-04:00
toolchain: Don't pass --target to emscripten toolchain

As noted in `Note [Don't pass --target to emscripten toolchain]`,
emscripten's `emcc` is rather inconsistent with respect to its treatment
of the `--target` flag. Avoid this by special-casing this toolchain
in the `configure` script and `ghc-toolchain`.

Fixes on aspect of #23744.

- - - - -
6354e1da by Matthew Pickering at 2023-10-10T19:01:22-04:00
hadrian: Don't pass `--gcc-options` as a --configure-arg to cabal configure

Stop passing -gcc-options which mixed together linker flags and
non-linker flags. There's no guarantee the C compiler will accept both
of these in each mode.

- - - - -
c00a4bd6 by Ben Gamari at 2023-10-10T19:01:22-04:00
configure: Probe stage0 link flags

For consistency with later stages and CC.

- - - - -
1f11e7c4 by Sebastian Graf at 2023-10-10T19:01:58-04:00
Stricter Binary.get in GHC.Types.Unit (#23964)

I noticed some thunking while looking at Core.
This change has very modest, but throughout positive ghc/alloc effect:

```
 hard_hole_fits(normal) ghc/alloc    283,057,664    281,620,872  -0.5%

              geo. mean                                          -0.1%
              minimum                                            -0.5%
              maximum                                            +0.0%
```

Fixes #23964.

- - - - -
a4f1a181 by Bryan Richter at 2023-10-10T19:02:37-04:00
rel_eng/upload.sh cleanups

- - - - -
80705335 by doyougnu at 2023-10-10T19:03:18-04:00
ci: add javascript label rule

This adds a rule which triggers the javascript job when the "javascript"
label is assigned to an MR.

- - - - -
a2c0fff6 by Matthew Craven at 2023-10-10T19:03:54-04:00
Make 'wWarningFlagsDeps' include every WarningFlag

Fixes #24071.

- - - - -
d055f099 by Jan Hrček at 2023-10-10T19:04:33-04:00
Fix pretty printing of overlap pragmas in TH splices (fixes #24074)

- - - - -
0746b868 by Andreas Klebinger at 2023-10-10T19:05:09-04:00
Aarch64 NCG: Use encoded immediates for literals.

Try to generate

    instr x2, <imm>

instead of

    mov x1, lit
    instr x2, x1

When possible. This get's rid if quite a few redundant
mov instructions.

I believe this causes a metric decrease for LargeRecords as
we reduce register pressure.

-------------------------
Metric Decrease:
    LargeRecord
-------------------------

- - - - -
739f4e6f by Andreas Klebinger at 2023-10-10T19:05:09-04:00
AArch NCG: Refactor getRegister'

Remove some special cases which can be handled just as well by the
generic case.

This increases code re-use while also fixing #23749. Since some of the
special case wasn't upholding Note [Signed arithmetic on AArch64].

- - - - -
1b213d33 by Andreas Klebinger at 2023-10-10T19:05:09-04:00
Aarch ncg: Optimize immediate use for address calculations

When the offset doesn't fit into the immediate we now just reuse the
general getRegister' code path which is well optimized to compute the
offset into a register instead of a special case for CmmRegOff.

This means we generate a lot less code under certain conditions which is
why performance metrics for these improve.

-------------------------
Metric Decrease:
    T4801
    T5321FD
    T5321Fun
-------------------------

- - - - -
b7df0732 by John Ericson at 2023-10-11T16:02:11-04:00
RTS configure: Move over mem management checks

These are for heap allocation, a strictly RTS concern.

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

The RTS configure one has a new
```
AC_CHECK_SIZEOF([void *])
```
that the top-level configure version didn't have, so that
`ac_cv_sizeof_void_p` is defined. Once more code is moved over in latter
commits, that can go away.

Progress towards #17191

- - - - -
41130a65 by John Ericson at 2023-10-11T16:02:11-04:00
RTS configure: Move over `__thread` check

This used by (@bgamari thinks) the `GCThread` abstraction in the RTS.

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

Progress towards #17191

- - - - -
cc5ec2bd by John Ericson at 2023-10-11T16:02:11-04:00
RTS configure: Move over misc function checks

These are for general use in the RTS.

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

Progress towards #17191

- - - - -
809e7c2d by John Ericson at 2023-10-11T16:02:11-04:00
RTS configure: Move over `eventfd` check

This check is for the RTS part of the event manager and has a
corresponding part in `base`.

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

Progress towards #17191

- - - - -
58f3babf by John Ericson at 2023-10-11T16:02:48-04:00
Split `FP_CHECK_PTHREADS` and move part to RTS configure

`NEED_PTHREAD_LIB` is unused since
3609340743c1b25fdfd0e18b1670dac54c8d8623 (part of the make build
system), and so is no longer defined.

Progress towards #17191

- - - - -
e99cf237 by Moritz Angermann at 2023-10-11T16:03:24-04:00
nativeGen: section flags for .text$foo only

Commit 3ece9856d157c85511d59f9f862ab351bbd9b38b, was supposed to fix
#22834 in !9810.

It does however add "xr" indiscriminatly to .text sections
even if splitSections is disabled. This leads to the assembler saying:

ghc_1.s:7849:0: error:
     Warning: Ignoring changed section attributes for .text
     |
7849 | .section .text,"xr"
     | ^

- - - - -
f383a242 by Sylvain Henry at 2023-10-11T16:04:04-04:00
Modularity: pass TempDir instead of DynFlags (#17957)

- - - - -
34fc28b0 by John Ericson at 2023-10-12T06:48:28-04:00
Test that functions from `mingwex` are available

Ryan wrote these two minimizations, but they never got added to the test
suite.

See #23309, #23378

Co-Authored-By: Ben Gamari <bgamari.foss at gmail.com>
Co-Authored-By: Ryan Scott <ryan.gl.scott at gmail.com>

- - - - -
bdb54a0e by John Ericson at 2023-10-12T06:48:28-04:00
Do not check for the `mingwex` library in `/configure`

See the recent discussion in !10360 --- Cabal will itself check for the
library for the packages that need it, and while the autoconf check
additionally does some other things like define a `HAS_LIBMINGWEX` C
Preprocessor macro, those other things are also unused and unneeded.

Progress towards #17191, which aims to get rid of `/configure` entirely.

- - - - -
43e814e1 by Ben Gamari at 2023-10-12T06:49:40-04:00
base: Introduce move modules into src

The only non-move changes here are whitespace changes to pass the
`whitespace` test and a few testsuite adaptations.

- - - - -
df81536f by Moritz Angermann at 2023-10-12T06:50:16-04:00
[PEi386 linker] Bounds check and null-deref guard

We should resonably be able to expect that we won't exceed the number of
sections if we assume to be dealing with legal object files. We can however
not guarantee that we get some negative values, and while we try to
special case most, we should exclude negative indexing into the sections
array.

We also need to ensure that we do not try to derefences targetSection,
if it is NULL, due to the switch statement.

- - - - -
c74c4f00 by John Ericson at 2023-10-12T10:31:13-04:00
Move apple compat check to RTS configure

- - - - -
c80778ea by John Ericson at 2023-10-12T10:31:13-04:00
Move clock/timer fun checks to RTS configure

Actual library check (which will set the Cabal flag) is left in the
top-level configure for now.

Progress towards #17191

- - - - -
7f9f2686 by John Ericson at 2023-10-12T10:31:13-04:00
Move visibility and "musttail" annotation checks to the RTS configure

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

Progress towards #17191

- - - - -
ffb3efe6 by John Ericson at 2023-10-12T10:31:13-04:00
Move leading underscore checks to RTS configure

`CabalLeadingUnderscore` is done via Hadrian already, so we can stop
`AC_SUBST`ing it completely.

- - - - -
25fa4b02 by John Ericson at 2023-10-12T10:31:13-04:00
Move alloca, fork, const, and big endian checks to RTS configure

All of this should boil down to `AC_DEFINE` not `AC_SUBST`, so it
belongs in the RTS configure and should be safe to move without
modification.

- - - - -
5170f42a by John Ericson at 2023-10-12T10:31:13-04:00
Move libdl check to RTS configure

- - - - -
ea7a1447 by John Ericson at 2023-10-12T10:31:13-04:00
Adjust `FP_FIND_LIBFFI`

Just set vars, and `AC_SUBST` in top-level configure.

Don't define `HAVE_SYSTEM_LIBFFI` because nothing is using it. It hasn't
be in used since 3609340743c1b25fdfd0e18b1670dac54c8d8623 (part of the
make build system).

- - - - -
f399812c by John Ericson at 2023-10-12T10:31:13-04:00
Split BFD support to RTS configure

The flag is still in the top-level configure, but the other checks
(which define various macros --- important) are in the RTS configure.

- - - - -
f64f44e9 by John Ericson at 2023-10-12T10:31:13-04:00
Split libm check between top level and RTS

- - - - -
dafc4709 by Moritz Angermann at 2023-10-12T10:31:49-04:00
CgUtils.fixStgRegStmt respect register width

This change ensure that the reg + offset computation is always of the
same size.  Before this we could end up with a 64bit register, and then
add a 32bit offset (on 32bit platforms).  This not only would fail type
sanity checking, but also incorrectly truncate 64bit values into 32bit
values silently on 32bit architectures.

- - - - -
9e6ef7ba by Matthew Pickering at 2023-10-12T20:35:00-04:00
hadrian: Decrease verbosity of cabal commands

In Normal, most tools do not produce output to stdout unless there are
error conditions.

Reverts 7ed65f5a1bc8e040e318ccff395f53a9bbfd8217

- - - - -
08fc27af by John Ericson at 2023-10-12T20:35:36-04:00
Do not substitute `@...@` for stage-specific values in cabal files

`rts` and `ghc-prim` now no longer have a `*.cabal.in` to set Cabal flag
defaults; instead manual choices are passed to configure in the usual
way.

The old way was fundamentally broken, because it meant we were baking
these Cabal files for a specific stage. Now we only do stage-agnostic
@...@ substitution in cabal files (the GHC version), and so all
stage-specific configuration is properly confined to `_build` and the
right stage dir.

Also `include-ghc-prim` is a flag that no longer exists for `ghc-prim`
(it was removed in 835d8ddbbfb11796ea8a03d1806b7cee38ba17a6) so I got
rid of it.

Co-Authored-By: Matthew Pickering <matthewtpickering at gmail.com>

- - - - -
a0ac8785 by Sebastian Graf at 2023-10-14T19:17:12-04:00
Fix restarts in .ghcid

Using the whole of `hadrian/` restarted in a loop for me.

- - - - -
fea9ecdb by Sebastian Graf at 2023-10-14T19:17:12-04:00
CorePrep: Refactor FloatingBind (#23442)

A drastically improved architecture for local floating in CorePrep
that decouples the decision of whether a float is going to be let- or case-bound
from how far it can float (out of strict contexts, out of lazy contexts, to
top-level).

There are a couple of new Notes describing the effort:

  * `Note [Floating in CorePrep]` for the overview
  * `Note [BindInfo and FloatInfo]` for the new classification of floats
  * `Note [Floats and FloatDecision]` for how FloatInfo is used to inform
    floating decisions

This is necessary ground work for proper treatment of Strict fields and
unlifted values at top-level.

Fixes #23442.

NoFib results (omitted = 0.0%):
```
--------------------------------------------------------------------------------
        Program         Allocs    Instrs
--------------------------------------------------------------------------------
         pretty           0.0%     -1.6%
            scc           0.0%     -1.7%
--------------------------------------------------------------------------------
            Min           0.0%     -1.7%
            Max           0.0%     -0.0%
 Geometric Mean          -0.0%     -0.0%
```

- - - - -
32523713 by Matthew Pickering at 2023-10-14T19:17:49-04:00
hadrian: Move ghcBinDeps into ghcLibDeps

This completes a5227080b57cb51ac34d4c9de1accdf6360b818b, the
`ghc-usage.txt` and `ghci-usage.txt` file are also used by the `ghc`
library so need to make sure they are present in the libdir even if we
are not going to build `ghc-bin`.

This also fixes things for cross compilers because the stage2
cross-compiler requires the ghc-usage.txt file, but we are using
the stage2 lib folder but not building stage3:exe:ghc-bin so
ghc-usage.txt was not being generated.

- - - - -
ec3c4488 by sheaf at 2023-10-14T19:18:29-04:00
Combine GREs when combining in mkImportOccEnv

In `GHC.Rename.Names.mkImportOccEnv`, we sometimes discard one import
item in favour of another, as explained in Note [Dealing with imports]
in `GHC.Rename.Names`. However, this can cause us to lose track of
important parent information.

Consider for example #24084:

  module M1 where { class C a where { type T a } }
  module M2 ( module M1 ) where { import M1 }
  module M3 where { import M2 ( C, T ); instance C () where T () = () }

When processing the import list of `M3`, we start off (for reasons that
are not relevant right now) with two `Avail`s attached to `T`, namely
`C(C, T)` and `T(T)`. We combine them in the `combine` function of
`mkImportOccEnv`; as described in Note [Dealing with imports] we discard
`C(C, T)` in favour of `T(T)`. However, in doing so, we **must not**
discard the information want that `C` is the parent of `T`. Indeed,
losing track of this information can cause errors when importing,
as we could get an error of the form

  ‘T’ is not a (visible) associated type of class ‘C’

We fix this by combining the two GREs for `T` using `plusGRE`.

Fixes #24084

- - - - -
257c2807 by Ilias Tsitsimpis at 2023-10-14T19:19:07-04:00
hadrian: Pass -DNOSMP to C compiler when needed

Hadrian passes the -DNOSMP flag to GHC when the target doesn't support
SMP, but doesn't pass it to CC as well, leading to the following
compilation error on mips64el:

| Run Cc (FindCDependencies CDep) Stage1: rts/sm/NonMovingScav.c => _build/stage1/rts/build/c/sm/NonMovingScav.o.d
Command line: /usr/bin/mips64el-linux-gnuabi64-gcc -E -MM -MG -MF _build/stage1/rts/build/c/hooks/FlagDefaults.thr_debug_p_o.d -MT _build/stage1/rts/build/c/hooks/FlagDefaults.o -Irts/include -I_build/stage1/rts/build -I_build/stage1/rts/build/include -Irts/include -x c rts/hooks/FlagDefaults.c -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Winline -Wpointer-arith -Wmissing-noreturn -Wnested-externs -Wredundant-decls -Wundef -fno-strict-aliasing -DTHREADED_RTS -DDEBUG -fomit-frame-pointer -O2 -g -Irts -I_build/stage1/rts/build -DDEBUG -fno-omit-frame-pointer -g3 -O0
===> Command failed with error code: 1
In file included from rts/include/Stg.h:348,
                 from rts/include/Rts.h:38,
                 from rts/hooks/FlagDefaults.c:8:
rts/include/stg/SMP.h:416:2: error: #error memory barriers unimplemented on this architecture
  416 | #error memory barriers unimplemented on this architecture
      |  ^~~~~
rts/include/stg/SMP.h:440:2: error: #error memory barriers unimplemented on this architecture
  440 | #error memory barriers unimplemented on this architecture
      |  ^~~~~
rts/include/stg/SMP.h:464:2: error: #error memory barriers unimplemented on this architecture
  464 | #error memory barriers unimplemented on this architecture
      |  ^~~~~

The old make system correctly passed this flag to both GHC and CC [1].

Fix this error by passing -DNOSMP to CC as well.

[1] https://gitlab.haskell.org/ghc/ghc/-/blob/00920f176b0235d5bb52a8e054d89a664f8938fe/rts/ghc.mk#L407

Closes #24082

- - - - -
13d3c613 by John Ericson at 2023-10-14T19:19:42-04:00
Users Guide: Drop dead code for Haddock refs to `parallel`

I noticed while working on !11451 that `@LIBRARY_parallel_UNIT_ID@` was
not substituted. It is dead code -- there is no `parallel-ref` usages
and it doesn't look like there ever was (going back to
3e5d0f188d6c8633e55e9ba6c8941c07e459fa4b), so let's delete it.

- - - - -
fe067577 by Sylvain Henry at 2023-10-18T19:40:25-04:00
Avoid out-of-bound array access in bigNatIsPowerOf2 (fix #24066)

bigNatIndex# in the `where` clause wasn't guarded by "bigNatIsZero a".

- - - - -
cc1625b1 by Sylvain Henry at 2023-10-18T19:40:25-04:00
Bignum: fix right shift of negative BigNat with native backend

- - - - -
cbe4400d by Sylvain Henry at 2023-10-18T19:40:25-04:00
Rts: expose rtsOutOfBoundsAccess symbol

- - - - -
72c7380c by Sylvain Henry at 2023-10-18T19:40:25-04:00
Hadrian: enable `-fcheck-prim-bounds` in validate flavour

This allows T24066 to fail when the bug is present.

Otherwise the out-of-bound access isn't detected as it happens in
ghc-bignum which wasn't compiled with the bounds check.

- - - - -
f9436990 by John Ericson at 2023-10-18T19:41:01-04:00
Make Hadrian solely responsible for substituting `docs/users_guide/ghc_config.py.in`

Fixes #24091
Progress on #23966

Issue #24091 reports that `@ProjectVersion@` is no longer being
substituted in the GHC user's guide. I assume this is a recent issue,
but I am not sure how it's worked since
c1a3ecde720b3bddc2c8616daaa06ee324e602ab; it looks like both Hadrian and
configure are trying to substitute the same `.in` file!

Now only Hadrian does. That is better anyways; already something that
issue #23966 requested.

It seems like we were missing some dependencies in Hadrian. (I really,
really hate that this is possible!) Hopefully it is fixed now.

- - - - -
b12df0bb by John Ericson at 2023-10-18T19:41:37-04:00
`ghcversion.h`: No need to cope with undefined `ProjectPatchLevel*`

Since 4e6c80197f1cc46dfdef0300de46847c7cfbdcb0, these are guaranteed to
be defined. (Guaranteed including a test in the testsuite.)

- - - - -
0295375a by John Ericson at 2023-10-18T19:41:37-04:00
Generate `ghcversion.h` from a `.in` file

Now that there are no conditional sections (see the previous commit), we
can just a do simple substitution rather than pasting it together line
by line.

Progress on #23966

- - - - -
740a1b85 by Krzysztof Gogolewski at 2023-10-19T11:37:20-04:00
Add a regression test for #24064

- - - - -
921fbf2f by Hécate Moonlight at 2023-10-19T11:37:59-04:00
CLC Proposal #182: Export List from Data.List

Proposal link: https://github.com/haskell/core-libraries-committee/issues/182

- - - - -
4f02d3c1 by Sylvain Henry at 2023-10-20T04:01:32-04:00
rts: fix small argument passing on big-endian arch (fix #23387)

- - - - -
b86243b4 by Sylvain Henry at 2023-10-20T04:02:13-04:00
Interpreter: fix literal alignment on big-endian architectures (fix #19261)

Literals weren't correctly aligned on big-endian, despite what the
comment said.

- - - - -
a4b2ec47 by Sylvain Henry at 2023-10-20T04:02:54-04:00
Testsuite: recomp011 and recomp015 are fixed on powerpc

These tests have been fixed but not tested and re-enabled on big-endian
powerpc (see comments in #11260 and #11323)

- - - - -
fded7dd4 by Sebastian Graf at 2023-10-20T04:03:30-04:00
CorePrep: Allow floating dictionary applications in -O0 into a Rec (#24102)
- - - - -
02efc181 by John Ericson at 2023-10-22T02:48:55-04:00
Move function checks to RTS configure

Some of these functions are used in `base` too, but we can copy the
checks over to its configure if that's an issue.

- - - - -
5f4bccab by John Ericson at 2023-10-22T02:48:55-04:00
Move over a number of C-style checks to RTS configure

- - - - -
5cf04f58 by John Ericson at 2023-10-22T02:48:55-04:00
Move/Copy more `AC_DEFINE` to RTS config

Only exception is the LLVM version macros, which are used for GHC
itself.

- - - - -
b8ce5dfe by John Ericson at 2023-10-22T02:48:55-04:00
Define `TABLES_NEXT_TO_CODE` in the RTS configure

We create a new cabal flag to facilitate this.

- - - - -
4a40271e by John Ericson at 2023-10-22T02:48:55-04:00
Configure scripts: `checkOS`: Make a bit more robust

`mingw64` and `mingw32` are now both accepted for `OSMinGW32`. This
allows us to cope with configs/triples that we haven't normalized extra
being what GNU `config.sub` does.

- - - - -
16bec0a0 by John Ericson at 2023-10-22T02:48:55-04:00
Generate `ghcplatform.h` from RTS configure

We create a new cabal flag to facilitate this.

- - - - -
7dfcab2f by John Ericson at 2023-10-22T02:48:55-04:00
Get rid of all mention of `mk/config.h`

The RTS configure script is now solely responsible for managing its
headers; the top level configure script does not help.

- - - - -
c1e3719c by Cheng Shao at 2023-10-22T02:49:33-04:00
rts: drop stale mentions of MIN_UPD_SIZE

We used to have MIN_UPD_SIZE macro that describes the minimum reserved
size for thunks, so that the thunk can be overwritten in place as
indirections or blackholes. However, this macro has not been actually
defined or used anywhere since a long time ago; StgThunkHeader already
reserves a padding word for this purpose. Hence this patch which drops
stale mentions of MIN_UPD_SIZE.

- - - - -
d24b0d85 by Andrew Lelechenko at 2023-10-22T02:50:11-04:00
base changelog: move non-backported entries from 4.19 section to 4.20

Neither !10933 (check https://hackage.haskell.org/package/base-4.19.0.0/docs/src/Text.Read.Lex.html#numberToRangedRational)
nor !10189 (check https://hackage.haskell.org/package/base-4.19.0.0/docs/src/Data.List.NonEmpty.html#unzip)
were backported to `base-4.19.0.0`. Moving them to `base-4.20.0.0` section.

Also minor stylistic changes to other entries, bringing them to a uniform form.

- - - - -
de78b32a by Alan Zimmerman at 2023-10-23T09:09:41-04:00
EPA Some tweaks to annotations

- Fix span for GRHS
- Move TrailingAnns from last match to FunBind
- Fix GADT 'where' clause span
- Capture full range for a CaseAlt Match

- - - - -
d5a8780d by Simon Hengel at 2023-10-23T09:10:23-04:00
Update primitives.rst
- - - - -
4d075924 by Josh Meredith at 2023-10-24T23:04:12+11:00
JS/userguide: add explanation of writing jsbits

- - - - -
07ab5cc1 by Cheng Shao at 2023-10-24T15:40:32-04:00
testsuite: increase timeout of ghc-api tests for wasm32

ghc-api tests for wasm32 are more likely to timeout due to the large
wasm module sizes, especially when testing with wasm native tail
calls, given wasmtime's handling of tail call opcodes are suboptimal
at the moment. It makes sense to increase timeout specifically for
these tests on wasm32. This doesn't affect other targets, and for
wasm32 we don't increase timeout for all tests, so not to risk letting
major performance regressions slip through the testsuite.

- - - - -
0d6acca5 by Greg Steuck at 2023-10-26T08:44:23-04:00
Explicitly require RLIMIT_AS before use in OSMem.c

This is done elsewhere in the source tree. It also suddenly is
required on OpenBSD.

- - - - -
9408b086 by Sylvain Henry at 2023-10-26T08:45:03-04:00
Modularity: modularize external linker

Decouple runLink from DynFlags to allow calling runLink more easily.
This is preliminary work for calling Emscripten's linker (emcc) from
our JavaScript linker.

- - - - -
e0f35030 by doyougnu at 2023-10-27T08:41:12-04:00
js: add JStg IR, remove unsaturated constructor

- Major step towards #22736 and adding the optimizer in #22261

- - - - -
35587eba by Simon Peyton Jones at 2023-10-27T08:41:48-04:00
Fix a bug in tail calls with ticks

See #24078 for the diagnosis.  The change affects only
the Tick case of occurrence analysis.

It's a bit hard to test, so no regression test (yet anyway).

- - - - -
9bc5cb92 by Matthew Craven at 2023-10-28T07:06:17-04:00
Teach tag-inference about SeqOp/seq#

Fixes the STG/tag-inference analogue of #15226.

Co-Authored-By: Simon Peyton Jones <simon.peytonjones at gmail.com>

- - - - -
34f06334 by Moritz Angermann at 2023-10-28T07:06:53-04:00
[PEi386] Mask SYM_TYPE_DUP_DISCARD in makeSymbolExtra

48e391952c17ff7eab10b0b1456e3f2a2af28a9b
introduced `SYM_TYPE_DUP_DISCARD` to the bitfield.

The linker however, failed to mask the `SYM_TYPE_DUP_DISCARD` value.
Thus `== SYM_TYPE_CODE` comparisons easily failed. This lead to us
relocating DATA lookups (GOT) into E8 (call) and E9 (jump) instructions.

- - - - -
5b51b2a2 by Mario Blažević at 2023-10-28T07:07:33-04:00
Fix and test for issue #24111, TH.Ppr output of pattern synonyms

- - - - -
723bc352 by Alan Zimmerman at 2023-10-30T20:36:41-04:00
EPA: print doc comments as normal comments

And ignore the ones allocated in haddock processing.

It does not guarantee that every original haddock-like comment appears
in the output, as it discards ones that have no legal attachment point.

closes #23459

- - - - -
21b76843 by Simon Peyton Jones at 2023-10-30T20:37:17-04:00
Fix non-termination bug in equality solver

constraint left-to-right then right to left, forever.

Easily fixed.

- - - - -
270867ac by Sebastian Graf at 2023-10-30T20:37:52-04:00
ghc-toolchain: build with `-package-env=-` (#24131)

Otherwise globally installed libraries (via `cabal install --lib`)
break the build.

Fixes #24131.

- - - - -
4d08364e by Alan Zimmerman at 2023-10-31T19:46:45+00:00
EPA: match changes in GHC

- EPA: Comments in AnchorOperation
- EPA: Remove EpaEofComment

- - - - -
7a90020f by Krzysztof Gogolewski at 2023-10-31T20:03:37-04:00
docs: fix ScopedTypeVariables example (#24101)

The previous example didn't compile.

Furthermore, it wasn't demonstrating the point properly.
I have changed it to an example which shows that 'a' in the signature
must be the same 'a' as in the instance head.

- - - - -
49f69f50 by Krzysztof Gogolewski at 2023-10-31T20:04:13-04:00
Fix pretty-printing of type family dependencies

"where" should be after the injectivity annotation.

- - - - -
73c191c0 by Ben Gamari at 2023-10-31T20:04:49-04:00
gitlab-ci: Bump LLVM bootstrap jobs to Debian 12

As the Debian 10 images have too old an LLVM.

Addresses #24056.

- - - - -
5b0392e0 by Matthew Pickering at 2023-10-31T20:04:49-04:00
ci: Run aarch64 llvm backend job with "LLVM backend" label

This brings it into line with the x86 LLVM backend job.

- - - - -
9f9c9227 by Ryan Scott at 2023-11-01T09:19:12-04:00
More robust checking for DataKinds

As observed in #22141, GHC was not doing its due diligence in catching code
that should require `DataKinds` in order to use. Most notably, it was allowing
the use of arbitrary data types in kind contexts without `DataKinds`, e.g.,

```hs
data Vector :: Nat -> Type -> Type where
```

This patch revamps how GHC tracks `DataKinds`. The full specification is
written out in the `DataKinds` section of the GHC User's Guide, and the
implementation thereof is described in `Note [Checking for DataKinds]` in
`GHC.Tc.Validity`. In brief:

* We catch _type_-level `DataKinds` violations in the renamer. See
  `checkDataKinds` in `GHC.Rename.HsType` and `check_data_kinds` in
  `GHC.Rename.Pat`.

* We catch _kind_-level `DataKinds` violations in the typechecker, as this
  allows us to catch things that appear beneath type synonyms. (We do *not*
  want to do this in type-level contexts, as it is perfectly fine for a type
  synonym to mention something that requires DataKinds while still using the
  type synonym in a module that doesn't enable DataKinds.) See `checkValidType`
  in `GHC.Tc.Validity`.

* There is now a single `TcRnDataKindsError` that classifies all manner of
  `DataKinds` violations, both in the renamer and the typechecker. The
  `NoDataKindsDC` error has been removed, as it has been subsumed by
  `TcRnDataKindsError`.

* I have added `CONSTRAINT` is `isKindTyCon`, which is what checks for illicit
  uses of data types at the kind level without `DataKinds`. Previously,
  `isKindTyCon` checked for `Constraint` but not `CONSTRAINT`. This is
  inconsistent, given that both `Type` and `TYPE` were checked by `isKindTyCon`.
  Moreover, it thwarted the implementation of the `DataKinds` check in
  `checkValidType`, since we would expand `Constraint` (which was OK without
  `DataKinds`) to `CONSTRAINT` (which was _not_ OK without `DataKinds`) and
  reject it. Now both are allowed.

* I have added a flurry of additional test cases that test various corners of
  `DataKinds` checking.

Fixes #22141.

- - - - -
575d7690 by Sylvain Henry at 2023-11-01T09:19:53-04:00
JS: fix FFI "wrapper" and "dynamic"

Fix codegen and helper functions for "wrapper" and "dynamic" foreign
imports.

Fix tests:
- ffi006
- ffi011
- T2469
- T4038

Related to #22363

- - - - -
81fb8885 by Alan Zimmerman at 2023-11-01T22:23:56-04:00
EPA: Use full range for Anchor

This change requires a series of related changes, which must all land
at the same time, otherwise all the EPA tests break.

* Use the current Anchor end as prior end

  Use the original anchor location end as the source of truth for
  calculating print deltas.

  This allows original spacing to apply in most cases, only changed
  AST items need initial delta positions.

* Add DArrow to TrailingAnn

* EPA Introduce HasTrailing in ExactPrint

   Use [TrailingAnn] in enterAnn and remove it from
   ExactPrint (LocatedN RdrName)

* In HsDo, put TrailingAnns at top of LastStmt

* EPA: do not convert comments to deltas when balancing.

* EPA: deal with fallout from getMonoBind

* EPA fix captureLineSpacing

* EPA print any comments in the span before exiting it

* EPA: Add comments to AnchorOperation

* EPA: remove AnnEofComment, it is no longer used

Updates Haddock submodule

- - - - -
03e82511 by Rodrigo Mesquita at 2023-11-01T22:24:32-04:00
Fix in docs regarding SSymbol, SNat, SChar (#24119)

- - - - -
362cc693 by Matthew Pickering at 2023-11-01T22:25:08-04:00
hadrian: Update bootstrap plans (9.4.6, 9.4.7, 9.6.2, 9.6.3, 9.8.1)

Updating the bootstrap plans with more recent GHC versions.

- - - - -
00b9b8d3 by Matthew Pickering at 2023-11-01T22:25:08-04:00
ci: Add 9.8.1 bootstrap testing job

- - - - -
ef3d20f8 by Matthew Pickering at 2023-11-01T22:25:08-04:00
Compatibility with 9.8.1 as boot compiler

This fixes several compatability issues when using 9.8.1 as the boot
compiler.

* An incorrect version guard on the stack decoding logic in ghc-heap
* Some ghc-prim bounds need relaxing
* ghc is no longer wired in, so we have to remove the -this-unit-id ghc
  call.

Fixes #24077

- - - - -
6755d833 by Jaro Reinders at 2023-11-03T10:54:42+01:00
Add NCG support for common 64bit operations to the x86 backend.

These used to be implemented via C calls which was obviously quite bad
for performance for operations like simple addition.

Co-authored-by: Andreas Klebinger

- - - - -
0dfb1fa7 by Vladislav Zavialov at 2023-11-03T14:08:41-04:00
T2T in Expressions (#23738)

This patch implements the T2T (term-to-type) transformation in
expressions. Given a function with a required type argument
	vfun :: forall a -> ...

the user can now call it as
	vfun (Maybe Int)

instead of
	vfun (type (Maybe Int))

The Maybe Int argument is parsed and renamed as a term (HsExpr), but then
undergoes a conversion to a type (HsType).
See the new function expr_to_type in compiler/GHC/Tc/Gen/App.hs
and Note [RequiredTypeArguments and the T2T mapping]

Left as future work: checking for puns.

- - - - -
cc1c7c54 by Duncan Coutts at 2023-11-05T00:23:44-04:00
Add a test for I/O managers

It tries to cover the cases of multiple threads waiting on the same
fd for reading and multiple threads waiting for writing, including
wait cancellation by async exceptions.

It should work for any I/O manager, in-RTS or in-Haskell.
Unfortunately it will not currently work for Windows because it relies
on anonymous unix sockets. It could in principle be ported to use
Windows named pipes.

- - - - -
2e448f98 by Cheng Shao at 2023-11-05T00:23:44-04:00
Skip the IOManager test on wasm32 arch.

The test relies on the sockets API which are not (yet) available.
- - - - -
fe50eb35 by Cheng Shao at 2023-11-05T00:24:20-04:00
compiler: fix eager blackhole symbol in wasm32 NCG

- - - - -
af771148 by Cheng Shao at 2023-11-05T00:24:20-04:00
testsuite: fix optasm tests for wasm32

- - - - -
1b90735c by Matthew Pickering at 2023-11-05T00:24:20-04:00
testsuite: Add wasm32 to testsuite arches with NCG

The compiler --info reports that wasm32 compilers have a NCG, so we
should agree with that here.

- - - - -
db9a6496 by Alan Zimmerman at 2023-11-05T00:24:55-04:00
EPA: make locA a function, not a field name

And use it to generalise reLoc

The following for the windows pipeline one. 5.5%

Metric Increase:
    T5205

- - - - -
833e250c by Simon Peyton Jones at 2023-11-05T00:25:31-04:00
Update the unification count in wrapUnifierX

Omitting this caused type inference to fail in #24146.
This was an accidental omision in my refactoring of the
equality solver.

- - - - -
e451139f by Andreas Klebinger at 2023-11-05T00:26:07-04:00
Remove an accidental git conflict marker from a comment.

- - - - -
e7da0d25 by Alan Zimmerman at 2023-11-05T11:20:31+00:00
EPA: match changes in GHC, l2l cleanup

- - - - -
30baac7a by Tobias Haslop at 2023-11-06T10:50:32+00:00
Add laws relating between Foldable/Traversable with their Bi- superclasses

See https://github.com/haskell/core-libraries-committee/issues/205 for
discussion.

This commit also documents that the tuple instances only satisfy the
laws up to lazyness, similar to the documentation added in !9512.

- - - - -
df626f00 by Tobias Haslop at 2023-11-07T02:20:37-05:00
Elaborate on the quantified superclass of Bifunctor

This was requested in the comment
https://github.com/haskell/core-libraries-committee/issues/93#issuecomment-1597271700
for when Traversable becomes a superclass of Bitraversable, but similarly
applies to Functor/Bifunctor, which already are in a superclass relationship.

- - - - -
8217acb8 by Alan Zimmerman at 2023-11-07T02:21:12-05:00
EPA: get rid of l2l and friends

Replace them with

  l2l to convert the location
  la2la to convert a GenLocated thing

Updates haddock submodule

- - - - -
dd88a260 by Luite Stegeman at 2023-11-07T02:21:53-05:00
JS: remove broken newIdents from JStg Monad

GHC.JS.JStg.Monad.newIdents was broken, resulting in duplicate
identifiers being generated in h$c1, h$c2, ... .

This change removes the broken newIdents.

- - - - -
455524a2 by Matthew Craven at 2023-11-09T08:41:59-05:00
Create specially-solved DataToTag class

Closes #20532. This implements CLC proposal 104:
  https://github.com/haskell/core-libraries-committee/issues/104

The design is explained in Note [DataToTag overview]
in GHC.Tc.Instance.Class. This replaces the existing
`dataToTag#` primop.

These metric changes are not "real"; they represent Unique-related
flukes triggering on a different set of jobs than they did previously.
See also #19414.

Metric Decrease:
    T13386
    T8095
Metric Increase:
    T13386
    T8095

Co-authored-by: Simon Peyton Jones <simon.peytonjones at gmail.com>

- - - - -
a05f4554 by Alan Zimmerman at 2023-11-09T08:42:35-05:00
EPA: get rid of glRR and friends in GHC/Parser.y

With the HasLoc and HasAnnotation classes, we can replace a
number of type-specific helper functions in the parser with
polymorphic ones instead

Metric Decrease:
    MultiLayerModulesTH_Make

- - - - -
18498538 by Cheng Shao at 2023-11-09T16:58:12+00:00
ci: bump ci-images for wasi-sdk upgrade

- - - - -
52c0fc69 by PHO at 2023-11-09T19:16:22-05:00
Don't assume the current locale is *.UTF-8, set the encoding explicitly

primops.txt contains Unicode characters:
> LC_ALL=C ./genprimopcode --data-decl < ./primops.txt
> genprimopcode: <stdin>: hGetContents: invalid argument (cannot decode byte sequence starting from 226)

Hadrian must also avoid using readFile' to read primops.txt because it
tries to decode the file with a locale-specific encoding.

- - - - -
7233b3b1 by PHO at 2023-11-09T19:17:01-05:00
Use '[' instead of '[[' because the latter is a Bash-ism

It doesn't work on platforms where /bin/sh is something other than Bash.

- - - - -
6dbab180 by Simon Peyton Jones at 2023-11-09T19:17:36-05:00
Add an extra check in kcCheckDeclHeader_sig

Fix #24083 by checking for a implicitly-scoped type variable that is not
actually bound.  See Note [Disconnected type variables] in GHC.Tc.Gen.HsType

For some reason, on aarch64-darwin we saw a 2.8% decrease in compiler
allocations for MultiLayerModulesTH_Make; but 0.0% on other architectures.

Metric Decrease:
    MultiLayerModulesTH_Make

- - - - -
22551364 by Sven Tennie at 2023-11-11T06:35:22-05:00
AArch64: Delete unused LDATA pseudo-instruction

Though there were consuming functions for LDATA, there were no
producers. Thus, the removed code was "dead".

- - - - -
2a0ec8eb by Alan Zimmerman at 2023-11-11T06:35:59-05:00
EPA: harmonise acsa and acsA in GHC/Parser.y

With the HasLoc class, we can remove the acsa helper function,
using acsA instead.

- - - - -
4ceac14d by Alan Zimmerman at 2023-11-11T15:16:41+00:00
EPA: Replace Anchor with EpaLocation

Match GHC

- - - - -
7ae517a0 by Teo Camarasu at 2023-11-12T08:04:12-05:00
nofib: bump submodule

This includes changes that:
- fix building a benchmark with HEAD
- remove a Makefile-ism that causes errors in bash scripts

Resolves #24178

- - - - -
3f0036ec by Alan Zimmerman at 2023-11-12T08:04:47-05:00
EPA: Replace Anchor with EpaLocation

An Anchor has a location and an operation, which is either that it is
unchanged or that it has moved with a DeltaPos

    data Anchor = Anchor { anchor :: RealSrcSpan
                         , anchor_op :: AnchorOperation }

An EpaLocation also has either a location or a DeltaPos

    data EpaLocation = EpaSpan !RealSrcSpan !(Strict.Maybe BufSpan)
                     | EpaDelta !DeltaPos ![LEpaComment]

Now that we do not care about always having a location in the anchor,
we remove Anchor and replace it with EpaLocation

We do this with a type alias initially, to ease the transition.
The alias will be removed in time.

We also have helpers to reconstruct the AnchorOperation from an
EpaLocation. This is also temporary.

Updates Haddock submodule

- - - - -
a7492048 by Alan Zimmerman at 2023-11-12T13:43:07+00:00
EPA: get rid of AnchorOperation

Now that the Anchor type is an alias for EpaLocation, remove
AnchorOperation.

Updates haddock submodule

- - - - -
0745c34d by Andrew Lelechenko at 2023-11-13T16:25:07-05:00
Add since annotation for showHFloat

- - - - -
e98051a5 by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
Suppress duplicate librares linker warning of new macOS linker

Fixes #24167

XCode 15 introduced a new linker which warns on duplicate libraries being
linked. To disable this warning, we pass -Wl,-no_warn_duplicate_libraries as
suggested by Brad King in CMake issue #25297.

This flag isn't necessarily available to other linkers on darwin, so we must
only configure it into the CC linker arguments if valid.

- - - - -
c411c431 by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
testsuite: Encoding test witnesses recent iconv bug is fragile

A regression in the new iconv() distributed with XCode 15 and MacOS
Sonoma causes the test 'encoding004' to fail in the CP936 roundrip.

We mark this test as fragile until this is fixed upstream (rather than
broken, since previous versions of iconv pass the test)

See #24161

- - - - -
ce7fe5a9 by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
testsuite: Update to LC_ALL=C no longer being ignored in darwin

MacOS seems to have fixed an issue where it used to ignore the variable
`LC_ALL` in program invocations and default to using Unicode.

Since the behaviour seems to be fixed to account for the locale
variable, we mark tests that were previously broken in spite of it as
fragile (since they now pass in recent macOS distributions)

See #24161

- - - - -
e6c803f7 by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
darwin: Fix single_module is obsolete warning

In XCode 15's linker, -single_module is the default and otherwise
passing it as a flag results in a warning being raised:

    ld: warning: -single_module is obsolete

This patch fixes this warning by, at configure time, determining whether
the linker supports -single_module (which is likely false for all
non-darwin linkers, and true for darwin linkers in previous versions of
macOS), and using that information at runtime to decide to pass or not
the flag in the invocation.

Fixes #24168

- - - - -
929ba2f9 by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
testsuite: Skip MultiLayerModulesTH_Make on darwin

The recent toolchain upgrade on darwin machines resulted in the
MultiLayerModulesTH_Make test metrics varying too much from the
baseline, ultimately blocking the CI pipelines.

This commit skips the test on darwin to temporarily avoid failures due
to the environment change in the runners. However, the metrics
divergence is being investigated still (tracked in #24177)

- - - - -
af261ccd by Rodrigo Mesquita at 2023-11-15T13:18:58-05:00
configure: check target (not build) understands -no_compact_unwind

Previously, we were branching on whether the build system was darwin to
shortcut this check, but we really want to branch on whether the target
system (which is what we are configuring ld_prog for) is darwin.

- - - - -
2125c176 by Luite Stegeman at 2023-11-15T13:19:38-05:00
JS: Fix missing variable declarations

The JStg IR update was missing some local variable declarations
that were present earlier, causing global variables to be used
implicitly (or an error in JavaScript strict mode).

This adds the local variable declarations again.

- - - - -
99ced73b by Krzysztof Gogolewski at 2023-11-15T13:20:14-05:00
Remove loopy superclass solve mechanism

Programs with a -Wloopy-superclass-solve warning will now fail with an error.

Fixes #23017

- - - - -
2aff2361 by Zubin Duggal at 2023-11-15T13:20:50-05:00
users-guide: Fix links to libraries from the users-guide.

The unit-ids generated in c1a3ecde720b3bddc2c8616daaa06ee324e602ab include the
package name, so we don't need to explicitly add it to the links.

Fixes #24151

- - - - -
27981fac by Alan Zimmerman at 2023-11-15T13:21:25-05:00
EPA: splitLHsForAllTyInvis does not return ann

We did not use the annotations returned from splitLHsForAllTyInvis, so
do not return them.

- - - - -
a6467834 by Krzysztof Gogolewski at 2023-11-15T22:22:59-05:00
Document defaulting of RuntimeReps

Fixes #24099

- - - - -
2776920e by Simon Peyton Jones at 2023-11-15T22:23:35-05:00
Second fix to #24083

My earlier fix turns out to be too aggressive for data/type families

See wrinkle (DTV1) in Note [Disconnected type variables]

- - - - -
cee81370 by Sylvain Henry at 2023-11-16T09:57:46-05:00
Fix unusable units and module reexport interaction (#21097)

This commit fixes an issue with ModUnusable introduced in df0f148feae.

In mkUnusableModuleNameProvidersMap we traverse the list of unusable
units and generate ModUnusable origin for all the modules they contain:
exposed modules, hidden modules, and also re-exported modules. To do
this we have a two-level map:

  ModuleName -> Unit:ModuleName (aka Module) -> ModuleOrigin

So for each module name "M" in broken unit "u" we have:
  "M" -> u:M -> ModUnusable reason

However in the case of module reexports we were using the *target*
module as a key. E.g. if "u:M" is a reexport for "X" from unit "o":
   "M" -> o:X -> ModUnusable reason

Case 1: suppose a reexport without module renaming (u:M -> o:M) from
unusable unit u:
   "M" -> o:M -> ModUnusable reason

Here it's claiming that the import of M is unusable because a reexport
from u is unusable. But if unit o isn't unusable we could also have in
the map:
   "M" -> o:M -> ModOrigin ...

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModOrigin)

Case 2: similarly we could have 2 unusable units reexporting the same module
without renaming, say (u:M -> o:M) and (v:M -> o:M) with u and v
unusable. It gives:

  "M" -> o:M -> ModUnusable ... (for u)
  "M" -> o:M -> ModUnusable ... (for v)

Issue: the Semigroup instance of ModuleOrigin doesn't handle the case
(ModUnusable <> ModUnusable).

This led to #21097, #16996, #11050.

To fix this, in this commit we make ModUnusable track whether the module
used as key is a reexport or not (for better error messages) and we use
the re-export module as key. E.g. if "u:M" is a reexport for "o:X" and u
is unusable, we now record:

    "M" -> u:M -> ModUnusable reason reexported=True

So now, we have two cases for a reexport u:M -> o:X:
   - u unusable: "M" -> u:M -> ModUnusable ... reexported=True
   - u usable:   "M" -> o:X -> ModOrigin   ... reexportedFrom=u:M

The second case is indexed with o:X because in this case the Semigroup
instance of ModOrigin is used to combine valid expositions of a module
(directly or via reexports).

Note that module lookup functions select usable modules first (those who
have a ModOrigin value), so it doesn't matter if we add new ModUnusable
entries in the map like this:

  "M" -> {
    u:M -> ModUnusable ... reexported=True
    o:M -> ModOrigin ...
  }

The ModOrigin one will be used. Only if there is no ModOrigin or
ModHidden entry will the ModUnusable error be printed. See T21097 for an
example printing several reasons why an import is unusable.

- - - - -
3e606230 by Krzysztof Gogolewski at 2023-11-16T09:58:22-05:00
Fix IPE test

A helper function was defined in a different module than used.
To reproduce: ./hadrian/build test --test-root-dirs=testsuite/tests/rts/ipe

- - - - -
49f5264b by Andreas Klebinger at 2023-11-16T20:52:11-05:00
Properly compute unpacked sizes for -funpack-small-strict-fields.

Use rep size rather than rep count to compute the size.

Fixes #22309

- - - - -
b4f84e4b by James Henri Haydon at 2023-11-16T20:52:53-05:00
Explicit methods for Alternative Compose

Explicitly define some and many in Alternative instance for
Data.Functor.Compose

Implementation of https://github.com/haskell/core-libraries-committee/issues/181

- - - - -
9bc0dd1f by Ignat Insarov at 2023-11-16T20:53:34-05:00
Add permutations for non-empty lists.

Approved by CLC in https://github.com/haskell/core-libraries-committee/issues/68#issuecomment-1221409837

- - - - -
5643ecf9 by Andrew Lelechenko at 2023-11-16T20:53:34-05:00
Update changelog and since annotations for Data.List.NonEmpty.permutations

Approved by CLC in https://github.com/haskell/core-libraries-committee/issues/68#issuecomment-1221409837

- - - - -
94ff2134 by Oleg Alexander at 2023-11-16T20:54:15-05:00
Update doc string for traceShow

Updated doc string for traceShow.

- - - - -
faff671a by Luite Stegeman at 2023-11-17T14:12:51+01:00
JS: clean up some foreign imports

- - - - -
856e0a4e by Sven Tennie at 2023-11-18T06:54:11-05:00
AArch64: Remove unused instructions

As these aren't ever emitted, we don't even know if they work or will
ever be used. If one of them is needed in future, we may easily re-add
it.

Deleted instructions are:
- CMN
- ANDS
- BIC
- BICS
- EON
- ORN
- ROR
- TST
- STP
- LDP
- DMBSY

- - - - -
615441ef by Alan Zimmerman at 2023-11-18T06:54:46-05:00
EPA: Replace Monoid with NoAnn

Remove the final Monoid instances in the exact print infrastructure.

For Windows CI

Metric Decrease:
    T5205

- - - - -
5a6c49d4 by David Feuer at 2023-11-20T18:53:18-05:00
Speed up stimes in instance Semigroup Endo

As discussed at
https://github.com/haskell/core-libraries-committee/issues/4

- - - - -
cf9da4b3 by Andrew Lelechenko at 2023-11-20T18:53:18-05:00
base: reflect latest changes in the changelog

- - - - -
48bf364e by Alan Zimmerman at 2023-11-20T18:53:54-05:00
EPA: Use SrcSpan in EpaSpan

This is more natural, since we already need to deal with invalid
RealSrcSpans, and that is exactly what SrcSpan.UnhelpfulSpan is for.

Updates haddock submodule.

- - - - -
97ec37cc by Sebastian Graf at 2023-11-20T18:54:31-05:00
Add regression test for #6070

Fixes #6070.

- - - - -
e9d5ae41 by Owen Shepherd at 2023-11-21T18:32:23-05:00
chore: Correct typo in the gitlab MR template

[skip ci]

- - - - -
f158a8d0 by Rodrigo Mesquita at 2023-11-21T18:32:59-05:00
Improve error message when reading invalid `.target` files

A `.target` file generated by ghc-toolchain or by configure can become
invalid if the target representation (`Toolchain.Target`) is changed
while the files are not re-generated by calling `./configure` or
`ghc-toolchain` again. There is also the issue of hadrian caching the
dependencies on `.target` files, which makes parsing fail when reading
reading the cached value if the representation has been updated.

This patch provides a better error message in both situations, moving
away from a terrible `Prelude.read: no parse` error that you would get
otherwise.

Fixes #24199

- - - - -
955520c6 by Ben Gamari at 2023-11-21T18:33:34-05:00
users guide: Note that QuantifiedConstraints implies ExplicitForAll

Fixes #24025.

- - - - -
17ec3e97 by Owen Shepherd at 2023-11-22T09:37:28+01:00
fix: Change type signatures in NonEmpty export comments to reflect reality

This fixes several typos in the comments of
Data.List.NonEmpty export list items.

- - - - -
2fd78f9f by Samuel Thibault at 2023-11-22T11:49:13-05:00
Fix the platform string for GNU/Hurd

As commited in Cargo
https://github.com/haskell/cabal/pull/9434
there is confusion between "gnu" and "hurd". This got fixed in Cargo, we
need the converse in Hadrian.

Fixes #24180

- - - - -
a79960fe by Alan Zimmerman at 2023-11-22T11:49:48-05:00
EPA: Tuple Present no longer has annotation

The Present constructor for a Tuple argument will never have an exact
print annotation. So make this impossible.

- - - - -
121c9ab7 by David Binder at 2023-11-22T21:12:29-05:00
Unify the hpc testsuites

The hpc testsuite was split between testsuite/tests/hpc
and the submodule libraries/hpc/test. This commit unifies
the two testsuites in the GHC repository in the directory
testsuite/tests/hpc.

- - - - -
d2733a05 by Alan Zimmerman at 2023-11-22T21:13:05-05:00
EPA: empty tup_tail has noAnn

In Parser.y, the tup_tail rule had the following option
          | {- empty -} %shift   { return [Left noAnn] }

Once this works through PostProcess.hs, it means we add an extra
Missing constructor if the last item was a comma.

Change the annotation type to a Bool to indicate this, and use the
EpAnn Anchor for the print location for the others.

- - - - -
fa576eb8 by Andreas Klebinger at 2023-11-24T08:29:13-05:00
Fix FMA primops generating broken assembly on x86.

`genFMA3Code` assumed that we had to take extra precations to avoid overwriting
the result of `getNonClobberedReg`. One of these special cases caused a bug resulting
in broken assembly.

I believe we don't need to hadle these cases specially at all, which means this MR simply
deletes the special cases to fix the bug.

Fixes #24160

- - - - -
34d86315 by Alan Zimmerman at 2023-11-24T08:29:49-05:00
EPA: Remove parenthesizeHsType

This is called from PostProcess.hs, and adds spurious parens.
With the looser version of exact printing we had before we could
tolerate this, as they would be swallowed by the original at the same
place.

But with the next change (remove EpAnnNotUsed) they result in
duplicates in the output.

For Darwin build:

Metric Increase:
    MultiLayerModulesTH_OneShot

- - - - -
3ede659d by Vladislav Zavialov at 2023-11-26T06:43:32-05:00
Add name for -Wdeprecated-type-abstractions (#24154)

This warning had no name or flag and was triggered unconditionally.
Now it is part of -Wcompat.

- - - - -
7902ebf8 by Alan Zimmerman at 2023-11-26T06:44:08-05:00
EPA: Remove EpAnnNotUsed

We no longer need the EpAnnNotUsed constructor for EpAnn, as we can
represent an unused annotation with an anchor having a EpaDelta of
zero, and empty comments and annotations.

This simplifies code handling annotations considerably.

Updates haddock submodule

Metric Increase:
    parsing001

- - - - -
471b2672 by Mario Blažević at 2023-11-26T06:44:48-05:00
Bumped the upper bound of text to <2.2

- - - - -
d1bf25c7 by Vladislav Zavialov at 2023-11-26T11:45:49-05:00
Term variable capture (#23740)

This patch changes type variable lookup rules (lookupTypeOccRn) and
implicit quantification rules (filterInScope) so that variables bound
in the term namespace can be captured at the type level

  {-# LANGUAGE RequiredTypeArguments #-}
  f1 x = g1 @x                -- `x` used in a type application
  f2 x = g2 (undefined :: x)  -- `x` used in a type annotation
  f3 x = g3 (type x)          -- `x` used in an embedded type
  f4 x = ...
    where g4 :: x -> x        -- `x` used in a type signature
          g4 = ...

This change alone does not allow us to accept examples shown above,
but at least it gets them past the renamer.

- - - - -
da863d15 by Vladislav Zavialov at 2023-11-26T11:46:26-05:00
Update Note [hsScopedTvs and visible foralls]

The Note was written before GHC gained support for visible forall in
types of terms. Rewrite a few sentences and use a better example.

- - - - -
b5213542 by Matthew Pickering at 2023-11-27T12:53:59-05:00
testsuite: Add mechanism to collect generic metrics

* Generalise the metric logic by adding an additional field which
  allows you to specify how to query for the actual value. Previously
  the method of querying the baseline value was abstracted (but always
  set to the same thing).

* This requires rejigging how the stat collection works slightly but now
  it's more uniform and hopefully simpler.

* Introduce some new "generic" helper functions for writing generic
  stats tests.

  - collect_size ( deviation, path )
    Record the size of the file as a metric

  - stat_from_file ( metric, deviation, path )
    Read a value from the given path, and store that as a metric

  - collect_generic_stat ( metric, deviation, get_stat)
    Provide your own `get_stat` function, `lambda way: <Int>`, which
    can be used to establish the current value of the metric.

  - collect_generic_stats ( metric_info ):
    Like collect_generic_stat but provide the whole dictionary of metric
    definitions.

    { metric: {
        deviation: <Int>
        current: lambda way: <Int>
        } }

* Introduce two new "size" metrics for keeping track of build products.
    - `size_hello_obj` - The size of `hello.o` from compiling hello.hs
    - `libdir` - The total size of the `libdir` folder.

* Track the number of modules in the AST tests
   - CountDepsAst
   - CountDepsParser

This lays the infrastructure for #24191 #22256 #17129

- - - - -
7d9a2e44 by ARATA Mizuki at 2023-11-27T12:54:39-05:00
x86: Don't require -mavx2 when using 256-bit floating-point SIMD primitives

Fixes #24222

- - - - -
4e5ff6a4 by Alan Zimmerman at 2023-11-27T12:55:15-05:00
EPA: Remove SrcSpanAnn

Now that we only have a single constructor for EpAnn, And it uses a
SrcSpan for its location, we can do away with SrcSpanAnn completely.
It only existed to wrap the original SrcSpan in a location, and
provide a place for the exact print annotation.

For darwin only:
Metric Increase:
    MultiLayerModulesTH_OneShot

Updates haddock submodule

- - - - -
e05bca39 by Krzysztof Gogolewski at 2023-11-28T08:00:55-05:00
testsuite: don't initialize testdir to '.'

The test directory is removed during cleanup, if there's an interrupt
that could remove the entire repository.

Fixes #24219

- - - - -
af881674 by Alan Zimmerman at 2023-11-28T08:01:30-05:00
EPA: Clean up mkScope in Ast.hs

Now that we have HasLoc we can get rid of all the custom variants of
mkScope

For deb10-numa

Metric Increase:
    libdir

- - - - -
292983c8 by Ben Gamari at 2023-11-28T22:44:28-05:00
distrib: Rediscover otool and install_name_tool on Darwin

In the bindist configure script we must rediscover the `otool` and
`install_name_tool`s since they may be different from the build
environment.

Fixes #24211.

- - - - -
dfe1c354 by Stefan Schulze Frielinghaus at 2023-11-28T22:45:04-05:00
llvmGen: Align objects in the data section

Objects in the data section may be referenced via tagged pointers.
Thus, align those objects to a 4- or 8-byte boundary for 32- or 64-bit
platforms, respectively.  Note, this may need to be reconsidered if
objects with a greater natural alignment requirement are emitted as e.g.
128-bit atomics.

Fixes #24163.

- - - - -
f6c486c3 by Matthew Pickering at 2023-11-29T11:08:13-05:00
metrics: Widen libdir and size_hello_obj acceptance window

af8816740d9b8759be1a22af8adcb5f13edeb61d shows that the libdir size can
fluctuate quite significantly even when the change is quite small.
Therefore we widen the acceptance window to 10%.

- - - - -
99a6a49c by Alan Zimmerman at 2023-11-29T11:08:49-05:00
EPA: Clean up TC Monad Utils

We no longer need the alternative variant of addLocM (addLocMA)
nor wrapLocAM, wrapLocSndMA.

aarch64-darwin
Metric Increase:
    MultiLayerModulesTH_OneShot

deb10-numa-slow
Metric Decrease:
    libdir

- - - - -
94fb8d47 by Alan Zimmerman at 2023-11-29T18:10:26+00:00
Match GHC, No comments in EpaDelta for comments

- - - - -
cbc03fa0 by Sebastian Graf at 2023-11-30T12:37:21-05:00
perf tests: Move comments into new `Note [Sensitivity to unique increment]` (#19414)

And additionally to T12545, link from T8095, T13386 to this new Note.

- - - - -
c7623b22 by Alan Zimmerman at 2023-11-30T12:37:56-05:00
EPA: EpaDelta for comment has no comments

EpaLocation is used to position things. It has two constructors,
EpaSpan holding a SrcSpan, and EpaDelta with a delta position and a
possible list of comments.  The comment list is needed because the
location in EpaDelta has no absolute information to decide which
comments should be emitted before them when printing.

But it is also used for specifying the position of a comment.  To
prevent the absurdity of a comment position having a list of comments
in it, we make EpaLocation parameterisable, using comments for the
normal case and a constant for within comments.

Updates haddock submodule.

aarch64-darwin
Metric Decrease:
    MultiLayerModulesTH_OneShot

- - - - -
bd8acc0c by Krzysztof Gogolewski at 2023-11-30T12:38:32-05:00
Kind-check body of a required forall

We now require that in 'forall a -> ty', ty has kind TYPE r for some r.
Fixes #24176

- - - - -
010fb784 by Owen Shepherd at 2023-12-03T00:10:09-05:00
docs(NonEmpty/group): Remove incorrect haddock link quotes in code block

- - - - -
cda9c12d by Owen Shepherd at 2023-12-03T00:10:09-05:00
docs(NonEmpty/group): Remove cycle from group haddock example

- - - - -
495265b9 by Owen Shepherd at 2023-12-03T00:10:09-05:00
docs(NonEmpty/group): Use repl haddock syntax in group docs

- - - - -
d134d1de by Owen Shepherd at 2023-12-03T00:10:09-05:00
docs(NonEmpty/group): Use list [] notation in group haddock

- - - - -
dfcf629c by Owen Shepherd at 2023-12-03T00:10:10-05:00
docs(NonEmpty/group): Specify final property of group function in haddock

- - - - -
cad3b734 by Owen Shepherd at 2023-12-03T00:10:10-05:00
fix: Add missing property of List.group

- - - - -
bad37656 by Matthew Pickering at 2023-12-03T00:10:46-05:00
testsuite: Fix T21097b test with make 4.1 (deb9)

cee81370cd6ef256f66035e3116878d4cb82e28b recently added a test which
failed on deb9 because the version of make was emitting the recipe
failure to stdout rather than stderr.

One way to fix this is to be more precise in the test about which part
of the output we care about inspecting.

- - - - -
5efdf421 by Matthew Pickering at 2023-12-03T00:11:21-05:00
testsuite: Track size of libdir in bytes

For consistency it's better if we track all size metrics in bytes.

Metric Increase:
  libdir

- - - - -
f5eb0f29 by Matthew Pickering at 2023-12-03T00:11:22-05:00
testsuite: Remove rogue trace in testsuite

I accidentally left a trace in the generics metric patch.

- - - - -
d5610737 by Claudio Bley at 2023-12-06T16:13:33-05:00
Only exit ghci in -e mode when :add command fails

Previously, when running `ghci -e ':add Sample.hs'` the process would
exit with exit code 1 if the file exists and could be loaded.

Fixes #24115

- - - - -
0f0c53a5 by Vladislav Zavialov at 2023-12-06T16:14:09-05:00
T2T in Patterns (#23739)

This patch implements the T2T (term-to-type) transformation in patterns.
Patterns that are checked against a visible forall can now be written
without the `type` keyword:

	  \(type t) (x :: t) -> ...   -- old
	  \t (x :: t) -> ...          -- new

The `t` binder is parsed and renamed as a term pattern (Pat), but
then undergoes a conversion to a type pattern (HsTyPat).
See the new function pat_to_type_pat in compiler/GHC/Tc/Gen/Pat.hs

- - - - -
10a1a6c6 by Sebastian Graf at 2023-12-06T16:14:45-05:00
Pmc: Fix SrcLoc and warning for incomplete irrefutable pats (#24234)

Before, the source location would point at the surrounding function definition,
causing the confusion in #24234.
I also took the opportunity to introduce a new `LazyPatCtx :: HsMatchContext _`
to make the warning message say "irrefutable pattern" instead of "pattern
binding".

- - - - -
36b9a38c by Matthew Pickering at 2023-12-06T16:15:21-05:00
libraries: Bump filepath to 1.4.200.1 and unix to 2.8.4.0

Updates filepath submodule
Updates unix submodule

Fixes #24240

- - - - -
91ff0971 by Matthew Pickering at 2023-12-06T16:15:21-05:00
Submodule linter: Allow references to tags

We modify the submodule linter so that if the bumped commit is a
specific tag then the commit is accepted.

Fixes #24241

- - - - -
86f652dc by Zubin Duggal at 2023-12-06T16:15:21-05:00
hadrian: set -Wno-deprecations for directory and Win32

The filepath bump to 1.4.200.1 introduces a deprecation warning.

See https://gitlab.haskell.org/ghc/ghc/-/issues/24240
    https://github.com/haskell/filepath/pull/206

- - - - -
7ac6006e by Sylvain Henry at 2023-12-06T16:16:02-05:00
Zap OccInfo on case binders during StgCse #14895 #24233

StgCse can revive dead binders:

  case foo of dead { Foo x y -> Foo x y; ... }
  ===>
  case foo of dead { Foo x y -> dead; ... } -- dead is no longer dead

So we must zap occurrence information on case binders.

Fix #14895 and #24233

- - - - -
57c391c4 by Sebastian Graf at 2023-12-06T16:16:37-05:00
Cpr: Turn an assertion into a check to deal with some dead code (#23862)

See the new `Note [Dead code may contain type confusions]`.

Fixes #23862.

- - - - -
c1c8abf8 by Zubin Duggal at 2023-12-08T02:25:07-05:00
testsuite: add test for #23944

- - - - -
6329d308 by Zubin Duggal at 2023-12-08T02:25:07-05:00
driver: Only run a dynamic-too pipeline if object files are going to be generated

Otherwise we run into a panic in hscMaybeWriteIface: "Unexpected DT_Dyn state
when writing simple interface" when dynamic-too is enabled

We could remove the panic and just write the interface even if the state is `DT_Dyn`,
but it seems pointless to run the pipeline twice when `hscMaybeWriteIface` is already
designed to write both `hi` and `dyn_hi` files if dynamic-too is enabled.

Fixes #23944.

- - - - -
28811f88 by Simon Peyton Jones at 2023-12-08T05:47:18-05:00
Improve duplicate elimination in SpecConstr

This partially fixes #24229.

See the new Note [Pattern duplicate elimination] in SpecConstr

- - - - -
fec7894f by Simon Peyton Jones at 2023-12-08T05:47:18-05:00
Make SpecConstr deal with casts better

This patch does two things, to fix #23209:

* It improves SpecConstr so that it no longer quantifies over
  coercion variables.  See Note [SpecConstr and casts]

* It improves the rule matcher to deal nicely with the case where
  the rule does not quantify over coercion variables, but the the
  template has a cast in it.  See Note [Casts in the template]

- - - - -
8db8d2fd by Zubin Duggal at 2023-12-08T05:47:54-05:00
driver: Don't lose track of nodes when we fail to resolve cycles

The nodes that take part in a cycle should include both hs-boot and hs files,
but when we fail to resolve a cycle, we were only counting the nodes from the
graph without boot files.

Fixes #24196

- - - - -
c5b4efd3 by Zubin Duggal at 2023-12-08T05:48:30-05:00
testsuite: Skip MultiLayerModulesTH_OneShot on darwin

See #24177

- - - - -
fae472a9 by Wendao Lee at 2023-12-08T05:49:12-05:00
docs(Data.Char):Add more detailed descriptions for some functions

Related changed function's docs:

-GHC.Unicode.isAlpha
-GHC.Unicode.isPrint
-GHC.Unicode.isAlphaNum

Add more details for what the function will return.

Co-authored-by: Bodigrim <andrew.lelechenko at gmail.com>

- - - - -
ca7510e4 by Malik Ammar Faisal at 2023-12-08T05:49:55-05:00
Fix float parsing in GHC Cmm Lexer

Add test case for bug #24224

- - - - -
d8baa1bd by Simon Peyton Jones at 2023-12-08T15:40:37+00:00
Take care when simplifying unfoldings

This MR fixes a very subtle bug exposed by #24242.

See Note [Environment for simplLetUnfolding].

I also updated a bunch of Notes on shadowing

- - - - -
03ca551d by Simon Peyton Jones at 2023-12-08T15:54:50-05:00
Comments only in FloatIn

Relevant to #3458

- - - - -
50c78779 by Simon Peyton Jones at 2023-12-08T15:54:50-05:00
Comments only in SpecConstr

- - - - -
9431e195 by Simon Peyton Jones at 2023-12-08T15:54:50-05:00
Add test for #22238

- - - - -
d9e4c597 by Vladislav Zavialov at 2023-12-11T04:19:34-05:00
Make forall a keyword (#23719)

Before this change, GHC used to accept `forall` as a term-level
identifier:

	-- from constraints-0.13
	forall :: forall p. (forall a. Dict (p a)) -> Dict (Forall p)
	forall d = ...

Now it is a parse error.

The -Wforall-identifier warning has served its purpose and is now
a deprecated no-op.

- - - - -
58d56644 by Zubin Duggal at 2023-12-11T04:20:10-05:00
driver: Ensure we actually clear the interactive context before reloading

Previously we called discardIC, but immediately after set the session
back to an old HscEnv that still contained the IC

Partially addresses #24107
Fixes #23405

- - - - -
8e5745a0 by Zubin Duggal at 2023-12-11T04:20:10-05:00
driver: Ensure we force the lookup of old build artifacts before returning the build plan

This prevents us from retaining all previous build artifacts in memory until a
recompile finishes, instead only retaining the exact artifacts we need.

Fixes #24118

- - - - -
105c370c by Zubin Duggal at 2023-12-11T04:20:10-05:00
testsuite: add test for #24118 and #24107

MultiLayerModulesDefsGhci was not able to catch the leak because it uses
:l which discards the previous environment.

Using :r catches both of these leaks

- - - - -
e822ff88 by Zubin Duggal at 2023-12-11T04:20:10-05:00
compiler: Add some strictness annotations to ImportSpec and related constructors
This prevents us from retaining entire HscEnvs.

Force these ImportSpecs when forcing the GlobalRdrEltX

Adds an NFData instance for Bag

Fixes #24107

- - - - -
522c12a4 by Zubin Duggal at 2023-12-11T04:20:10-05:00
compiler: Force IfGlobalRdrEnv in NFData instance.

- - - - -
188b280d by Arnaud Spiwack at 2023-12-11T15:33:31+01:00
LinearTypes => MonoLocalBinds

- - - - -
8e0446df by Arnaud Spiwack at 2023-12-11T15:44:28+01:00
Linear let and where bindings

For expediency, the initial implementation of linear types in GHC
made it so that let and where binders would always be considered
unrestricted. This was rather unpleasant, and probably a big obstacle
to adoption. At any rate, this was not how the proposal was designed.

This patch fixes this infelicity. It was surprisingly difficult to
build, which explains, in part, why it took so long to materialise.

As of this patch, let or where bindings marked with %1 will be
linear (respectively %p for an arbitrary multiplicity p). Unmarked let
will infer their multiplicity.

Here is a prototypical example of program that used to be rejected and
is accepted with this patch:

```haskell
f :: A %1 -> B
g :: B %1 -> C

h :: A %1 -> C
h x = g y
  where
    y = f x
```

Exceptions:
- Recursive let are unrestricted, as there isn't a clear semantics of
  what a linear recursive binding would be.
- Destructive lets with lazy bindings are unrestricted, as their
  desugaring isn't linear (see also #23461).
- (Strict) destructive lets with inferred polymorphic type are
  unrestricted. Because the desugaring isn't linear (See #18461
  down-thread).

Closes #18461 and #18739

Co-authored-by: @jackohughes

- - - - -
effa7e2d by Matthew Craven at 2023-12-12T04:37:20-05:00
Introduce `dataToTagSmall#` primop (closes #21710)

...and use it to generate slightly better code when dataToTag#
is used at a "small data type" where there is no need to mess
with "is_too_big_tag" or potentially look at an info table.

Metric Decrease:
    T18304

- - - - -
35c7aef6 by Matthew Craven at 2023-12-12T04:37:20-05:00
Fix formatting of Note [alg-alt heap check]

- - - - -
7397c784 by Oleg Grenrus at 2023-12-12T04:37:56-05:00
Allow untyped brackets in typed splices and vice versa.

Resolves #24190

Apparently the check was essentially always (as far as I can trace back: d0d47ba76f8f0501cf3c4966bc83966ab38cac27),
and while it does catch some mismatches, the type-checker will catch
them too. OTOH, it prevents writing completely reasonable programs.

- - - - -
32d208e1 by Vladislav Zavialov at 2023-12-12T20:41:36+03:00
EPA: Match changes to LHsToken removal

- - - - -
a3ee3b99 by Moritz Angermann at 2023-12-12T19:50:58-05:00
Drop hard Xcode dependency

XCODE_VERSION calls out to `xcodebuild`, which is only available
when having `Xcode` installed. The CommandLineTools are not
sufficient. To install Xcode, you must have an apple id to download
the Xcode.xip from apple.

We do not use xcodebuild anywhere in our build explicilty. At best
it appears to be a proxy for checking the linker or the compiler.
These should rather be done with
```
xcrun ld -version
```
or similar, and not by proxy through Xcode. The CLR should be
sufficient for building software on macOS.

- - - - -
1c9496e0 by Vladislav Zavialov at 2023-12-12T19:51:34-05:00
docs: update information on RequiredTypeArguments

Update the User's Guide and Release Notes to account for the recent
progress in the implementation of RequiredTypeArguments.

- - - - -
d0b17576 by Ben Gamari at 2023-12-13T06:33:37-05:00
rts/eventlog: Fix off-by-one in assertion

Previously we failed to account for the NULL terminator `postString`
asserted that there is enough room in the buffer for the string.

- - - - -
a10f9b9b by Ben Gamari at 2023-12-13T06:33:37-05:00
rts/eventlog: Honor result of ensureRoomForVariableEvent is

Previously we would keep plugging along, even if isn't enough room for
the event.

- - - - -
0e0f41c0 by Ben Gamari at 2023-12-13T06:33:37-05:00
rts/eventlog: Avoid truncating event sizes

Previously ensureRoomForVariableEvent would truncate the desired size to
16-bits, resulting in #24197.

Fixes #24197.

- - - - -
64e724c8 by Artin Ghasivand at 2023-12-13T06:34:20-05:00
Remove the "Derived Constraint" argument of TcPluginSolver, docs

- - - - -
fe6d97dd by Vladislav Zavialov at 2023-12-13T06:34:56-05:00
EPA: Move tokens into GhcPs extension fields (#23447)

Summary of changes

* Remove Language.Haskell.Syntax.Concrete
* Move all tokens into GhcPs extension fields (LHsToken -> EpToken)
* Create new TTG extension fields as needed
* Drop the MultAnn wrapper

Updates the haddock submodule.

Co-authored-by: Alan Zimmerman <alan.zimm at gmail.com>

- - - - -
8106e695 by Zubin Duggal at 2023-12-13T06:35:34-05:00
testsuite: use copy_files in T23405

This prevents the tree from being dirtied when the file is modified.

- - - - -
ed0e4099 by Bryan Richter at 2023-12-14T04:30:53-05:00
Document ghc package's PVP-noncompliance

This changes nothing, it just makes the status quo explicit.

- - - - -
8bef8d9f by Luite Stegeman at 2023-12-14T04:31:33-05:00
JS: Mark spurious CI failures js_fragile(24259)

This marks the spurious test failures on the JS platform as
js_fragile(24259), so we don't hold up merge requests while
fixing the underlying issues.

See #24259

- - - - -
1c79526a by Finley McIlwaine at 2023-12-15T12:24:40-08:00
Late plugins

- - - - -
000c3302 by Finley McIlwaine at 2023-12-15T12:24:40-08:00
withTiming on LateCCs and late plugins

- - - - -
be4551ac by Finley McIlwaine at 2023-12-15T12:24:40-08:00
add test for late plugins

- - - - -
7c29da9f by Finley McIlwaine at 2023-12-15T12:24:40-08:00
Document late plugins

- - - - -
9a52ae46 by Ben Gamari at 2023-12-20T07:07:26-05:00
Fix thunk update ordering

Previously we attempted to ensure soundness of concurrent thunk update
by synchronizing on the access of the thunk's info table pointer field.
This was believed to be sufficient since the indirectee (which may
expose a closure allocated by another core) would not be examined
until the info table pointer update is complete.

However, it turns out that this can result in data races in the presence
of multiple threads racing a update a single thunk. For instance,
consider this interleaving under the old scheme:

            Thread A                             Thread B
            ---------                            ---------
    t=0     Enter t
      1     Push update frame
      2     Begin evaluation

      4     Pause thread
      5     t.indirectee=tso
      6     Release t.info=BLACKHOLE

      7     ... (e.g. GC)

      8     Resume thread
      9     Finish evaluation
      10    Relaxed t.indirectee=x

      11                                         Load t.info
      12                                         Acquire fence
      13                                         Inspect t.indirectee

      14    Release t.info=BLACKHOLE

Here Thread A enters thunk `t` but is soon paused, resulting in `t`
being lazily blackholed at t=6. Then, at t=10 Thread A finishes
evaluation and updates `t.indirectee` with a relaxed store.

Meanwhile, Thread B enters the blackhole. Under the old scheme this
would introduce an acquire-fence but this would only synchronize with
Thread A at t=6. Consequently, the result of the evaluation, `x`, is not
visible to Thread B, introducing a data race.

We fix this by treating the `indirectee` field as we do all other
mutable fields. This means we must always access this field with
acquire-loads and release-stores.

See #23185.

- - - - -
f4b53538 by Vladislav Zavialov at 2023-12-20T07:08:02-05:00
docs: Fix link to 051-ghc-base-libraries.rst

The proposal is no longer available at the previous URL.

- - - - -
f7e21fab by Matthew Pickering at 2023-12-21T14:57:40+00:00
hadrian: Build all executables in bin/ folder

In the end the bindist creation logic copies them all into the bin
folder. There is no benefit to building a specific few binaries in the
lib/bin folder anymore.

This also removes the ad-hoc logic to copy the touchy and unlit
executables from stage0 into stage1. It takes <1s to build so we might
as well just build it.

- - - - -
0038d052 by Zubin Duggal at 2023-12-22T23:28:00-05:00
testsuite: mark jspace as fragile on i386.

This test has been flaky for some time and has been failing consistently on
i386-linux since 8e0446df landed.

See #24261

- - - - -
dfd670a0 by Ben Bellick at 2023-12-24T10:10:31-05:00
Deprecate -ddump-json and introduce -fdiagnostics-as-json

Addresses #19278

This commit deprecates the underspecified -ddump-json flag and
introduces a newer, well-specified flag -fdiagnostics-as-json.

Also included is a JSON schema as part of the documentation.

The -ddump-json flag will be slated for removal shortly after this merge.

- - - - -
609e6225 by Ben Bellick at 2023-12-24T10:10:31-05:00
Deprecate -ddump-json and introduce -fdiagnostics-as-json

Addresses #19278

This commit deprecates the underspecified -ddump-json flag and
introduces a newer, well-specified flag -fdiagnostics-as-json.

Also included is a JSON schema as part of the documentation.

The -ddump-json flag will be slated for removal shortly after this merge.

- - - - -
865513b2 by Ömer Sinan Ağacan at 2023-12-24T10:11:13-05:00
Fix BNF in user manual 6.6.8.2: formal syntax for instance declarations

- - - - -
c247b6be by Zubin Duggal at 2023-12-25T16:01:23-05:00
docs: document permissibility of -XOverloadedLabels (#24249)

Document the permissibility introduced by
https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0170-unrestricted-overloadedlabels.rst

- - - - -
e5b7eb59 by Ömer Sinan Ağacan at 2023-12-25T16:02:03-05:00
Fix a code block syntax in user manual sec. 6.8.8.6

- - - - -
2db11c08 by Ben Gamari at 2023-12-29T15:35:48-05:00
genSym: Reimplement via CAS on 32-bit platforms

Previously the remaining use of the C implementation on 32-bit platforms
resulted in a subtle bug, #24261. This was due to the C object (which
used the RTS's `atomic_inc64` macro) being compiled without `-threaded`
yet later being used in a threaded compiler.

Side-step this issue by using the pure Haskell `genSym` implementation on
all platforms. This required implementing `fetchAddWord64Addr#` in terms
of CAS on 64-bit platforms.

- - - - -
19328a8c by Xiaoyan Ren at 2023-12-29T15:36:30-05:00
Do not color the diagnostic code in error messages (#24172)

- - - - -
685b467c by Krzysztof Gogolewski at 2023-12-29T15:37:06-05:00
Enforce that bindings of implicit parameters are lifted

Fixes #24298

- - - - -
bc4d67b7 by Matthew Craven at 2023-12-31T06:15:42-05:00
StgToCmm: Detect some no-op case-continuations

...and generate no code for them. Fixes #24264.

- - - - -
5b603139 by Krzysztof Gogolewski at 2023-12-31T06:16:18-05:00
Revert "testsuite: mark jspace as fragile on i386."

This reverts commit 0038d052c8c80b4b430bb2aa1c66d5280be1aa95.

The atomicity bug should be fixed by !11802.

- - - - -
d55216ad by Krzysztof Gogolewski at 2024-01-01T12:05:49-05:00
Refactor: store [[PrimRep]] rather than [Type] in STG

StgConApp stored a list of types. This list was used exclusively
during unarisation of unboxed sums (mkUbxSum).
However, this is at a wrong level of abstraction:
STG shouldn't be concerned with Haskell types, only PrimReps.
Update the code to store a [[PrimRep]]. Also, there's no point in storing
this list when we're not dealing with an unboxed sum.

- - - - -
8b340bc7 by Ömer Sinan Ağacan at 2024-01-01T12:06:29-05:00
Kind signatures docs: mention that they're allowed in newtypes

- - - - -
989bf8e5 by Zubin Duggal at 2024-01-03T20:08:47-05:00
ci: Ensure we use the correct bindist name for the test artifact when generating
release ghcup metadata

Fixes #24268

- - - - -
89299a89 by Krzysztof Gogolewski at 2024-01-03T20:09:23-05:00
Refactor: remove calls to typePrimRepArgs

The function typePrimRepArgs is just a thin wrapper around
typePrimRep, adding a VoidRep if the list is empty.
However, in StgToByteCode, we were discarding that VoidRep anyway,
so there's no point in calling it.

- - - - -
c7be0c68 by mmzk1526 at 2024-01-03T20:10:07-05:00
Use "-V" for alex version check for better backward compatibility
Fixes #24302.
In recent versions of alex, "-v" is used for "--verbose" instead of "-version".

- - - - -
67dbcc0a by Krzysztof Gogolewski at 2024-01-05T02:07:18-05:00
Fix VoidRep handling in ghci debugger

'go' inside extractSubTerms was giving a bad result given a VoidRep,
attempting to round towards the next multiple of 0.
I don't understand much about the debugger but the code should be better
than it was.

Fixes #24306

- - - - -
90ea574e by Krzysztof Gogolewski at 2024-01-05T02:07:54-05:00
VoidRep-related refactor

* In GHC.StgToByteCode, replace bcIdPrimId with idPrimRep,
  bcIdArgRep with idArgRep, atomPrimRep with stgArgRep1.
  All of them were duplicates.
* In GHC.Stg.Unarise, we were converting a PrimRep to a Type and back to
  PrimRep. Remove the calls to primRepToType and typePrimRep1 which cancel out.
* In GHC.STG.Lint, GHC.StgToCmm, GHC.Types.RepType we were filtering out
  VoidRep from the result of typePrimRep. But typePrimRep never returns
  VoidRep - remove the filtering.

- - - - -
eaf72479 by brian at 2024-01-06T23:03:09-05:00
Add unaligned Addr# primops

Implements CLC proposal #154:
  https://github.com/haskell/core-libraries-committee/issues/154

* add unaligned addr primops

* add tests

* accept tests

* add documentation

* fix js primops

* uncomment in access ops

* use Word64 in tests

* apply suggestions

* remove extra file

* move docs

* remove random options

* use setByteArray# primop

* better naming

* update base-exports test

* add base-exports for other architectures

- - - - -
d471d445 by Krzysztof Gogolewski at 2024-01-06T23:03:47-05:00
Remove VoidRep from PrimRep, introduce PrimOrVoidRep

This introduces

data PrimOrVoidRep = VoidRep | NVRep PrimRep

changes typePrimRep1 to return PrimOrVoidRep, and adds a new function
typePrimRepU to be used when the argument is definitely non-void.
Details in Note [VoidRep] in GHC.Types.RepType.

Fixes #19520

- - - - -
48720a07 by Matthew Craven at 2024-01-08T18:57:36-05:00
Apply Note [Sensitivity to unique increment] to LargeRecord

- - - - -
9e2e180f by Sebastian Graf at 2024-01-08T18:58:13-05:00
Debugging: Add diffUFM for convenient diffing between UniqFMs

- - - - -
948f3e35 by Sebastian Graf at 2024-01-08T18:58:13-05:00
Rename Opt_D_dump_stranal to Opt_D_dump_dmdanal

... and Opt_D_dump_str_signatures to Opt_D_dump_dmd_signatures

- - - - -
4e217e3e by Sebastian Graf at 2024-01-08T18:58:13-05:00
Deprecate -ddump-stranal and -ddump-str-signatures

... and suggest -ddump-dmdanal and -ddump-dmd-signatures instead

- - - - -
6c613c90 by Sebastian Graf at 2024-01-08T18:58:13-05:00
Move testsuite/tests/stranal to testsuite/tests/dmdanal

A separate commit so that the rename is obvious to Git(Lab)

- - - - -
c929f02b by Sebastian Graf at 2024-01-08T18:58:13-05:00
CoreSubst: Stricten `substBndr` and `cloneBndr`

Doing so reduced allocations of `cloneBndr` by about 25%.

```
T9233(normal) ghc/alloc    672,488,656    663,083,216  -1.4% GOOD
T9675(optasm) ghc/alloc    423,029,256    415,812,200  -1.7%

    geo. mean                                          -0.1%
    minimum                                            -1.7%
    maximum                                            +0.1%
```

Metric Decrease:
    T9233

- - - - -
e3ca78f3 by Krzysztof Gogolewski at 2024-01-10T17:35:59-05:00
Deprecate -Wsemigroup

This warning was used to prepare for Semigroup becoming a superclass
of Monoid, and for (<>) being exported from Prelude. This happened in
GHC 8.4 in 8ae263ceb3566 and feac0a3bc69fd3.

The leftover logic for (<>) has been removed in GHC 9.8, 4d29ecdfcc79.
Now the warning does nothing at all and can be deprecated.

- - - - -
08d14925 by amesgen at 2024-01-10T17:36:42-05:00
WASM metadata: use correct GHC version

- - - - -
7a808419 by Xiaoyan Ren at 2024-01-10T17:37:24-05:00
Allow SCC declarations in TH (#24081)

- - - - -
28827c51 by Xiaoyan Ren at 2024-01-10T17:37:24-05:00
Fix prettyprinting of SCC pragmas

- - - - -
ae9cc1a8 by Matthew Craven at 2024-01-10T17:38:01-05:00
Fix loopification in the presence of void arguments

This also removes Note [Void arguments in self-recursive tail calls],
which was just misleading.  It's important to count void args both
in the function's arity and at the call site.

Fixes #24295.

- - - - -
b718b145 by Zubin Duggal at 2024-01-10T17:38:36-05:00
testsuite: Teach testsuite driver about c++ sources

- - - - -
09cb57ad by Zubin Duggal at 2024-01-10T17:38:36-05:00
driver: Set -DPROFILING when compiling C++ sources with profiling

Earlier, we used to pass all preprocessor flags to the c++ compiler.
This meant that -DPROFILING was passed to the c++ compiler because
it was a part of C++ flags
However, this was incorrect and the behaviour was changed in
8ff3134ed4aa323b0199ad683f72165e51a59ab6. See #21291.

But that commit exposed this bug where -DPROFILING was no longer being passed
when compiling c++ sources.

The fix is to explicitly include -DPROFILING in `opt_cxx` when profiling is
enabled to ensure we pass the correct options for the way to both C and C++
compilers

Fixes #24286

- - - - -
2cf9dd96 by Zubin Duggal at 2024-01-10T17:38:36-05:00
testsuite: rename objcpp -> objcxx

To avoid confusion with C Pre Processsor

- - - - -
af6932d6 by Simon Peyton Jones at 2024-01-10T17:39:12-05:00
Make TYPE and CONSTRAINT not-apart

Issue #24279 showed up a bug in the logic in GHC.Core.Unify.unify_ty
which is supposed to make TYPE and CONSTRAINT be not-apart.

Easily fixed.

- - - - -
4a39b5ff by Zubin Duggal at 2024-01-10T17:39:48-05:00
ci: Fix typo in mk_ghcup_metadata.py

There was a missing colon in the fix to #24268 in 989bf8e53c08eb22de716901b914b3607bc8dd08

- - - - -
13503451 by Zubin Duggal at 2024-01-10T17:40:24-05:00
release-ci: remove release-x86_64-linux-deb11-release+boot_nonmoving_gc job

There is no reason to have this release build or distribute this variation.
This configuration is for testing purposes only.

- - - - -
afca46a4 by Sebastian Graf at 2024-01-10T17:41:00-05:00
Parser: Add a Note detailing why we need happy's `error` to implement layout

- - - - -
eaf8a06d by Krzysztof Gogolewski at 2024-01-11T00:43:17+01:00
Turn -Wtype-equality-out-of-scope on by default

Also remove -Wnoncanonical-{monoid,monad}-instances from -Wcompat,
since they are enabled by default. Refresh wcompat-warnings/ test
with new -Wcompat warnings.

Part of #24267

Co-authored-by: sheaf <sam.derbyshire at gmail.com>

- - - - -
42bee5aa by Sebastian Graf at 2024-01-12T21:16:21-05:00
Arity: Require called *exactly once* for eta exp with -fpedantic-bottoms (#24296)

In #24296, we had a program in which we eta expanded away an error despite the
presence of `-fpedantic-bottoms`.
This was caused by turning called *at least once* lambdas into one-shot lambdas,
while with `-fpedantic-bottoms` it is only sound to eta expand over lambdas that
are called *exactly* once.
An example can be found in `Note [Combining arity type with demand info]`.

Fixes #24296.

- - - - -
7e95f738 by Andreas Klebinger at 2024-01-12T21:16:57-05:00
Aarch64: Enable -mfma by default.

Fixes #24311

- - - - -
e43788d0 by Jason Shipman at 2024-01-14T12:47:38-05:00
Add more instances for Compose: Fractional, RealFrac, Floating, RealFloat

CLC proposal #226 https://github.com/haskell/core-libraries-committee/issues/226

- - - - -
ae6d8cd2 by Sebastian Graf at 2024-01-14T12:48:15-05:00
Pmc: COMPLETE pragmas associated with Family TyCons should apply to representation TyCons as well (#24326)

Fixes #24326.

- - - - -
c5fc7304 by sheaf at 2024-01-15T14:15:29-05:00
Use lookupOccRn_maybe in TH.lookupName

When looking up a value, we want to be able to find both variables
and record fields. So we should not use the lookupSameOccRn_maybe
function, as we can't know ahead of time which record field namespace
a record field with the given textual name will belong to.

Fixes #24293

- - - - -
da908790 by Krzysztof Gogolewski at 2024-01-15T14:16:05-05:00
Make the build more strict on documentation errors

* Detect undefined labels. This can be tested by adding :ref:`nonexistent`
  to a documentation rst file; attempting to build docs will fail.
  Fixed the undefined label in `9.8.1-notes.rst`.
* Detect errors. While we have plenty of warnings, we can at least enforce
  that Sphinx does not report errors.
  Fixed the error in `required_type_arguments.rst`.

Unrelated change: I have documented that the `-dlint` enables
`-fcatch-nonexhaustive-cases`, as can be verified by checking
`enableDLint`.

- - - - -
5077416e by Javier Sagredo at 2024-01-16T15:40:06-05:00
Profiling: Adds an option to not start time profiling at startup

Using the functionality provided by
d89deeba47ce04a5198a71fa4cbc203fe2c90794, this patch creates a new rts
flag `--no-automatic-time-samples` which disables the time profiling
when starting a program. It is then expected that the user starts it
whenever it is needed.

Fixes #24337

- - - - -
5776008c by Matthew Pickering at 2024-01-16T15:40:42-05:00
eventlog: Fix off-by-one error in postIPE

We were missing the extra_comma from the calculation of the size of the
payload of postIPE. This was causing assertion failures when the event
would overflow the buffer by one byte, as ensureRoomForVariable event
would report there was enough space for `n` bytes but then we would
write `n + 1` bytes into the buffer.

Fixes #24287

- - - - -
66dc09b1 by Simon Peyton Jones at 2024-01-16T15:41:18-05:00
Improve SpecConstr (esp nofib/spectral/ansi)

This MR makes three improvements to SpecConstr: see #24282

* It fixes an outright (and recently-introduced) bug in `betterPat`, which
  was wrongly forgetting to compare the lengths of the argument lists.

* It enhances ConVal to inclue a boolean for work-free-ness, so that the
  envt can contain non-work-free constructor applications, so that we
  can do more: see Note [ConVal work-free-ness]

* It rejigs `subsumePats` so that it doesn't reverse the list.  This can
  make a difference because, when patterns overlap, we arbitrarily pick
  the first.  There is no "right" way, but this retains the old
  pre-subsumePats behaviour, thereby "fixing" the regression in #24282.

Nofib results

   +========================================
   |                 spectral/ansi  -21.14%
   | spectral/hartel/comp_lab_zift   -0.12%
   |       spectral/hartel/parstof   +0.09%
   |           spectral/last-piece   -2.32%
   |           spectral/multiplier   +6.03%
   |                 spectral/para   +0.60%
   |               spectral/simple   -0.26%
   +========================================
   |                     geom mean   -0.18%
   +----------------------------------------

The regression in `multiplier` is sad, but it simply replicates GHC's
previous behaviour (e.g. GHC 9.6).

- - - - -
65da79b3 by Matthew Pickering at 2024-01-16T15:41:54-05:00
hadrian: Reduce Cabal verbosity

The comment claims that `simpleUserHooks` decrease verbosity, and it
does, but only for the `postConf` phase. The other phases are too
verbose with `-V`.

At the moment > 5000 lines of the build log are devoted to output from
`cabal copy`.

So I take the simple approach and just decrease the verbosity level
again.

If the output of `postConf` is essential then it would be better to
implement our own `UserHooks` which doesn't decrease the verbosity for
`postConf`.

Fixes #24338

- - - - -
16414d7d by Matthew Pickering at 2024-01-17T10:54:59-05:00
Stop retaining old ModGuts throughout subsequent simplifier phases

Each phase of the simplifier typically rewrites the majority of ModGuts,
so we want to be able to release the old ModGuts as soon as possible.

`name_ppr_ctxt` lives throught the whole optimiser phase and it was
retaining a reference to `ModGuts`, so we were failing to release the
old `ModGuts` until the end of the phase (potentially doubling peak
memory usage for that particular phase).

This was discovered using eras profiling (#24332)

Fixes #24328

- - - - -
7f0879e1 by Matthew Pickering at 2024-01-17T10:55:35-05:00
Update nofib submodule

- - - - -
320454d3 by Cheng Shao at 2024-01-17T23:02:40+00:00
ci: bump ci-images for updated wasm image

- - - - -
2eca52b4 by Cheng Shao at 2024-01-17T23:06:44+00:00
base: treat all FDs as "nonblocking" on wasm

On posix platforms, when performing read/write on FDs, we check the
nonblocking flag first. For FDs without this flag (e.g. stdout), we
call fdReady() first, which in turn calls poll() to wait for I/O to be
available on that FD. This is problematic for wasm32-wasi: although
select()/poll() is supported via the poll_oneoff() wasi syscall, that
syscall is rather heavyweight and runtime behavior differs in
different wasi implementations. The issue is even worse when targeting
browsers, given there's no satisfactory way to implement async I/O as
a synchronous syscall, so existing JS polyfills for wasi often give up
and simply return ENOSYS.

Before we have a proper I/O manager that avoids poll_oneoff() for
async I/O on wasm, this patch improves the status quo a lot by merely
pretending all FDs are "nonblocking". Read/write on FDs will directly
invoke read()/write(), which are much more reliably handled in
existing wasi implementations, especially those in browsers.

Fixes #23275 and the following test cases: T7773 isEOF001 openFile009
T4808 cgrun025

Approved by CLC proposal #234:
https://github.com/haskell/core-libraries-committee/issues/234

- - - - -
83c6c710 by Andrew Lelechenko at 2024-01-18T05:21:49-05:00
base: clarify how to disable warnings about partiality of Data.List.{head,tail}

- - - - -
c4078f2f by Simon Peyton Jones at 2024-01-18T05:22:25-05:00
Fix four bug in handling of (forall cv. body_ty)

These bugs are all described in #24335

It's not easy to provoke the bug, hence no test case.

- - - - -
119586ea by Alexis King at 2024-01-19T00:08:00-05:00
Always refresh profiling CCSes after running pending initializers

Fixes #24171.

- - - - -
9718d970 by Oleg Grenrus at 2024-01-19T00:08:36-05:00
Set default-language: GHC2021 in ghc library

Go through compiler/ sources, and remove
all BangPatterns (and other GHC2021 enabled extensions in these files).

- - - - -
3ef71669 by Matthew Pickering at 2024-01-19T21:55:16-05:00
testsuite: Remove unused have_library function

Also remove the hence unused testsuite option `--test-package-db`.

Fixes #24342

- - - - -
5b7fa20c by Jade at 2024-01-19T21:55:53-05:00
Fix Spelling in the compiler

Tracking: #16591

- - - - -
09875f48 by Matthew Pickering at 2024-01-20T12:20:44-05:00
testsuite: Implement `isInTreeCompiler` in a more robust way

Just a small refactoring to avoid redundantly specifying the same
strings in two different places.

- - - - -
0d12b987 by Jade at 2024-01-20T12:21:20-05:00
Change maintainer email from cvs-ghc at haskell.org to ghc-devs at haskell.org. Fixes #22142

- - - - -
eebdd316 by Apoorv Ingle at 2024-01-23T13:49:12+00:00
Changes for haskell/haddock#18324

- - - - -
1fa1c00c by Jade at 2024-01-23T19:17:03-05:00
Enhance Documentation of functions exported by Data.Function

This patch aims to improve the documentation of functions exported
in Data.Function

Tracking: #17929
Fixes: #10065

- - - - -
ab47a43d by Jade at 2024-01-23T19:17:39-05:00
Improve documentation of hGetLine.

- Add explanation for whether a newline is returned
- Add examples

Fixes #14804

- - - - -
dd4af0e5 by Cheng Shao at 2024-01-23T19:18:17-05:00
Fix genapply for cross-compilation by nuking fragile CPP logic

This commit fixes incorrectly built genapply when cross compiling
(#24347) by nuking all fragile CPP logic in it from the orbit. All
target-specific info are now read from DerivedConstants.h at runtime,
see added note for details. Also removes a legacy Makefile and adds
haskell language server support for genapply.

- - - - -
0cda2b8b by Cheng Shao at 2024-01-23T19:18:17-05:00
rts: enable wasm32 register mapping

The wasm backend didn't properly make use of all Cmm global registers
due to #24347. Now that it is fixed, this patch re-enables full
register mapping for wasm32, and we can now generate smaller & faster
wasm modules that doesn't always spill arguments onto the stack. Fixes #22460 #24152.

- - - - -
0325a6e5 by Greg Steuck at 2024-01-24T01:29:44-05:00
Avoid utf8 in primops.txt.pp comments

They don't make it through readFile' without explicitly setting the
encoding. See https://gitlab.haskell.org/ghc/ghc/-/issues/17755

- - - - -
1aaf0bd8 by David Binder at 2024-01-24T01:30:20-05:00
Bump hpc and hpc-bin submodule

Bump hpc to 0.7.0.1
Bump hpc-bin to commit d1780eb2

- - - - -
e693a4e8 by Ben Gamari at 2024-01-24T01:30:56-05:00
testsuite: Ignore stderr in T8089

Otherwise spurious "Killed: 9" messages to stderr may cause the test to fail.
Fixes #24361.
- - - - -
a40f4ab2 by sheaf at 2024-01-24T14:04:33-05:00
Fix FMA instruction on LLVM

We were emitting the wrong instructions for fused multiply-add
operations on LLVM:

  - the instruction name is "llvm.fma.f32" or "llvm.fma.f64", not "fmadd"
  - LLVM does not support other instructions such as "fmsub"; instead
    we implement these by flipping signs of some arguments
  - the instruction is an LLVM intrinsic, which requires handling it
    like a normal function call instead of a machine instruction

Fixes #24223

- - - - -
69abc786 by Andrei Borzenkov at 2024-01-24T14:05:09-05:00
Add changelog entry for renaming tuples from (,,...,,) to Tuple<n> (24291)

- - - - -
0ac8f385 by Cheng Shao at 2024-01-25T00:27:48-05:00
compiler: remove unused GHC.Linker module

The GHC.Linker module is empty and unused, other than as a hack for
the make build system. We can remove it now that make is long gone;
the note is moved to GHC.Linker.Loader instead.

- - - - -
699da01b by Hécate Moonlight at 2024-01-25T00:28:27-05:00
Clarification for newtype constructors when using `coerce`

- - - - -
b2d8cd85 by Matt Walker at 2024-01-26T09:50:08-05:00
Fix #24308

Add tests for semicolon separated where clauses

- - - - -
0da490a1 by Ben Gamari at 2024-01-26T17:34:41-05:00
hsc2hs: Bump submodule

- - - - -
3f442fd2 by Ben Gamari at 2024-01-26T17:34:41-05:00
Bump containers submodule to 0.7

- - - - -
82a1c656 by Sebastian Nagel at 2024-01-29T02:32:40-05:00
base: with{Binary}File{Blocking} only annotates own exceptions

Fixes #20886

This ensures that inner, unrelated exceptions are not misleadingly
annotated with the opened file.

- - - - -
9294a086 by Andreas Klebinger at 2024-01-29T02:33:15-05:00
Fix fma warning when using llvm on aarch64.

On aarch64 fma is always on so the +fma flag doesn't exist for that
target. Hence no need to try and pass +fma to llvm.

Fixes #24379

- - - - -
ced2e731 by sheaf at 2024-01-29T17:27:12-05:00
No shadowing warnings for NoFieldSelector fields

This commit ensures we don't emit shadowing warnings when a user
shadows a field defined with NoFieldSelectors.

Fixes #24381

- - - - -
8eeadfad by Patrick at 2024-01-29T17:27:51-05:00
Fix bug wrong span of nested_doc_comment #24378

close #24378
1. Update the start position of span in `nested_doc_comment` correctly.
and hence the spans of identifiers of haddoc can be computed correctly.
2. add test `HaddockSpanIssueT24378`.

- - - - -
a557580f by Alexey Radkov at 2024-01-30T19:41:52-05:00
Fix irrelevant dodgy-foreign-imports warning on import f-pointers by value

A test *сс018* is attached (not sure about the naming convention though).
Note that without the fix, the test fails with the *dodgy-foreign-imports*
warning passed to stderr. The warning disappears after the fix.

GHC shouldn't warn on imports of natural function pointers from C by value
(which is feasible with CApiFFI), such as

```haskell
foreign import capi "cc018.h value f" f :: FunPtr (Int -> IO ())
```

where

```c
void (*f)(int);
```

See a related real-world use-case
[here](https://gitlab.com/daniel-casanueva/pcre-light/-/merge_requests/17).
There, GHC warns on import of C function pointer `pcre_free`.

- - - - -
ca99efaf by Alexey Radkov at 2024-01-30T19:41:53-05:00
Rename test cc018 -> T24034

- - - - -
88c38dd5 by Ben Gamari at 2024-01-30T19:42:28-05:00
rts/TraverseHeap.c: Ensure that PosixSource.h is included first
- - - - -
ca2e919e by Simon Peyton Jones at 2024-01-31T09:29:45+00:00
Make decomposeRuleLhs a bit more clever

This fixes #24370 by making decomposeRuleLhs undertand
dictionary /functions/ as well as plain /dictionaries/

- - - - -
94ce031d by Teo Camarasu at 2024-02-01T05:49:49-05:00
doc: Add -Dn flag to user guide

Resolves #24394
- - - - -
31553b11 by Ben Gamari at 2024-02-01T12:21:29-05:00
cmm: Introduce MO_RelaxedRead

In hand-written Cmm it can sometimes be necessary to atomically load
from memory deep within an expression (e.g. see the `CHECK_GC` macro).
This MachOp provides a convenient way to do so without breaking the
expression into multiple statements.

- - - - -
0785cf81 by Ben Gamari at 2024-02-01T12:21:29-05:00
codeGen: Use relaxed accesses in ticky bumping

- - - - -
be423dda by Ben Gamari at 2024-02-01T12:21:29-05:00
base: use atomic write when updating timer manager

- - - - -
8a310e35 by Ben Gamari at 2024-02-01T12:21:29-05:00
Use relaxed atomics to manipulate TSO status fields

- - - - -
d6809ee4 by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Add necessary barriers when manipulating TSO owner

- - - - -
39e3ac5d by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Use `switch` to branch on why_blocked

This is a semantics-preserving refactoring.

- - - - -
515eb33d by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Fix synchronization on thread blocking state

We now use a release barrier whenever we update a thread's blocking
state. This required widening StgTSO.why_blocked as AArch64 does not
support atomic writes on 16-bit values.

- - - - -
eb38812e by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Fix data race in threadPaused

This only affects an assertion in the debug RTS and only needs relaxed
ordering.

- - - - -
26c48dd6 by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Fix data race in threadStatus#

- - - - -
6af43ab4 by Ben Gamari at 2024-02-01T12:21:29-05:00
rts: Fix data race in Interpreter's preemption check

- - - - -
9502ad3c by Ben Gamari at 2024-02-01T12:21:29-05:00
rts/Messages: Fix data race

- - - - -
60802db5 by Ben Gamari at 2024-02-01T12:21:30-05:00
rts/Prof: Fix data race

- - - - -
ef8ccef5 by Ben Gamari at 2024-02-01T12:21:30-05:00
rts: Use relaxed ordering on dirty/clean info tables updates

When changing the dirty/clean state of a mutable object we needn't have
any particular ordering.

- - - - -
76fe2b75 by Ben Gamari at 2024-02-01T12:21:30-05:00
codeGen: Use relaxed-read in closureInfoPtr

- - - - -
a6316eb4 by Ben Gamari at 2024-02-01T12:21:30-05:00
STM: Use acquire loads when possible

Full sequential consistency is not needed here.

- - - - -
6bddfd3d by Ben Gamari at 2024-02-01T12:21:30-05:00
rts: Use fence rather than redundant load

Previously we would use an atomic load to ensure acquire ordering.
However, we now have `ACQUIRE_FENCE_ON`, which allows us to express this
more directly.

- - - - -
55c65dbc by Ben Gamari at 2024-02-01T12:21:30-05:00
rts: Fix data races in profiling timer

- - - - -
856b5e75 by Ben Gamari at 2024-02-01T12:21:30-05:00
Add Note [C11 memory model]

- - - - -
6534da24 by Cheng Shao at 2024-02-01T12:22:07-05:00
compiler: move generic cmm optimization logic in NCG to a standalone module

This commit moves GHC.CmmToAsm.cmmToCmm to a standalone module,
GHC.Cmm.GenericOpt. The main motivation is enabling this logic to be
run in the wasm backend NCG code, which is defined in other modules
that's imported by GHC.CmmToAsm, causing a cyclic dependency issue.

- - - - -
87e34888 by Cheng Shao at 2024-02-01T12:22:07-05:00
compiler: explicitly disable PIC in wasm32 NCG

This commit explicitly disables the ncgPIC flag for the wasm32 target.
The wasm backend doesn't support PIC for the time being.

- - - - -
c6ce242e by Cheng Shao at 2024-02-01T12:22:07-05:00
compiler: enable generic cmm optimizations in wasm backend NCG

This commit enables the generic cmm optimizations in other NCGs to be
run in the wasm backend as well, followed by a late cmm control-flow
optimization pass. The added optimizations do catch some corner cases
not handled by the pre-NCG cmm pipeline and are useful in generating
smaller CFGs.

- - - - -
151dda4e by Andrei Borzenkov at 2024-02-01T12:22:43-05:00
Namespacing for WARNING/DEPRECATED pragmas (#24396)

New syntax for WARNING and DEPRECATED pragmas was added,
namely namespace specifierss:

  namespace_spec ::= 'type' | 'data' | {- empty -}

  warning ::= warning_category namespace_spec namelist strings

  deprecation ::= namespace_spec namelist strings

A new data type was introduced to represent these namespace specifiers:

  data NamespaceSpecifier =
    NoSpecifier |
    TypeNamespaceSpecifier (EpToken "type") |
    DataNamespaceSpecifier (EpToken "data")

Extension field XWarning now contains this NamespaceSpecifier.

lookupBindGroupOcc function was changed: it now takes NamespaceSpecifier
and checks that the namespace of the found names matches the passed flag.
With this change {-# WARNING data D "..." #-} pragma will only affect value
namespace and {-# WARNING type D "..." #-} will only affect type
namespace. The same logic is applicable to DEPRECATED pragmas.

Finding duplicated warnings inside rnSrcWarnDecls now takes into
consideration NamespaceSpecifier flag to allow warnings with the
same names that refer to different namespaces.

- - - - -
38c3afb6 by Bryan Richter at 2024-02-01T12:23:19-05:00
CI: Disable the test-cabal-reinstall job

Fixes #24363

- - - - -
27020458 by Matthew Craven at 2024-02-03T01:53:26-05:00
Bump bytestring submodule to something closer to 0.12.1

...mostly so that 16d6b7e835ffdcf9b894e79f933dd52348dedd0c
(which reworks unaligned writes in Builder) and the stuff in
https://github.com/haskell/bytestring/pull/631 can see wider testing.

The less-terrible code for unaligned writes used in Builder on
hosts not known to be ulaigned-friendly also takes less effort
for GHC to compile, resulting in a metric decrease for T21839c
on some platforms.

The metric increase on T21839r is caused by the unrelated commit
750dac33465e7b59100698a330b44de7049a345c.  It perhaps warrants
further analysis and discussion (see #23822) but is not critical.

Metric Decrease:
T21839c
Metric Increase:
T21839r

- - - - -
cdddeb0f by Rodrigo Mesquita at 2024-02-03T01:54:02-05:00
Work around autotools setting C11 standard in CC/CXX

In autoconf >=2.70, C11 is set by default for $CC and $CXX via the
-std=...11 flag. In this patch, we split the "-std" flag out of the $CC
and $CXX variables, which we traditionally assume to be just the
executable name/path, and move it to $CFLAGS/$CXXFLAGS instead.

Fixes #24324

- - - - -
5ff7cc26 by Apoorv Ingle at 2024-02-03T13:14:46-06:00
Expand `do` blocks right before typechecking using the `HsExpansion` philosophy.

- Fixes #18324 #20020 #23147 #22788 #15598 #22086 #21206

- The change is detailed in
  - Note [Expanding HsDo with HsExpansion] in `GHC.Tc.Gen.Do`
  - Note [Doing HsExpansion in the Renamer vs Typechecker] in `GHC.Rename.Expr`
         expains the rational of doing expansions in type checker as opposed to in the renamer

- Adds new datatypes:
  - `GHC.Hs.Expr.XXExprGhcRn`: new datatype makes this expansion work easier
    1. Expansion bits for Expressions, Statements and Patterns in (`ExpandedThingRn`)
    2. `PopErrCtxt` a special GhcRn Phase only artifcat to pop the previous error message in the error context stack

  - `GHC.Basic.Origin` now tracks the reason for expansion in case of Generated
    This is useful for type checking cf. `GHC.Tc.Gen.Expr.tcExpr` case for `HsLam`

  - Kills `HsExpansion` and `HsExpanded` as we have inlined them in `XXExprGhcRn` and `XXExprGhcTc`

- Ensures warnings such as
  1. Pattern match checks
  2. Failable patterns
  3. non-() return in body statements are preserved

- Kill `HsMatchCtxt` in favor of `TcMatchAltChecker`

- Testcases:
  * T18324 T20020 T23147 T22788 T15598 T22086
  * T23147b (error message check),
  * DoubleMatch (match inside a match for pmc check)
  * pattern-fails (check pattern match with non-refutable pattern, eg. newtype)
  * Simple-rec (rec statements inside do statment)
  * T22788 (code snippet from #22788)
  * DoExpanion1 (Error messages for body statments)
  * DoExpansion2 (Error messages for bind statements)
  * DoExpansion3 (Error messages for let statements)

Also repoint haddock to the right submodule so that the test (haddockHypsrcTest) pass

Metric Increase 'compile_time/bytes allocated':
    T9020

The testcase is a pathalogical example of a `do`-block with many statements that do nothing.
Given that we are expanding the statements into function binds, we will have to bear
a (small) 2% cost upfront in the compiler to unroll the statements.

- - - - -
0df8ce27 by Vladislav Zavialov at 2024-02-04T03:55:14-05:00
Reduce parser allocations in allocateCommentsP

In the most common case, the comment queue is empty, so we can skip the
work of processing it. This reduces allocations by about 10% in the
parsing001 test.

Metric Decrease:
    MultiLayerModulesRecomp
    parsing001

- - - - -
ae856a82 by Matthew Pickering at 2024-02-05T12:22:39+00:00
ghc-internals fallout

- - - - -
cfd68290 by Simon Peyton Jones at 2024-02-05T17:58:33-05:00
Stop dropping a case whose binder is demanded

This MR fixes #24251.

See Note [Case-to-let for strictly-used binders]
in GHC.Core.Opt.Simplify.Iteration, plus #24251, for
lots of discussion.

Final Nofib changes over 0.1%:
+-----------------------------------------
|        imaginary/digits-of-e2    -2.16%
|                imaginary/rfib    -0.15%
|                    real/fluid    -0.10%
|                   real/gamteb    -1.47%
|                       real/gg    -0.20%
|                 real/maillist    +0.19%
|                      real/pic    -0.23%
|                      real/scs    -0.43%
|               shootout/n-body    -0.41%
|        shootout/spectral-norm    -0.12%
+========================================
|                     geom mean    -0.05%

Pleasingly, overall executable size is down by just over 1%.

Compile times (in perf/compiler) wobble around a bit +/- 0.5%, but the
geometric mean is -0.1% which seems good.

- - - - -
e4d137bb by Simon Peyton Jones at 2024-02-05T17:58:33-05:00
Add Note [Bangs in Integer functions]

...to document the bangs in the functions in GHC.Num.Integer

- - - - -
ce90f12f by Andrei Borzenkov at 2024-02-05T17:59:09-05:00
Hide WARNING/DEPRECATED namespacing under -XExplicitNamespaces (#24396)

- - - - -
e2ea933f by Simon Peyton Jones at 2024-02-06T10:12:04-05:00
Refactoring in preparation for lazy skolemisation

* Make HsMatchContext and HsStmtContext be parameterised over the
  function name itself, rather than over the pass.
  See [mc_fun field of FunRhs] in Language.Haskell.Syntax.Expr
    - Replace types
        HsMatchContext GhcPs --> HsMatchContextPs
        HsMatchContext GhcRn --> HsMatchContextRn
        HsMatchContext GhcTc --> HsMatchContextRn  (sic! not Tc)
        HsStmtContext  GhcRn --> HsStmtContextRn
    - Kill off convertHsMatchCtxt

* Split GHC.Tc.Type.BasicTypes.TcSigInfo so that TcCompleteSig (describing
  a complete user-supplied signature) is its own data type.
    - Split TcIdSigInfo(CompleteSig, PartialSig) into
        TcCompleteSig(CSig)
        TcPartialSig(PSig)
    - Use TcCompleteSig in tcPolyCheck, CheckGen
    - Rename types and data constructors:
        TcIdSigInfo         --> TcIdSig
        TcPatSynInfo(TPSI)  --> TcPatSynSig(PatSig)
    - Shuffle around helper functions:
        tcSigInfoName           (moved to GHC.Tc.Types.BasicTypes)
        completeSigPolyId_maybe (moved to GHC.Tc.Types.BasicTypes)
        tcIdSigName             (inlined and removed)
        tcIdSigLoc              (introduced)
    - Rearrange the pattern match in chooseInferredQuantifiers

* Rename functions and types:
    tcMatchesCase         --> tcCaseMatches
    tcMatchesFun          --> tcFunBindMatches
    tcMatchLambda         --> tcLambdaMatches
    tcPats                --> tcMatchPats
    matchActualFunTysRho  --> matchActualFunTys
    matchActualFunTySigma --> matchActualFunTy

* Add HasDebugCallStack constraints to:
    mkBigCoreVarTupTy, mkBigCoreTupTy, boxTy,
    mkPiTy, mkPiTys, splitAppTys, splitTyConAppNoView_maybe

* Use `penv` from the outer context in the inner loop of
  GHC.Tc.Gen.Pat.tcMultiple

* Move tcMkVisFunTy, tcMkInvisFunTy, tcMkScaledFunTys down the file,
  factor out and export tcMkScaledFunTy.

* Move isPatSigCtxt down the file.

* Formatting and comments

Co-authored-by: Vladislav Zavialov <vlad.z.4096 at gmail.com>

- - - - -
f5d3e03c by Andrei Borzenkov at 2024-02-06T10:12:04-05:00
Lazy skolemisation for @a-binders (#17594)

This patch is a preparation for @a-binders implementation.  The main changes are:

* Skolemisation is now prepared to deal with @binders.
  See Note [Skolemisation overview] in GHC.Tc.Utils.Unify.
  Most of the action is in
    - Utils.Unify.matchExpectedFunTys
    - Gen.Pat.tcMatchPats
    - Gen.Expr.tcPolyExprCheck
    - Gen.Binds.tcPolyCheck

Some accompanying refactoring:

* I found that funTyConAppTy_maybe was doing a lot of allocation, and
  rejigged userTypeError_maybe to avoid calling it.

- - - - -
532993c8 by Zubin Duggal at 2024-02-06T10:12:41-05:00
driver: Really don't lose track of nodes when we fail to resolve cycles

This fixes a bug in 8db8d2fd1c881032b1b360c032b6d9d072c11723, where we could lose
track of acyclic components at the start of an unresolved cycle. We now ensure we
never loose track of any of these components.

As T24275 demonstrates, a "cyclic" SCC might not really be a true SCC:

When viewed without boot files, we have a single SCC

```
[REC main:T24275B [main:T24275B {-# SOURCE #-},
                   main:T24275A {-# SOURCE #-}]
     main:T24275A [main:T24275A {-# SOURCE #-}]]
```

But with boot files this turns into

```
[NONREC main:T24275B {-# SOURCE #-} [],
 REC main:T24275B [main:T24275B {-# SOURCE #-},
                   main:T24275A {-# SOURCE #-}]
    main:T24275A {-# SOURCE #-} [main:T24275B],
 NONREC main:T24275A [main:T24275A {-# SOURCE #-}]]
```

Note that this is truly not an SCC, as no nodes are reachable from T24275B.hs-boot.
However, we treat this entire group as a single "SCC" because it seems so when we
analyse the graph without taking boot files into account.

Indeed, we must return a single ResolvedCycle element in the BuildPlan for this
as described in Note [Upsweep].

However, since after resolving this is not a true SCC anymore, `findCycle` fails
to find a cycle and we have a sub-optimal error message as a result.

To handle this, I extended `findCycle` to not assume its input is an SCC, and to
try harder to find cycles in its input.

Fixes #24275

- - - - -
b35dd613 by Zubin Duggal at 2024-02-06T10:13:17-05:00
GHCi: Lookup breakpoint CCs in the correct module

We need to look up breakpoint CCs in the module that the breakpoint
points to, and not the current module.

Fixes #24327

- - - - -
b09e6958 by Zubin Duggal at 2024-02-06T10:13:17-05:00
testsuite: Add test for #24327

- - - - -
569b4c10 by doyougnu at 2024-02-07T03:06:26-05:00
ts: add compile_artifact, ignore_extension flag

In b521354216f2821e00d75f088d74081d8b236810 the testsuite gained the
capability to collect generic metrics. But this assumed that the test
was not linking and producing artifacts and we only wanted to track
object files, interface files, or build artifacts from the compiler
build. However, some backends, such as the JS backend, produce artifacts when
compiling, such as the jsexe directory which we want to track.

This patch:

- tweaks the testsuite to collect generic metrics on any build artifact
in the test directory.

- expands the exe_extension function to consider windows and adds the
ignore_extension flag.

- Modifies certain tests to add the ignore_extension flag. Tests such as
heaprof002 expect a .ps file, but on windows without ignore_extensions
the testsuite will look for foo.exe.ps. Hence the flag.

- adds the size_hello_artifact test

- - - - -
75a31379 by doyougnu at 2024-02-07T03:06:26-05:00
ts: add wasm_arch, heapprof002 wasm extension

- - - - -
c9731d6d by Rodrigo Mesquita at 2024-02-07T03:07:03-05:00
Synchronize bindist configure for #24324

In cdddeb0f1280b40cc194028bbaef36e127175c4c, we set up a
workaround for #24324 in the in-tree configure script, but forgot to
update the bindist configure script accordingly. This updates it.

- - - - -
d309f4e7 by Matthew Pickering at 2024-02-07T03:07:38-05:00
distrib/configure: Fix typo in CONF_GCC_LINKER_OPTS_STAGE2 variable

Instead we were setting CONF_GCC_LINK_OPTS_STAGE2 which meant that we
were missing passing `--target` when invoking the linker.

Fixes #24414

- - - - -
77db84ab by Ben Gamari at 2024-02-08T00:35:22-05:00
llvmGen: Adapt to allow use of new pass manager.

We now must use `-passes` in place of `-O<n>` due to #21936.

Closes #21936.

- - - - -
3c9ddf97 by Matthew Pickering at 2024-02-08T00:35:59-05:00
testsuite: Mark length001 as fragile on javascript

Modifying the timeout multiplier is not a robust way to get this test to
reliably fail. Therefore we mark it as fragile until/if javascript ever
supports the stack limit.

- - - - -
20b702b5 by Matthew Pickering at 2024-02-08T00:35:59-05:00
Javascript: Don't filter out rtsDeps list

This logic appears to be incorrect as it would drop any dependency which
was not in a direct dependency of the package being linked.

In the ghc-internals split this started to cause errors because
`ghc-internal` is not a direct dependency of most packages, and hence
important symbols to keep which are hard coded into the js runtime were
getting dropped.

- - - - -
2df96366 by Ben Gamari at 2024-02-08T00:35:59-05:00
base: Cleanup whitespace in cbits

- - - - -
44f6557a by Ben Gamari at 2024-02-08T00:35:59-05:00
Move `base` to `ghc-internal`

Here we move a good deal of the implementation of `base` into a new
package, `ghc-internal` such that it can be evolved independently
from the user-visible interfaces of `base`.

While we want to isolate implementation from interfaces, naturally, we
would like to avoid turning `base` into a mere set of module re-exports.
However, this is a non-trivial undertaking for a variety of reasons:

 * `base` contains numerous known-key and wired-in things, requiring
   corresponding changes in the compiler

 * `base` contains a significant amount of C code and corresponding
   autoconf logic, which is very fragile and difficult to break apart

 * `base` has numerous import cycles, which are currently dealt with via
   carefully balanced `hs-boot` files

 * We must not break existing users

To accomplish this migration, I tried the following approaches:

* [Split-GHC.Base]: Break apart the GHC.Base knot to allow incremental
  migration of modules into ghc-internal: this knot is simply too
  intertwined to be easily pulled apart, especially given the rather
  tricky import cycles that it contains)

* [Move-Core]: Moving the "core" connected component of base (roughly
  150 modules) into ghc-internal. While the Haskell side of this seems
  tractable, the C dependencies are very subtle to break apart.

* [Move-Incrementally]:

  1. Move all of base into ghc-internal
  2. Examine the module structure and begin moving obvious modules (e.g.
     leaves of the import graph) back into base
  3. Examine the modules remaining in ghc-internal, refactor as necessary
     to facilitate further moves
  4. Go to (2) iterate until the cost/benefit of further moves is
     insufficient to justify continuing
  5. Rename the modules moved into ghc-internal to ensure that they don't
     overlap with those in base
  6. For each module moved into ghc-internal, add a shim module to base
     with the declarations which should be exposed and any requisite
     Haddocks (thus guaranteeing that base will be insulated from changes
     in the export lists of modules in ghc-internal

Here I am using the [Move-Incrementally] approach, which is empirically
the least painful of the unpleasant options above

Bumps haddock submodule.

Metric Decrease:
    haddock.Cabal
    haddock.base
Metric Increase:
    MultiComponentModulesRecomp
    T16875
    size_hello_artifact

- - - - -
e8fb2451 by Vladislav Zavialov at 2024-02-08T00:36:36-05:00
Haddock comments on infix constructors (#24221)

Rewrite the `HasHaddock` instance for `ConDecl GhcPs` to account for
infix constructors.

This change fixes a Haddock regression (introduced in 19e80b9af252)
that affected leading comments on infix data constructor declarations:

	-- | Docs for infix constructor
	| Int :* Bool

The comment should be associated with the data constructor (:*), not
with its left-hand side Int.

- - - - -
9060d55b by Ben Gamari at 2024-02-08T00:37:13-05:00
Add os-string as a boot package

Introduces `os-string` submodule. This will be necessary for
`filepath-1.5`.

- - - - -
9d65235a by Ben Gamari at 2024-02-08T00:37:13-05:00
gitignore: Ignore .hadrian_ghci_multi/

- - - - -
d7ee12ea by Ben Gamari at 2024-02-08T00:37:13-05:00
hadrian: Set -this-package-name

When constructing the GHC flags for a package Hadrian must take care to
set `-this-package-name` in addition to `-this-unit-id`. This hasn't
broken until now as we have not had any uses of qualified package
imports. However, this will change with `filepath-1.5` and the
corresponding `unix` bump, breaking `hadrian/multi-ghci`.

- - - - -
f2dffd2e by Ben Gamari at 2024-02-08T00:37:13-05:00
Bump filepath to 1.5.0.0

Required bumps of the following submodules:

 * `directory`
 * `filepath`
 * `haskeline`
 * `process`
 * `unix`
 * `hsc2hs`
 * `Win32`
 * `semaphore-compat`

and the addition of `os-string` as a boot package.

- - - - -
ab533e71 by Matthew Pickering at 2024-02-08T00:37:50-05:00
Use specific clang assembler when compiling with -fllvm

There are situations where LLVM will produce assembly which older gcc
toolchains can't handle. For example on Deb10, it seems that LLVM >= 13
produces assembly which the default gcc doesn't support.

A more robust solution in the long term is to require a specific LLVM
compatible assembler when using -fllvm.

Fixes #16354

- - - - -
c32b6426 by Matthew Pickering at 2024-02-08T00:37:50-05:00
Update CI images with LLVM 15, ghc-9.6.4 and cabal-install-3.10.2.0

- - - - -
5fcd58be by Matthew Pickering at 2024-02-08T00:37:50-05:00
Update bootstrap plans for 9.4.8 and 9.6.4

- - - - -
707a32f5 by Matthew Pickering at 2024-02-08T00:37:50-05:00
Add alpine 3_18 release job

This is mainly experimental and future proofing to enable a smooth
transition to newer alpine releases once 3_12 is too old.

- - - - -
c37931b3 by John Ericson at 2024-02-08T06:39:05-05:00
Generate LLVM min/max bound policy via Hadrian

Per #23966, I want the top-level configure to only generate
configuration data for Hadrian, not do any "real" tasks on its own.
This is part of that effort --- one less file generated by it.

(It is still done with a `.in` file, so in a future world non-Hadrian
also can easily create this file.)

Split modules:

- GHC.CmmToLlvm.Config
- GHC.CmmToLlvm.Version
- GHC.CmmToLlvm.Version.Bounds
- GHC.CmmToLlvm.Version.Type

This also means we can get rid of the silly `unused.h` introduced in
!6803 / 7dfcab2f4bcb7206174ea48857df1883d05e97a2 as temporary kludge.

Part of #23966

- - - - -
9f987235 by Apoorv Ingle at 2024-02-08T06:39:42-05:00
Enable mdo statements to use HsExpansions
Fixes: #24411
Added test T24411 for regression

- - - - -
f8429266 by Jade at 2024-02-08T14:56:50+01:00
Adjust test for ghc MR !10993

- - - - -
762b2120 by Jade at 2024-02-08T15:17:15+00:00
Improve Monad, Functor & Applicative docs

This patch aims to improve the documentation of Functor, Applicative,
Monad and related symbols. The main goal is to make it more consistent
and make accessible. See also: !10979 (closed) and !10985 (closed)

Ticket #17929

Updates haddock submodule

- - - - -
151770ca by Josh Meredith at 2024-02-10T14:28:15-05:00
JavaScript codegen: Use GHC's tag inference where JS backend-specific evaluation inference was previously used (#24309)

- - - - -
2e880635 by Zubin Duggal at 2024-02-10T14:28:51-05:00
ci: Allow release-hackage-lint to fail

Otherwise it blocks the ghcup metadata pipeline from running.

- - - - -
b0293f78 by Matthew Pickering at 2024-02-10T14:29:28-05:00
rts: eras profiling mode

The eras profiling mode is useful for tracking the life-time of
closures. When a closure is written, the current era is recorded in the
profiling header. This records the era in which the closure was created.

* Enable with -he
* User mode: Use functions ghc-experimental module GHC.Profiling.Eras to modify the era
* Automatically: --automatic-era-increment, increases the user era on major
  collections
* The first era is era 1
* -he<era> can be used with other profiling modes to select a specific
  era

If you just want to record the era but not to perform heap profiling you
can use `-he --no-automatic-heap-samples`.

https://well-typed.com/blog/2024/01/ghc-eras-profiling/

Fixes #24332

- - - - -
be674a2c by Jade at 2024-02-10T14:30:04-05:00
Adjust error message for trailing whitespace in as-pattern.

Fixes #22524

- - - - -
53ef83f9 by doyougnu at 2024-02-10T14:30:47-05:00
gitlab: js: add codeowners

Fixes:
- #24409

Follow on from:
- #21078 and MR !9133
- When we added the JS backend this was forgotten. This patch adds the
rightful codeowners.

- - - - -
8bbe12f2 by Matthew Pickering at 2024-02-10T14:31:23-05:00
Bump CI images so that alpine3_18 image includes clang15

The only changes here are that clang15 is now installed on the
alpine-3_18 image.

- - - - -
df9fd9f7 by Sylvain Henry at 2024-02-12T12:18:42-05:00
JS: handle stored null StablePtr

Some Haskell codes unsafely cast StablePtr into ptr to compare against
NULL. E.g. in direct-sqlite:

  if castStablePtrToPtr aggStPtr /= nullPtr then

where `aggStPtr` is read (`peek`) from zeroed memory initially.

We fix this by giving these StablePtr the same representation as other
null pointers. It's safe because StablePtr at offset 0 is unused (for
this exact reason).

- - - - -
55346ede by Sylvain Henry at 2024-02-12T12:18:42-05:00
JS: disable MergeObjsMode test

This isn't implemented for JS backend objects.

- - - - -
aef587f6 by Sylvain Henry at 2024-02-12T12:18:42-05:00
JS: add support for linking C sources

Support linking C sources with JS output of the JavaScript backend.
See the added documentation in the users guide.

The implementation simply extends the JS linker to use the objects (.o)
that were already produced by the emcc compiler and which were filtered
out previously. I've also added some options to control the link with C
functions (see the documentation about pragmas).

With this change I've successfully compiled the direct-sqlite package
which embeds the sqlite.c database code. Some wrappers are still
required (see the documentation about wrappers) but everything generic
enough to be reused for other libraries have been integrated into
rts/js/mem.js.

- - - - -
b71b392f by Sylvain Henry at 2024-02-12T12:18:42-05:00
JS: avoid EMCC logging spurious failure

emcc would sometime output messages like:

  cache:INFO: generating system asset: symbol_lists/424b44514e43d789148e69e4e7d1c7fdc0350b79.json... (this will be cached in "/emsdk/upstream/emscripten/cache/symbol_lists/424b44514e43d789148e69e4e7d1c7fdc0350b79.json" for subsequent builds)
  cache:INFO:  - ok

Cf https://github.com/emscripten-core/emscripten/issues/18607

This breaks our tests matching the stderr output. We avoid this by setting EMCC_LOGGING=0

- - - - -
ff2c0cc9 by Simon Peyton Jones at 2024-02-12T12:19:17-05:00
Remove a dead comment

Just remove an out of date block of commented-out code, and tidy up
the relevant Notes.  See #8317.

- - - - -
bedb4f0d by Teo Camarasu at 2024-02-12T18:50:33-05:00
nonmoving: Add support for heap profiling

Add support for heap profiling while using the nonmoving collector.

We greatly simply the implementation by disabling concurrent collection for
GCs when heap profiling is enabled. This entails that the marked objects on
the nonmoving heap are exactly the live objects.

Note that we match the behaviour for live bytes accounting by taking the size
of objects on the nonmoving heap to be that of the segment's block
rather than the object itself.

Resolves #22221

- - - - -
d0d5acb5 by Teo Camarasu at 2024-02-12T18:51:09-05:00
doc: Add requires prof annotation to options that require it

Resolves #24421

- - - - -
6d1e2386 by Alan Zimmerman at 2024-02-13T22:00:28+03:00
EPA: Match changes to HsParTy and HsFunTy

- - - - -
57bb8c92 by Cheng Shao at 2024-02-13T14:07:49-05:00
deriveConstants: add needed constants for wasm backend

This commit adds needed constants to deriveConstants. They are used by
RTS code in the wasm backend to support the JSFFI logic.

- - - - -
615eb855 by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: make genSym use C-based atomic increment on non-JS 32-bit platforms

The pure Haskell implementation causes i386 regression in unrelated
work that can be fixed by using C-based atomic increment, see added
comment for details.

- - - - -
a9918891 by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: allow JSFFI for wasm32

This commit allows the javascript calling convention to be used when
the target platform is wasm32.

- - - - -
8771a53b by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: allow boxed JSVal as a foreign type

This commit allows the boxed JSVal type to be used as a foreign
argument/result type.

- - - - -
053c92b3 by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: ensure ctors have the right priority on wasm32

This commit fixes the priorities of ctors generated by GHC codegen on
wasm32, see the referred note for details.

- - - - -
b7942e0a by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: add JSFFI desugar logic for wasm32

This commit adds JSFFI desugar logic for the wasm backend.

- - - - -
2c1dca76 by Cheng Shao at 2024-02-13T14:07:49-05:00
compiler: add JavaScriptFFI to supported extension list on wasm32

This commit adds JavaScriptFFI as a supported extension when the
target platform is wasm32.

- - - - -
9ad0e2b4 by Cheng Shao at 2024-02-13T14:07:49-05:00
rts/ghc-internal: add JSFFI support logic for wasm32

This commit adds rts/ghc-internal logic to support the wasm backend's
JSFFI functionality.

- - - - -
e9ebea66 by Cheng Shao at 2024-02-13T14:07:49-05:00
ghc-internal: fix threadDelay for wasm in browsers

This commit fixes broken threadDelay for wasm when it runs in
browsers, see added note for detailed explanation.

- - - - -
f85f3fdb by Cheng Shao at 2024-02-13T14:07:49-05:00
utils: add JSFFI utility code

This commit adds JavaScript util code to utils to support the wasm
backend's JSFFI functionality:

- jsffi/post-link.mjs, a post-linker to process the linked wasm module
  and emit a small complement JavaScript ESM module to be used with it
  at runtime
- jsffi/prelude.js, a tiny bit of prelude code as the JavaScript side
  of runtime logic
- jsffi/test-runner.mjs, run the jsffi test cases

Co-authored-by: amesgen <amesgen at amesgen.de>

- - - - -
77e91500 by Cheng Shao at 2024-02-13T14:07:49-05:00
hadrian: distribute jsbits needed for wasm backend's JSFFI support

The post-linker.mjs/prelude.js files are now distributed in the
bindist libdir, so when using the wasm backend's JSFFI feature, the
user wouldn't need to fetch them from a ghc checkout manually.

- - - - -
c47ba1c3 by Cheng Shao at 2024-02-13T14:07:49-05:00
testsuite: add opts.target_wrapper

This commit adds opts.target_wrapper which allows overriding the
target wrapper on a per test case basis when testing a cross target.
This is used when testing the wasm backend's JSFFI functionality; the
rest of the cases are tested using wasmtime, though the jsffi cases
are tested using the node.js based test runner.

- - - - -
8e048675 by Cheng Shao at 2024-02-13T14:07:49-05:00
testsuite: T22774 should work for wasm JSFFI

T22774 works since the wasm backend now supports the JSFFI feature.

- - - - -
1d07f9a6 by Cheng Shao at 2024-02-13T14:07:49-05:00
testsuite: add JSFFI test cases for wasm backend

This commit adds a few test cases for the wasm backend's JSFFI
functionality, as well as a simple README to instruct future
contributors to add new test cases.

- - - - -
b8997080 by Cheng Shao at 2024-02-13T14:07:49-05:00
docs: add documentation for wasm backend JSFFI

This commit adds changelog and user facing documentation for the wasm
backend's JSFFI feature.

- - - - -
ffeb000d by David Binder at 2024-02-13T14:08:30-05:00
Add tests from libraries/process/tests and libraries/Win32/tests to GHC

These tests were previously part of the libraries, which themselves are
submodules of the GHC repository. This commit moves the tests directly
to the GHC repository.

- - - - -
5a932cf2 by David Binder at 2024-02-13T14:08:30-05:00
Do not execute win32 tests on non-windows runners

- - - - -
500d8cb8 by Jade at 2024-02-13T14:09:07-05:00
prevent GHCi (and runghc) from suggesting other symbols when not finding main

Fixes: #23996

- - - - -
b19ec331 by Cheng Shao at 2024-02-13T14:09:46-05:00
rts: update xxHash to v0.8.2

- - - - -
4a97bdb8 by Cheng Shao at 2024-02-13T14:09:46-05:00
rts: use XXH3_64bits hash on all 64-bit platforms

This commit enables XXH3_64bits hash to be used on all 64-bit
platforms. Previously it was only enabled on x86_64, so platforms like
aarch64 silently falls back to using XXH32 which degrades the hashing
function quality.

- - - - -
ee01de7d by Cheng Shao at 2024-02-13T14:09:46-05:00
rts: define XXH_INLINE_ALL

This commit cleans up how we include the xxhash.h header and only
define XXH_INLINE_ALL, which is sufficient to inline the xxHash
functions without symbol collision.

- - - - -
0e01e1db by Alan Zimmerman at 2024-02-14T02:13:22-05:00
EPA: Move EpAnn out of extension points

Leaving a few that are too tricky, maybe some other time.

Also
 - remove some unneeded helpers from Parser.y
 - reduce allocations with strictness annotations

Updates haddock submodule

Metric Decrease:
    parsing001

- - - - -
de589554 by Andreas Klebinger at 2024-02-14T02:13:59-05:00
Fix ffi callbacks with >6 args and non-64bit args.

Check for ptr/int arguments rather than 64-bit width arguments when counting
integer register arguments.
The old approach broke when we stopped using exclusively W64-sized types to represent
sub-word sized integers.

Fixes #24314

- - - - -
9c588f19 by Fendor at 2024-02-14T11:05:36+01:00
Adapt to GHC giving better Name's for linking

- - - - -
325b7613 by Ben Gamari at 2024-02-14T14:27:45-05:00
rts/EventLog: Place eliminate duplicate strlens

Previously many of the `post*` implementations would first compute the
length of the event's strings in order to determine the event length.
Later we would then end up computing the length yet again in
`postString`. Now we instead pass the string length to `postStringLen`,
avoiding the repeated work.

- - - - -
8aafa51c by Ben Gamari at 2024-02-14T14:27:46-05:00
rts/eventlog: Place upper bound on IPE string field lengths

The strings in IPE events may be of unbounded length. Limit the lengths
of these fields to 64k characters to ensure that we don't exceed the
maximum event length.

- - - - -
0e60d52c by Zubin Duggal at 2024-02-14T14:27:46-05:00
rts: drop unused postString function

- - - - -
d8d1333a by Cheng Shao at 2024-02-14T14:28:23-05:00
compiler/rts: fix wasm unreg regression

This commit fixes two wasm unreg regressions caught by a nightly
pipeline:

- Unknown stg_scheduler_loopzh symbol when compiling scheduler.cmm
- Invalid _hs_constructor(101) function name when handling ctor

- - - - -
264a4fa9 by Owen Shepherd at 2024-02-15T09:41:06-05:00
feat: Add sortOn to Data.List.NonEmpty

Adds `sortOn` to `Data.List.NonEmpty`, and adds
comments describing when to use it, compared to
`sortWith` or `sortBy . comparing`.

The aim is to smooth out the API between
`Data.List`, and `Data.List.NonEmpty`.

This change has been discussed in the
[clc issue](https://github.com/haskell/core-libraries-committee/issues/227).

- - - - -
b57200de by Fendor at 2024-02-15T09:41:47-05:00
Prefer RdrName over OccName for looking up locations in doc renaming step

Looking up by OccName only does not take into account when functions are
only imported in a qualified way.

Fixes issue #24294

Bump haddock submodule to include regression test

- - - - -
8ad02724 by Luite Stegeman at 2024-02-15T17:33:32-05:00
JS: add simple optimizer

The simple optimizer reduces the size of the code generated by the
JavaScript backend without the complexity and performance penalty
of the optimizer in GHCJS.

Also see #22736

Metric Decrease:
    libdir
    size_hello_artifact

- - - - -
20769b36 by Matthew Pickering at 2024-02-15T17:34:07-05:00
base: Expose `--no-automatic-time-samples` in `GHC.RTS.Flags` API

This patch builds on 5077416e12cf480fb2048928aa51fa4c8fc22cf1 and
modifies the base API to reflect the new RTS flag.

CLC proposal #243 - https://github.com/haskell/core-libraries-committee/issues/243

Fixes #24337

- - - - -
778e1db3 by Andrei Borzenkov at 2024-02-16T16:12:07+03:00
Namespace specifiers for fixity signatures

- - - - -
08031ada by Teo Camarasu at 2024-02-16T13:37:00-05:00
base: export System.Mem.performBlockingMajorGC

The corresponding C function was introduced in
ba73a807edbb444c49e0cf21ab2ce89226a77f2e. As part of #22264.

Resolves #24228

The CLC proposal was disccused at: https://github.com/haskell/core-libraries-committee/issues/230

Co-authored-by: Ben Gamari <bgamari.foss at gmail.com>

- - - - -
1f534c2e by Florian Weimer at 2024-02-16T13:37:42-05:00
Fix C output for modern C initiative

GCC 14 on aarch64 rejects the C code written by GHC with this kind of
error:

   error: assignment to ‘ffi_arg’ {aka ‘long unsigned int’} from ‘HsPtr’ {aka ‘void *’} makes integer from pointer without a cast [-Wint-conversion]
         68 | *(ffi_arg*)resp = cret;
            |                 ^

Add the correct cast.

For more information on this see:
https://fedoraproject.org/wiki/Changes/PortingToModernC

Tested-by: Richard W.M. Jones <rjones at redhat.com>

- - - - -
5d3f7862 by Matthew Craven at 2024-02-16T13:38:18-05:00
Bump bytestring submodule to 0.12.1.0

- - - - -
902ebcc2 by Ian-Woo Kim at 2024-02-17T06:01:01-05:00
Add missing BCO handling in scavenge_one.

- - - - -
97d26206 by Sylvain Henry at 2024-02-17T06:01:44-05:00
Make cast between words and floats real primops (#24331)

First step towards fixing #24331. Replace foreign prim imports with real
primops.

- - - - -
a40e4781 by Sylvain Henry at 2024-02-17T06:01:44-05:00
Perf: add constant folding for bitcast between float and word (#24331)

- - - - -
5fd2c00f by Sylvain Henry at 2024-02-17T06:01:44-05:00
Perf: replace stack checks with assertions in casting primops

There are RESERVED_STACK_WORDS free words (currently 21) on the stack,
so omit the checks.

Suggested by Cheng Shao.

- - - - -
401dfe7b by Sylvain Henry at 2024-02-17T06:01:44-05:00
Reexport primops from GHC.Float + add deprecation

- - - - -
4ab48edb by Ben Gamari at 2024-02-17T06:02:21-05:00
rts/Hash: Don't iterate over chunks if we don't need to free data

When freeing a `HashTable` there is no reason to walk over the hash list
before freeing it if the user has not given us a `dataFreeFun`.

Noticed while looking at #24410.

- - - - -
bd5a1f91 by Cheng Shao at 2024-02-17T06:03:00-05:00
compiler: add SEQ_CST fence support

In addition to existing Acquire/Release fences, this commit adds
SEQ_CST fence support to GHC, allowing Cmm code to explicitly emit a
fence that enforces total memory ordering. The following logic is
added:

- The MO_SeqCstFence callish MachOp
- The %prim fence_seq_cst() Cmm syntax and the SEQ_CST_FENCE macro in Cmm.h
- MO_SeqCstFence lowering logic in every single GHC codegen backend

- - - - -
2ce2a493 by Cheng Shao at 2024-02-17T06:03:38-05:00
testsuite: fix hs_try_putmvar002 for targets without pthread.h

hs_try_putmvar002 includes pthread.h and doesn't work on targets
without this header (e.g. wasm32). It doesn't need to include this
header at all. This was previously unnoticed by wasm CI, though recent
toolchain upgrade brought in upstream changes that completely removes
pthread.h in the single-threaded wasm32-wasi sysroot, therefore we
need to handle that change.

- - - - -
1fb3974e by Cheng Shao at 2024-02-17T06:03:38-05:00
ci: bump ci-images to use updated wasm image

This commit bumps our ci-images revision to use updated wasm image.

- - - - -
56e3f097 by Andrew Lelechenko at 2024-02-17T06:04:13-05:00
Bump submodule text to 2.1.1

T17123 allocates less because of improvements to Data.Text.concat in 1a6a06a.

Metric Decrease:
    T17123

- - - - -
a7569495 by Cheng Shao at 2024-02-17T06:04:51-05:00
rts: remove redundant rCCCS initialization

This commit removes the redundant logic of initializing each
Capability's rCCCS to CCS_SYSTEM in initProfiling(). Before
initProfiling() is called during RTS startup, each Capability's rCCCS
has already been assigned CCS_SYSTEM when they're first initialized.

- - - - -
7a0293cc by Ben Gamari at 2024-02-19T07:11:00-05:00
Drop dependence on `touch`

This drops GHC's dependence on the `touch` program, instead implementing
it within GHC. This eliminates an external dependency and means that we
have one fewer program to keep track of in the `configure` script

- - - - -
0dbd729e by Andrei Borzenkov at 2024-02-19T07:11:37-05:00
Parser, renamer, type checker for @a-binders (#17594)

GHC Proposal 448 introduces binders for invisible type arguments
(@a-binders) in various contexts. This patch implements @-binders
in lambda patterns and function equations:

  {-# LANGUAGE TypeAbstractions #-}

  id1 :: a -> a
  id1 @t x = x :: t      -- @t-binder on the LHS of a function equation

  higherRank :: (forall a. (Num a, Bounded a) => a -> a) -> (Int8, Int16)
  higherRank f = (f 42, f 42)

  ex :: (Int8, Int16)
  ex = higherRank (\ @a x -> maxBound @a - x )
                         -- @a-binder in a lambda pattern in an argument
                         -- to a higher-order function

Syntax
------

To represent those @-binders in the AST, the list of patterns in Match
now uses ArgPat instead of Pat:

  data Match p body
     = Match {
         ...
-        m_pats  :: [LPat p],
+        m_pats  :: [LArgPat p],
         ...
   }

+ data ArgPat pass
+   = VisPat (XVisPat pass) (LPat pass)
+   | InvisPat (XInvisPat pass) (HsTyPat (NoGhcTc pass))
+   | XArgPat !(XXArgPat pass)

The VisPat constructor represents patterns for visible arguments,
which include ordinary value-level arguments and required type arguments
(neither is prefixed with a @), while InvisPat represents invisible type
arguments (prefixed with a @).

Parser
------

In the grammar (Parser.y), the lambda and lambda-cases productions of
aexp non-terminal were updated to accept argpats instead of apats:

  aexp : ...
-        | '\\' apats '->' exp
+        | '\\' argpats '->' exp
         ...
-        | '\\' 'lcases' altslist(apats)
+        | '\\' 'lcases' altslist(argpats)
         ...

+ argpat : apat
+        | PREFIX_AT atype

Function left-hand sides did not require any changes to the grammar, as
they were already parsed with productions capable of parsing @-binders.
Those binders were being rejected in post-processing (isFunLhs), and now
we accept them.

In Parser.PostProcess, patterns are constructed with the help of
PatBuilder, which is used as an intermediate data structure when
disambiguating between FunBind and PatBind. In this patch we define
ArgPatBuilder to accompany PatBuilder. ArgPatBuilder is a short-lived
data structure produced in isFunLhs and consumed in checkFunBind.

Renamer
-------

Renaming of @-binders builds upon prior work on type patterns,
implemented in 2afbddb0f24, which guarantees proper scoping and
shadowing behavior of bound type variables.

This patch merely defines rnLArgPatsAndThen to process a mix of visible
and invisible patterns:

+ rnLArgPatsAndThen :: NameMaker -> [LArgPat GhcPs] -> CpsRn [LArgPat GhcRn]
+ rnLArgPatsAndThen mk = mapM (wrapSrcSpanCps rnArgPatAndThen) where
+   rnArgPatAndThen (VisPat x p)    = ... rnLPatAndThen ...
+   rnArgPatAndThen (InvisPat _ tp) = ... rnHsTyPat ...

Common logic between rnArgPats and rnPats is factored out into the
rn_pats_general helper.

Type checker
------------

Type-checking of @-binders builds upon prior work on lazy skolemisation,
implemented in f5d3e03c56f.

This patch extends tcMatchPats to handle @-binders. Now it takes and
returns a list of LArgPat rather than LPat:

  tcMatchPats ::
              ...
-             -> [LPat GhcRn]
+             -> [LArgPat GhcRn]
              ...
-             -> TcM ([LPat GhcTc], a)
+             -> TcM ([LArgPat GhcTc], a)

Invisible binders in the Match are matched up with invisible (Specified)
foralls in the type. This is done with a new clause in the `loop` worker
of tcMatchPats:

  loop :: [LArgPat GhcRn] -> [ExpPatType] -> TcM ([LArgPat GhcTc], a)
  loop (L l apat : pats) (ExpForAllPatTy (Bndr tv vis) : pat_tys)
    ...
    -- NEW CLAUSE:
    | InvisPat _ tp <- apat, isSpecifiedForAllTyFlag vis
    = ...

In addition to that, tcMatchPats no longer discards type patterns. This
is done by filterOutErasedPats in the desugarer instead.

x86_64-linux-deb10-validate+debug_info
Metric Increase:
    MultiLayerModulesTH_OneShot

- - - - -
486979b0 by Jade at 2024-02-19T07:12:13-05:00
Add specialized sconcat implementation for Data.Monoid.First and Data.Semigroup.First

Approved CLC Proposal: https://github.com/haskell/core-libraries-committee/issues/246
Fixes: #24346

- - - - -
17e309d2 by John Ericson at 2024-02-19T07:12:49-05:00
Fix reST in users guide

It appears that aef587f65de642142c1dcba0335a301711aab951 wasn't valid syntax.

- - - - -
35b0ad90 by Brandon Chinn at 2024-02-19T07:13:25-05:00
Fix searching for errors in sphinx build

- - - - -
4696b966 by Cheng Shao at 2024-02-19T07:14:02-05:00
hadrian: fix wasm backend post linker script permissions

The post-link.mjs script was incorrectly copied and installed as a
regular data file without executable permission, this commit fixes it.

- - - - -
a6142e0c by Cheng Shao at 2024-02-19T07:14:40-05:00
testsuite: mark T23540 as fragile on i386

See #24449 for details.

- - - - -
249caf0d by Matthew Craven at 2024-02-19T20:36:09-05:00
Add @since annotation to Data.Data.mkConstrTag

- - - - -
cdd939e7 by Jade at 2024-02-19T20:36:46-05:00
Enhance documentation of Data.Complex

- - - - -
d04f384f by Ben Gamari at 2024-02-21T04:59:23-05:00
hadrian/bindist: Ensure that phony rules are marked as such

Otherwise make may not run the rule if file with the same name as the
rule happens to exist.

- - - - -
efcbad2d by Ben Gamari at 2024-02-21T04:59:23-05:00
hadrian: Generate HSC2HS_EXTRAS variable in bindist installation

We must generate the hsc2hs wrapper at bindist installation time since
it must contain `--lflag` and `--cflag` arguments which depend upon the
installation path.

The solution here is to substitute these variables in the configure
script (see mk/hsc2hs.in). This is then copied over a dummy wrapper in
the install rules.

Fixes #24050.

- - - - -
c540559c by Matthew Pickering at 2024-02-21T04:59:23-05:00
ci: Show --info for installed compiler

- - - - -
ab9281a2 by Matthew Pickering at 2024-02-21T04:59:23-05:00
configure: Correctly set --target flag for linker opts

Previously we were trying to use the FP_CC_SUPPORTS_TARGET with 4
arguments, when it only takes 3 arguments. Instead we need to use the
`FP_PROG_CC_LINKER_TARGET` function in order to set the linker flags.

Actually fixes #24414

- - - - -
9460d504 by Rodrigo Mesquita at 2024-02-21T04:59:59-05:00
configure: Do not override existing linker flags in FP_LD_NO_FIXUP_CHAINS

- - - - -
77629e76 by Andrei Borzenkov at 2024-02-21T05:00:35-05:00
Namespacing for fixity signatures (#14032)

Namespace specifiers were added to syntax of fixity signatures:
  - sigdecl ::= infix prec ops | ...
  + sigdecl ::= infix prec namespace_spec ops | ...

To preserve namespace during renaming MiniFixityEnv type
now has separate FastStringEnv fields for names that should be
on the term level and for name that should be on the type level.

makeMiniFixityEnv function was changed to fill MiniFixityEnv in the right way:
 - signatures without namespace specifiers fill both fields
 - signatures with 'data' specifier fill data field only
 - signatures with 'type' specifier fill type field only

Was added helper function lookupMiniFixityEnv that takes care about
looking for a name in an appropriate namespace.

Updates haddock submodule.

Metric Decrease:
    MultiLayerModulesTH_OneShot

- - - - -
84357d11 by Teo Camarasu at 2024-02-21T05:01:11-05:00
rts: only collect live words in nonmoving census when non-concurrent

This avoids segfaults when the mutator modifies closures as we examine
them.

Resolves #24393

- - - - -
9ca56dd3 by Ian-Woo Kim at 2024-02-21T05:01:53-05:00
mutex wrap in refreshProfilingCCSs

- - - - -
1387966a by Cheng Shao at 2024-02-21T05:02:32-05:00
rts: remove unused HAVE_C11_ATOMICS macro

This commit removes the unused HAVE_C11_ATOMICS macro. We used to have
a few places that have fallback paths when HAVE_C11_ATOMICS is not
defined, but that is completely redundant, since the
FP_CC_SUPPORTS__ATOMICS configure check will fail when the C compiler
doesn't support C11 style atomics. There are also many places (e.g. in
unreg backend, SMP.h, library cbits, etc) where we unconditionally use
C11 style atomics anyway which work in even CentOS 7 (gcc 4.8), the
oldest distro we test in our CI, so there's no value in keeping
HAVE_C11_ATOMICS.

- - - - -
0f40d68f by Andreas Klebinger at 2024-02-21T05:03:09-05:00
RTS: -Ds - make sure incall is non-zero before dereferencing it.

Fixes #24445

- - - - -
e5886de5 by Ben Gamari at 2024-02-21T05:03:44-05:00
rts/AdjustorPool: Use ExecPage abstraction

This is just a minor cleanup I found while reviewing the implementation.

- - - - -
826c5b47 by Torsten Schmits at 2024-02-21T13:17:05+01:00
rename GHC.Tuple.Prim to GHC.Tuple

- - - - -
09941666 by Adam Gundry at 2024-02-21T13:53:12+00:00
Define GHC2024 language edition (#24320)

See https://github.com/ghc-proposals/ghc-proposals/pull/613. Also
fixes #24343 and improves the documentation of language editions.

Co-authored-by: Joachim Breitner <mail at joachim-breitner.de>

- - - - -
2cff14d5 by Ben Gamari at 2024-02-22T09:35:56-05:00
Bump bounds

- - - - -
f49376b3 by Ben Gamari at 2024-02-22T09:35:56-05:00
Allow `@since` annotations in export lists

Here we extend Haddock to admit `@since` annotations in export lists.
These can be attached to most export list items (although not
subordinate lists). These annotations supercede the declaration's
`@since` annotation in produced Haddocks.

- - - - -
b5aa93df by Ben Gamari at 2024-02-22T12:09:06-05:00
Allow package-qualified @since declarations

- - - - -
8f5957f2 by Ben Gamari at 2024-02-22T13:55:19-05:00
Documentation changes from ghc-internal restructuring

Previously many declarations (e.g. `Int`) were declared to have a "home"
in `Prelude`. However, now Haddock instead chooses to put these in
more specific homes (e.g. `Data.Int`). Given that the "home" decision is
driven by heuristics and in general these changes seem
quite reasonable I am accepting them:

 * `Int` moved from `Prelude` to `Data.Int`
 * `(~)` moved from `Prelude` to `Data.Type.Equality`
 * `Type` moved from `GHC.Types` to `Data.Kind`
 * `Maybe` moved from `Prelude` to `Data.Maybe`
 * `Bool` moved from `Prelude` to `Data.Bool`
 * `Ordering` moved from `Prelude` to `Data.Ord`

As well, more identifiers are now hyperlinked; it's not immediately
clear *why*, but it is an improvement nevertheless.

- - - - -
ec33fec3 by Ben Gamari at 2024-02-22T20:36:24-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
5121a4ed by Ben Gamari at 2024-02-23T06:40:55-05:00
Allow docstrings after exports

Here we extend the parser and AST to preserve docstrings following
export items. We then extend Haddock to parse `@since` annotations in
such docstrings, allowing changes in export structure to be properly
documented.

Bumps haddock submodule.

- - - - -
30cfd251 by Torsten Schmits at 2024-02-24T13:00:42-05:00
rename GHC.Tuple.Prim to GHC.Tuple

- - - - -
0eb2265d by Hécate Moonlight at 2024-02-24T16:02:16-05:00
Improve the synopsis and description of base

- - - - -
2e36f5d2 by Jade at 2024-02-24T16:02:51-05:00
Error Messages: Properly align cyclic module error

Fixes: #24476

- - - - -
bbfb051c by Ben Gamari at 2024-02-24T19:10:23-05:00
Allow docstrings after exports

Here we extend the parser and AST to preserve docstrings following
export items. We then extend Haddock to parse `@since` annotations in
such docstrings, allowing changes in export structure to be properly
documented.

- - - - -
d8d6ad8c by Ben Gamari at 2024-02-24T19:10:23-05:00
ghc-internal: Move modules into GHC.Internal.* namespace

Bumps haddock submodule due to testsuite output changes.

- - - - -
a82af7cd by Ben Gamari at 2024-02-24T19:10:23-05:00
ghc-internal: Rewrite `@since ` to `@since base-`

These will be incrementally moved to the export sites in `base` where
possible.

- - - - -
ca3836e1 by Ben Gamari at 2024-02-24T19:10:23-05:00
base: Migrate Haddock `not-home` pragmas from `ghc-internal`

This ensures that we do not use `base` stub modules as declarations'
homes when not appropriate.

- - - - -
c8cf3e26 by Ben Gamari at 2024-02-24T19:10:23-05:00
base: Partially freeze exports of GHC.Base

Sadly there are still a few module reexports. However, at least we have
decoupled from the exports of `GHC.Internal.Base`.

- - - - -
272573c6 by Ben Gamari at 2024-02-24T19:10:23-05:00
Move Haddock named chunks

- - - - -
2d8a881d by Ben Gamari at 2024-02-24T19:10:23-05:00
Drop GHC.Internal.Data.Int

- - - - -
55c4c385 by Ben Gamari at 2024-02-24T19:10:23-05:00
compiler: Fix mention to `GHC....` modules in wasm desugaring

Really, these references should be via known-key names anyways. I have
fixed the proximate issue here but have opened #24472 to track the
additional needed refactoring.

- - - - -
64150911 by Ben Gamari at 2024-02-24T19:10:23-05:00
Accept performance shifts from ghc-internal restructure

As expected, Haddock now does more work. Less expected is that some
other testcases actually get faster, presumably due to less interface
file loading. As well, the size_hello_artifact test regressed a bit when
debug information is enabled due to debug information for the new stub
symbols.

Metric Decrease:
    T12227
    T13056
Metric Increase:
    haddock.Cabal
    haddock.base
    MultiLayerModulesTH_OneShot
    size_hello_artifact

- - - - -
317a915b by Ben Gamari at 2024-02-24T19:10:23-05:00
Expose GHC.Wasm.Prim from ghc-experimental

Previously this was only exposed from `ghc-internal` which violates our
agreement that users shall not rely on things exposed from that package.

Fixes #24479.

- - - - -
3bbd2bf2 by Ben Gamari at 2024-02-24T19:10:23-05:00
compiler/tc: Small optimisation of evCallStack

Don't lookupIds unless we actually need them.

- - - - -
3e5c9e3c by Ben Gamari at 2024-02-24T19:10:23-05:00
compiler/tc: Use toException instead of SomeException

- - - - -
125714a6 by Ben Gamari at 2024-02-24T19:10:23-05:00
base: Factor out errorBelch

This was useful when debugging

- - - - -
3d6aae7c by Ben Gamari at 2024-02-24T19:10:23-05:00
base: Clean up imports of GHC.Stack.CloneStack

- - - - -
6900306e by Ben Gamari at 2024-02-24T19:10:24-05:00
base: Move PrimMVar to GHC.Internal.MVar

- - - - -
28f8a148 by Ben Gamari at 2024-02-24T19:10:24-05:00
base: Move prettyCallStack to GHC.Internal.Stack

- - - - -
4892de47 by Ben Gamari at 2024-02-24T19:10:24-05:00
base: Explicit dependency to workaround #24436

Currently `ghc -M` fails to account for `.hs-boot` files correctly,
leading to issues with cross-package one-shot builds failing. This
currently manifests in `GHC.Exception` due to the boot file for
`GHC.Internal.Stack`. Work around this by adding an explicit `import`,
ensuring that `GHC.Internal.Stack` is built before `GHC.Exception`.

See #24436.

- - - - -
294c93a5 by Ben Gamari at 2024-02-24T19:10:24-05:00
base: Use displayException in top-level exception handler

Happily this also allows us to eliminate a special case for Deadlock
exceptions.

Implements [CLC #198](https://github.com/haskell/core-libraries-committee/issues/198).

- - - - -
732db81d by Ben Gamari at 2024-02-24T19:12:18-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
cf756a25 by Ben Gamari at 2024-02-24T22:11:53-05:00
rts: Fix symbol references in Wasm RTS

- - - - -
4e4d47a0 by Jade at 2024-02-26T15:17:20-05:00
GHCi: Improve response to unloading, loading and reloading modules

Fixes #13869

- - - - -
f3de8a3c by Zubin Duggal at 2024-02-26T15:17:57-05:00
rel-eng/fetch-gitlab.py: Fix name of aarch64 alpine 3_18 release job

- - - - -
c71bfdff by Cheng Shao at 2024-02-26T15:18:35-05:00
hadrian/hie-bios: pass -j to hadrian

This commit passes -j to hadrian in the hadrian/hie-bios scripts. When
the user starts HLS in a fresh clone that has just been configured, it
takes quite a while for hie-bios to pick up the ghc flags and start
actual indexing, due to the fact that the hadrian build step defaulted
to -j1, so -j speeds things up and improve HLS user experience in GHC.
Also add -j flag to .ghcid to speed up ghcid, and sets the Windows
build root to .hie-bios which also works and unifies with other
platforms, the previous build root _hie-bios was missing from
.gitignore anyway.

- - - - -
50bfdb46 by Cheng Shao at 2024-02-26T15:18:35-05:00
ci: enable parallelism in hadrian/ghci scripts

This commit enables parallelism when the hadrian/ghci scripts are
called in CI. The time bottleneck is in the hadrian build step, but
previously the build step wasn't parallelized.

- - - - -
61a78231 by Felix Yan at 2024-02-26T15:19:14-05:00
m4: Correctly detect GCC version

When calling as `cc`, GCC does not outputs lowercased "gcc" at least in 13.2.1 version here.

```
$ cc --version
cc (GCC) 13.2.1 20230801
...
```

This fails the check and outputs the confusing message: `configure: $CC is not gcc; assuming it's a reasonably new C compiler`

This patch makes it check for upper-cased "GCC" too so that it works correctly:

```
checking version of gcc... 13.2.1
```
- - - - -
001aa539 by Teo Camarasu at 2024-02-27T13:26:46-05:00
Fix formatting in whereFrom docstring

Previously it used markdown syntax rather than Haddock syntax for code quotes

- - - - -
e8034d15 by Teo Camarasu at 2024-02-27T13:26:46-05:00
Move ClosureType type to ghc-internal

- Use ClosureType for InfoProv.ipDesc.
- Use ClosureType for CloneStack.closureType.
- Now ghc-heap re-exports this type from ghc-internal.

See the accompanying CLC proposal: https://github.com/haskell/core-libraries-committee/issues/210

Resolves #22600

- - - - -
3da0a551 by Matthew Craven at 2024-02-27T13:27:22-05:00
StgToJS: Simplify ExprInline constructor of ExprResult

Its payload was used only for a small optimization in genAlts,
avoiding a few assignments for programs of this form:

  case NormalDataCon arg1 arg2 of x { NormalDataCon x1 x2 -> ... ; }

But when compiling with optimizations, this sort of code is
generally eliminated by case-of-known-constructor in Core-to-Core.
So it doesn't seem worth tracking and cleaning up again in StgToJS.

- - - - -
61bc92cc by Cheng Shao at 2024-02-27T16:58:42-05:00
rts: add missing ccs_mutex guard to internal_dlopen

See added comment for details. Closes #24423.

- - - - -
dd29d3b2 by doyougnu at 2024-02-27T16:59:23-05:00
cg: Remove GHC.Cmm.DataFlow.Collections

In pursuit of #15560 and #17957 and generally removing redundancy.

- - - - -
d3a050d2 by Cheng Shao at 2024-02-27T17:00:00-05:00
utils: remove unused lndir from tree

Ever since the removal of the make build system, the in tree lndir
hasn't been actually built, so this patch removes it.

- - - - -
86bf7010 by Ben Gamari at 2024-02-27T19:28:10-05:00
Merge remote-tracking branch 'origin/ghc-head' into HEAD

- - - - -
74b24a9b by Teo Camarasu at 2024-02-28T16:32:58+00:00
rts: avoid checking bdescr of value outside of Haskell heap

In nonmovingTidyWeaks we want to check if the key of a weak pointer
lives in the non-moving heap. We do this by checking the flags of the
block the key lives in. But we need to be careful with values that live
outside the Haskell heap, since they will lack a block descriptor and
looking for one may lead to a segfault. In this case we should just
accept that it isn't on the non-moving heap.

Resolves #24492

- - - - -
b4cae4ec by Simon Peyton Jones at 2024-02-29T02:10:08-05:00
In mkDataConRep, ensure the in-scope set is right

A small change that fixes #24489

- - - - -
3836a110 by Cheng Shao at 2024-02-29T21:25:45-05:00
testsuite: fix T23540 fragility on 32-bit platforms

T23540 is fragile on 32-bit platforms. The root cause is usage of
`getEvidenceTreesAtPoint`, which internally relies on `Name`'s `Ord`
instance, which is indeterministic. The solution is adding a
deterministic `Ord` instance for `EvidenceInfo` and sorting the
evidence trees before pretty printing. Fixes #24449.

- - - - -
960c8d47 by Teo Camarasu at 2024-02-29T21:26:20-05:00
Reduce AtomicModifyIORef increment count

This test leads to a lot of contention when N>2 and becomes very slow. Let's reduce the amount of work we do to compensate. Resolves #24490

- - - - -
2e46c8ad by Matthew Pickering at 2024-03-01T05:48:06-05:00
hadrian: Improve parallelism in binary-dist-dir rule

I noticed that the "docs" target was needed after the libraries and
executables were built. We can improve the parallelism by needing
everything at once so that documentation can be built immediately after
a library is built for example.

- - - - -
cb6c11fe by Matthew Pickering at 2024-03-01T05:48:07-05:00
ci: Bump windows and freebsd boot compilers to 9.6.4

We have previously bumped the docker images to use 9.6.4, but neglected
to bump the windows images until now.

- - - - -
30f06996 by Matthew Pickering at 2024-03-01T05:48:07-05:00
ci: darwin: Update to 9.6.2 for boot compiler

9.6.4 is currently broken due to #24050

Also update to use LLVM-15 rather than LLVM-11, which is out of date.

- - - - -
d9d69e12 by Matthew Pickering at 2024-03-01T05:48:07-05:00
Bump minimum bootstrap version to 9.6

- - - - -
67ace1c5 by Matthew Pickering at 2024-03-01T05:48:07-05:00
ci: Enable more documentation building

Here we enable documentation building on

1. Darwin: The sphinx toolchain was already installed so we enable html
   and manpages.
2. Rocky8: Full documentation (toolchain already installed)
3. Alpine: Full documetnation (toolchain already installed)
4. Windows: HTML and manpages (toolchain already installed)

Fixes #24465

- - - - -
39583c39 by Matthew Pickering at 2024-03-01T05:48:42-05:00
ci: Bump ci-images to allow updated aarch64-alpine image with llvm15 and clang15

- - - - -
d91d00fc by Torsten Schmits at 2024-03-01T15:01:50-05:00
Introduce ListTuplePuns extension

This implements Proposal 0475, introducing the `ListTuplePuns` extension
which is enabled by default.

Disabling this extension makes it invalid to refer to list, tuple and
sum type constructors by using built-in syntax like `[Int]`,
`(Int, Int)`, `(# Int#, Int# #)` or `(# Int | Int #)`.
Instead, this syntax exclusively denotes data constructors for use with
`DataKinds`.
The conventional way of referring to these data constructors by
prefixing them with a single quote (`'(Int, Int)`) is now a parser
error.

Tuple declarations have been moved to `GHC.Tuple.Prim` and the `Solo`
data constructor has been renamed to `MkSolo` (in a previous commit).
Unboxed tuples and sums now have real source declarations in `GHC.Types`.
Unit and solo types for tuples are now called `Unit`, `Unit#`, `Solo`
and `Solo#`.
Constraint tuples now have the unambiguous type constructors `CTuple<n>`
as well as `CUnit` and `CSolo`, defined in `GHC.Classes` like before.

A new parser construct has been added for the unboxed sum data
constructor declarations.

The type families `Tuple`, `Sum#` etc. that were intended to provide
nicer syntax have been omitted from this change set due to inference
problems, to be implemented at a later time.
See the MR discussion for more info.

Updates the submodule utils/haddock.
Updates the cabal submodule due to new language extension.

    Metric Increase:
        haddock.base

    Metric Decrease:
        MultiLayerModulesTH_OneShot
        size_hello_artifact

Proposal document: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst

Merge request: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/8820

Tracking ticket: https://gitlab.haskell.org/ghc/ghc/-/issues/21294

- - - - -
bbdb6286 by Sylvain Henry at 2024-03-01T15:01:50-05:00
JS linker: filter unboxed tuples

- - - - -
dec6d8d3 by Arnaud Spiwack at 2024-03-01T15:02:30-05:00
Improve error messages coming from non-linear patterns

This enriched the `CtOrigin` for non-linear patterns to include data
of the pattern that created the constraint (which can be quite useful
if it occurs nested in a pattern) as well as an explanation why the
pattern is non-restricted in (at least in some cases).

- - - - -
6612388e by Arnaud Spiwack at 2024-03-01T15:02:30-05:00
Adjust documentation of linear lets according to committee decision

- - - - -
1c064ef1 by Cheng Shao at 2024-03-02T17:11:19-05:00
compiler: start deprecating cmmToRawCmmHook

cmmToRawCmmHook was added 4 years ago in
d561c8f6244f8280a2483e8753c38e39d34c1f01. Its only user is the
Asterius project, which has been archived and deprecated in favor of
the ghc wasm backend. This patch starts deprecating cmmToRawCmmHook by
placing a DEPRECATED pragma, and actual removal shall happen in a
future GHC major release if no issue to oppose the deprecation has
been raised in the meantime.

- - - - -
9b74845f by Andrew Lelechenko at 2024-03-02T17:11:55-05:00
Data.List.NonEmpty.unzip: use WARNING with category instead of DEPRECATED

CLC proposal: https://github.com/haskell/core-libraries-committee/issues/258

- - - - -
61bb5ff6 by Finley McIlwaine at 2024-03-04T09:01:40-08:00
add -fprof-late-overloaded and -fprof-late-overloaded-calls

* Refactor late cost centre insertion for extensibility
* Add two more late cost centre insertion methods that add SCCs to overloaded
  top level bindings and call sites with dictionary arguments.
* Some tests for the basic functionality of the new insertion methods

Resolves: #24500

- - - - -
82ccb801 by Andreas Klebinger at 2024-03-04T19:59:14-05:00
x86-ncg: Fix fma codegen when arguments are globals

Fix a bug in the x86 ncg where results would be wrong when the desired output
register and one of the input registers were the same global.

Also adds a tiny optimization to make use of the memory addressing
support when convenient.

Fixes #24496

- - - - -
18ad1077 by Matthew Pickering at 2024-03-05T14:22:31-05:00
rel_eng: Update hackage docs upload scripts

This adds the upload of ghc-internal and ghc-experimental to our scripts
which upload packages to hackage.

- - - - -
bf47c9ba by Matthew Pickering at 2024-03-05T14:22:31-05:00
docs: Remove stray module comment from GHC.Profiling.Eras

- - - - -
37d9b340 by Matthew Pickering at 2024-03-05T14:22:31-05:00
Fix ghc-internal cabal file

The file mentioned some artifacts relating to the base library. I have
renamed these to the new ghc-internal variants.

- - - - -
23f2a478 by Matthew Pickering at 2024-03-05T14:22:31-05:00
Fix haddock source links and hyperlinked source

There were a few issues with the hackage links:

1. We were using the package id rather than the package name for the
   package links. This is fixed by now allowing the template to mention
   %pkg% or %pkgid% and substituing both appropiatly.
2. The `--haddock-base-url` flag is renamed to `--haddock-for-hackage`
   as the new base link works on a local or remote hackage server.
3. The "src" path including too much stuff, so cross-package source
   links were broken as the template was getting double expanded.

Fixes #24086

- - - - -
2fa336a9 by Ben Gamari at 2024-03-05T14:23:07-05:00
filepath: Bump submodule to 1.5.2.0

- - - - -
31217944 by Ben Gamari at 2024-03-05T14:23:07-05:00
os-string: Bump submodule to 2.0.2

- - - - -
4074a3f2 by Matthew Pickering at 2024-03-05T21:44:35-05:00
base: Reflect new era profiling RTS flags in GHC.RTS.Flags

* -he profiling mode
* -he profiling selector
* --automatic-era-increment

CLC proposal #254 - https://github.com/haskell/core-libraries-committee/issues/254

- - - - -
a8c0e31b by Sylvain Henry at 2024-03-05T21:45:14-05:00
JS: faster implementation for some numeric primitives (#23597)

Use faster implementations for the following primitives in the JS
backend by not using JavaScript's BigInt:
- plusInt64
- minusInt64
- minusWord64
- timesWord64
- timesInt64

Co-authored-by: Josh Meredith <joshmeredith2008 at gmail.com>

- - - - -
21e3f325 by Cheng Shao at 2024-03-05T21:45:52-05:00
rts: add -xr option to control two step allocator reserved space size

This patch adds a -xr RTS option to control the size of virtual memory
address space reserved by the two step allocator on a 64-bit platform,
see added documentation for explanation. Closes #24498.

- - - - -
dedcf102 by Cheng Shao at 2024-03-06T13:39:04-05:00
rts: expose HeapAlloc.h as public header

This commit exposes HeapAlloc.h as a public header. The intention is
to expose HEAP_ALLOCED/HEAP_ALLOCED_GC, so they can be used in
assertions in other public headers, and they may also be useful for
user code.

- - - - -
d19441d7 by Cheng Shao at 2024-03-06T13:39:04-05:00
rts: assert pointer is indeed heap allocated in Bdescr()

This commit adds an assertion to Bdescr() to assert the pointer is
indeed heap allocated. This is useful to rule out RTS bugs that
attempt to access non-existent block descriptor of a static closure, #24492
being one such example.

- - - - -
9a656a04 by Ben Gamari at 2024-03-06T13:39:39-05:00
ghc-experimental: Add dummy dependencies to work around #23942

This is a temporary measure to improve CI reliability until a proper
solution is developed.

Works around #23942.

- - - - -
1e84b924 by Simon Peyton Jones at 2024-03-06T13:39:39-05:00
Three compile perf improvements with deep nesting

These were changes are all triggered by #24471.

1. Make GHC.Core.Opt.SetLevels.lvlMFE behave better when there are
   many free variables.  See Note [Large free-variable sets].

2. Make GHC.Core.Opt.Arity.floatIn a bit lazier in its Cost argument.
   This benefits the common case where the ArityType turns out to
   be nullary. See Note [Care with nested expressions]

3. Make GHC.CoreToStg.Prep.cpeArg behave for deeply-nested
   expressions.  See Note [Eta expansion of arguments in CorePrep]
   wrinkle (EA2).

Compile times go down by up to 4.5%, and much more in artificial
cases. (Geo mean of compiler/perf changes is -0.4%.)

Metric Decrease:
    CoOpt_Read
    T10421
    T12425

- - - - -
c4b13113 by Hécate Moonlight at 2024-03-06T13:40:17-05:00
Use "module" instead of "library" when applicable in base haddocks

- - - - -
9cd9efb4 by Vladislav Zavialov at 2024-03-07T13:01:54+03:00
Rephrase error message to say "visible arguments" (#24318)

* Main change: make the error message generated by mkFunTysMsg more
  accurate by changing "value arguments" to "visible arguments".

* Refactor: define a new type synonym VisArity and use it instead of
  Arity in a few places.

It might be the case that there other places in the compiler that should
talk about visible arguments rather than value arguments, but I haven't
tried to find them all, focusing only on the error message reported in
the ticket.

- - - - -
4b6e76b5 by Patrick at 2024-03-07T22:09:30+08:00
fix haskell/haddock#24493, with module name introduced in hieAst

The accompanies haddoc PR with GHC PR https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12153
Two things have been done:
1. Link is introduced to every `X` in `module X where`, since we introduce the module name to HieAst,
2. `{-# LINE 4 "hypsrc-test/src/PositionPragmas.hs" #-}` is added before the `module PositionPragmas where` in ` hypsrc-test/ref/src/PositionPragmas.html `.It ensures only a single hieAst for file `hypsrc-test/src/PositionPragmas.hs` is generated.

- - - - -
d523a6a7 by Ben Gamari at 2024-03-07T19:40:45-05:00
Bump array submodule

- - - - -
7e55003c by Ben Gamari at 2024-03-07T19:40:45-05:00
Bump stm submodule

- - - - -
32d337ef by Ben Gamari at 2024-03-07T19:40:45-05:00
Introduce exception context

Here we introduce the `ExceptionContext` type and `ExceptionAnnotation`
class, allowing dynamically-typed user-defined annotations to be
attached to exceptions.

CLC Proposal: https://github.com/haskell/core-libraries-committee/issues/199
GHC Proposal: https://github.com/ghc-proposals/ghc-proposals/pull/330

- - - - -
39f3d922 by Ben Gamari at 2024-03-07T19:40:46-05:00
testsuite/interface-stability: Update documentation

- - - - -
fdea7ada by Ben Gamari at 2024-03-07T19:40:46-05:00
ghc-internal: comment formatting

- - - - -
4fba42ef by Ben Gamari at 2024-03-07T19:40:46-05:00
compiler: Default and warn ExceptionContext constraints

- - - - -
3886a205 by Ben Gamari at 2024-03-07T19:40:46-05:00
base: Introduce exception backtraces

Here we introduce the `Backtraces` type and associated machinery for
attaching these via `ExceptionContext`. These has a few compile-time
regressions (`T15703` and `T9872d`) due to the additional dependencies
in the exception machinery.

As well, there is a surprisingly large regression in the
`size_hello_artifact` test. This appears to be due to various `Integer` and
`Read` bits now being reachable at link-time. I believe it should be
possible to avoid this but I have accepted the change for now to get the
feature merged.

CLC Proposal: https://github.com/haskell/core-libraries-committee/issues/199
GHC Proposal: https://github.com/ghc-proposals/ghc-proposals/pull/330

Metric Increase:
    T15703
    T9872d
    size_hello_artifact

- - - - -
18c5409f by Ben Gamari at 2024-03-07T19:40:46-05:00
users guide: Release notes for exception backtrace work

- - - - -
f849c5fc by Ben Gamari at 2024-03-07T19:40:46-05:00
compiler: Don't show ExceptionContext of GhcExceptions

Most GhcExceptions are user-facing errors and therefore the
ExceptionContext has little value. Ideally we would enable
it in the DEBUG compiler but I am leaving this for future work.

- - - - -
dc646e6f by Sylvain Henry at 2024-03-07T19:40:46-05:00
Disable T9930fail for the JS target (cf #19174)

- - - - -
bfc09760 by Alan Zimmerman at 2024-03-07T19:41:22-05:00
Update showAstData to honour blanking of AnnParen

Also tweak rendering of SrcSpan to remove extra blank line.

- - - - -
50454a29 by Ben Gamari at 2024-03-08T03:32:42-05:00
ghc-internal: Eliminate GHC.Internal.Data.Kind

This was simply reexporting things from `ghc-prim`. Instead reexport
these directly from `Data.Kind`. Also add build ordering dependency to
work around #23942.

- - - - -
38a4b6ab by Ben Gamari at 2024-03-08T03:33:18-05:00
rts: Fix SET_HDR initialization of retainer set

This fixes a regression in retainer set profiling introduced by
b0293f78cb6acf2540389e22bdda420d0ab874da. Prior to that commit
the heap traversal word would be initialized by `SET_HDR` using
`LDV_RECORD_CREATE`. However, the commit added a `doingLDVProfiling`
check in `LDV_RECORD_CREATE`, meaning that this initialization no longer
happened.

Given that this initialization was awkwardly indirectly anyways, I have
fixed this by explicitly initializating the heap traversal word to
`NULL` in `SET_PROF_HDR`. This is equivalent to the previous behavior,
but much more direct.

Fixes #24513.

- - - - -
635abccc by Ben Gamari at 2024-03-08T17:09:06-05:00
Bump ghc version to 9.10

- - - - -
2859a637 by Ben Gamari at 2024-03-08T18:26:47-05:00
base: Use strerror_r instead of strerror

As noted by #24344, `strerror` is not necessarily thread-safe.
Thankfully, POSIX.1-2001 has long offered `strerror_r`, which is
safe to use.

Fixes #24344.

CLC discussion: https://github.com/haskell/core-libraries-committee/issues/249

- - - - -
5b934048 by Ben Gamari at 2024-03-08T18:50:12-05:00
Bump base upper bound

- - - - -
b30d134e by Ben Gamari at 2024-03-08T18:50:44-05:00
Testsuite output update

- - - - -
edb9bf77 by Jade at 2024-03-09T03:39:38-05:00
Error messages: Improve Error messages for Data constructors in type signatures.

This patch improves the error messages from invalid type signatures by
trying to guess what the user did and suggesting an appropriate fix.

Partially fixes: #17879

- - - - -
cfb197e3 by Patrick at 2024-03-09T03:40:15-05:00
HieAst: add module name #24493

The main purpose of this is to tuck the module name `xxx` in `module xxx where` into the hieAst.
It should fix #24493.

The following have been done:
1. Renamed and update the `tcg_doc_hdr :: Maybe (LHsDoc GhcRn)` to `tcg_hdr_info :: (Maybe (LHsDoc GhcRn), Maybe (XRec GhcRn ModuleName))`
   To store the located module name information.
2. update the `RenamedSource` and `RenamedStuff` with extra `Maybe (XRec GhcRn ModuleName)` located module name information.
3. add test `testsuite/tests/hiefile/should_compile/T24493.hs` to ensure the module name is added and update several relevent tests.
4. accompanied submodule haddoc test update MR in https://gitlab.haskell.org/ghc/haddock/-/merge_requests/53

- - - - -
2341d81e by Vaibhav Sagar at 2024-03-09T03:40:54-05:00
GHC.Utils.Binary: fix a couple of typos

- - - - -
5580e1bd by Ben Gamari at 2024-03-09T03:41:30-05:00
rts: Drop .wasm suffix from .prof file names

This replicates the behavior on Windows, where `Hi.exe` will produce
profiling output named `Hi.prof` instead of `Hi.exe.prof`.

While in the area I also fixed the extension-stripping logic, which
incorrectly rewrote `Hi.exefoo` to `Hi.foo`.

Closes #24515.

- - - - -
259495ee by Cheng Shao at 2024-03-09T03:41:30-05:00
testsuite: drop exe extension from .hp & .prof filenames

See #24515 for details.

- - - - -
c477a8d2 by Ben Gamari at 2024-03-09T03:42:05-05:00
rts/linker: Enable GOT support on all platforms

There is nothing platform-dependent about our GOT implementation and
GOT support is needed by `T24171` on i386.

- - - - -
2e592857 by Vladislav Zavialov at 2024-03-09T03:42:41-05:00
Drop outdated comment on TcRnIllformedTypePattern

This should have been done in 0f0c53a501b but I missed it.

- - - - -
c554b4da by Ben Gamari at 2024-03-09T09:39:20-05:00
rts/CloneStack: Bounds check array write

- - - - -
15c590a5 by Ben Gamari at 2024-03-09T09:39:20-05:00
rts/CloneStack: Don't expose helper functions in header

- - - - -
e831ce31 by Ben Gamari at 2024-03-09T09:39:20-05:00
base: Move internals of GHC.InfoProv into GHC.InfoProv.Types

Such that we can add new helpers into GHC.InfoProv.Types without
breakage.

- - - - -
6948e24d by Ben Gamari at 2024-03-09T09:39:20-05:00
rts: Lazily decode IPE tables

Previously we would eagerly allocate `InfoTableEnt`s for each
info table registered in the info table provenance map. However, this
costs considerable memory and initialization time. Instead we now
lazily decode these tables. This allows us to use one-third the memory
*and* opens the door to taking advantage of sharing opportunities within
a module.

This required considerable reworking since lookupIPE now must be passed
its result buffer.

- - - - -
9204a04e by Ben Gamari at 2024-03-09T09:39:20-05:00
rts/IPE: Don't expose helper in header

- - - - -
308926ff by Ben Gamari at 2024-03-09T09:39:20-05:00
rts/IPE: Share module_name within a Node

This allows us to shave a 64-bit word off of the packed IPE entry size.

- - - - -
bebdea05 by Ben Gamari at 2024-03-09T09:39:20-05:00
IPE: Expose unit ID in InfoTableProv

Here we add the unit ID to the info table provenance structure.

- - - - -
6519c9ad by Ben Gamari at 2024-03-09T09:39:35-05:00
rts: Refactor GHC.Stack.CloneStack.decode

Don't allocate a Ptr constructor per frame.

- - - - -
ed0b69dc by Ben Gamari at 2024-03-09T09:39:35-05:00
base: Do not expose whereFrom# from GHC.Exts

- - - - -
2b1faea9 by Vladislav Zavialov at 2024-03-09T17:38:21-05:00
docs: Update info on TypeAbstractions

* Mention TypeAbstractions in 9.10.1-notes.rst
* Set the status to "Experimental".
* Add a "Since: GHC 9.x" comment to each section.

- - - - -
f8b88918 by Ben Gamari at 2024-03-09T21:21:46-05:00
ci-images: Bump Alpine image to bootstrap with 9.8.2

- - - - -
705e6927 by Ben Gamari at 2024-03-09T21:21:46-05:00
testsuite: Mark T24171 as fragile due to #24512

I will fix this but not in time for 9.10.1-alpha1

- - - - -
c74196e1 by Ben Gamari at 2024-03-09T21:21:46-05:00
testsuite: Mark linker_unload_native as fragile

In particular this fails on platforms without `dlinfo`. I plan to
address this but not before 9.10.1-alpha1.

- - - - -
f4d87f7a by Ben Gamari at 2024-03-09T21:21:46-05:00
configure: Bump version to 9.10

- - - - -
88df9a5f by Ben Gamari at 2024-03-09T21:21:46-05:00
Bump transformers submodule to 0.6.1.1

- - - - -
8176d5e8 by Ben Gamari at 2024-03-09T21:21:46-05:00
testsuite: Increase ulimit for T18623

1 MByte was just too tight and failed intermittently on some platforms
(e.g. CentOS 7). Bumping the limit to 8 MByte should provide sufficient
headroom.

Fixes #23139.

- - - - -
c74b38a3 by Ben Gamari at 2024-03-09T21:21:46-05:00
base: Bump version to 4.20.0.0

- - - - -
b2937fc3 by Ben Gamari at 2024-03-09T21:21:46-05:00
ghc-internal: Set initial version at 9.1001.0

This provides PVP compliance while maintaining a clear correspondence
between GHC releases and `ghc-internal` versions.

- - - - -
4ae7d868 by Ben Gamari at 2024-03-09T21:21:46-05:00
ghc-prim: Bump version to 0.11.0

- - - - -
50798dc6 by Ben Gamari at 2024-03-09T21:21:46-05:00
template-haskell: Bump version to 2.22.0.0

- - - - -
8564f976 by Ben Gamari at 2024-03-09T21:21:46-05:00
base-exports: Accommodate spurious whitespace changes in 32-bit output

It appears that this was

- - - - -
9d4f0e98 by Ben Gamari at 2024-03-09T21:21:46-05:00
users-guide: Move exception backtrace relnotes to 9.10

This was previously mistakenly added to the GHC 9.8 release notes.

- - - - -
145eae60 by Ben Gamari at 2024-03-09T21:21:46-05:00
gitlab/rel_eng: Fix name of Rocky8 artifact

- - - - -
39c2a630 by Ben Gamari at 2024-03-09T21:21:46-05:00
gitlab/rel_eng: Fix path of generate_jobs_metadata

- - - - -
aed034de by Ben Gamari at 2024-03-09T21:21:46-05:00
gitlab/upload: Rework recompression

The old `combine` approach was quite fragile due to use of filename
globbing. Moreover, it didn't parallelize well. This refactoring
makes the goal more obvious, parallelizes better, and is more robust.

- - - - -
9bdf3586 by Ben Gamari at 2024-03-09T21:37:44-05:00
Merge branch 'ghc-9.10' into ghc-head

- - - - -
cec76981 by Ben Gamari at 2024-03-09T21:54:00-05:00
Bump GHC version to 9.11

- - - - -
4c59feb7 by Ben Gamari at 2024-03-09T22:15:01-05:00
Merge remote-tracking branch 'origin/ghc-head' into ghc-head

- - - - -
dc207d06 by Ben Gamari at 2024-03-10T08:56:08-04:00
configure: Bump GHC version to 9.11

Bumps haddock submodule.

- - - - -
8b2513e8 by Ben Gamari at 2024-03-11T01:20:03-04:00
rts/linker: Don't unload code when profiling is enabled

The heap census may contain references (e.g. `Counter.identity`) to
static data which must be available when the census is reported at the
end of execution.

Fixes #24512.

- - - - -
7810b4c3 by Ben Gamari at 2024-03-11T01:20:03-04:00
rts/linker: Don't unload native objects when dlinfo isn't available

To do so is unsafe as we have no way of identifying references to
symbols provided by the object.

Fixes #24513. Fixes #23993.

- - - - -
0590764c by Ben Gamari at 2024-03-11T01:20:39-04:00
rel_eng/upload: Purge both $rel_name/ and $ver/

This is necessary for prereleases, where GHCup accesses the release via
`$ver/`

- - - - -
b85a4631 by Brandon Chinn at 2024-03-12T19:25:56-04:00
Remove duplicate code normalising slashes

- - - - -
c91946f9 by Brandon Chinn at 2024-03-12T19:25:56-04:00
Simplify regexes with raw strings

- - - - -
1a5f53c6 by Brandon Chinn at 2024-03-12T19:25:57-04:00
Don't normalize backslashes in characters

- - - - -
7ea971d3 by Andrei Borzenkov at 2024-03-12T19:26:32-04:00
Fix compiler crash caused by implicit RHS quantification in type synonyms (#24470)

- - - - -
39f3ac3e by Cheng Shao at 2024-03-12T19:27:11-04:00
Revert "compiler: make genSym use C-based atomic increment on non-JS 32-bit platforms"

This reverts commit 615eb855416ce536e02ed935ecc5a6f25519ae16. It was
originally intended to fix #24449, but it was merely sweeping the bug
under the rug. 3836a110577b5c9343915fd96c1b2c64217e0082 has properly
fixed the fragile test, and we no longer need the C version of genSym.
Furthermore, the C implementation causes trouble when compiling with
clang that targets i386 due to alignment warning and libatomic linking
issue, so it makes sense to revert it.

- - - - -
e6bfb85c by Cheng Shao at 2024-03-12T19:27:11-04:00
compiler: fix out-of-bound memory access of genSym on 32-bit

This commit fixes an unnoticed out-of-bound memory access of genSym on
32-bit. ghc_unique_inc is 32-bit sized/aligned on 32-bit platforms,
but we mistakenly treat it as a Word64 pointer in genSym, and
therefore will accidentally load 2 garbage higher bytes, or with a
small but non-zero chance, overwrite something else in the data
section depends on how the linker places the data segments. This
regression was introduced in !11802 and fixed here.

- - - - -
77171cd1 by Ben Orchard at 2024-03-14T09:00:40-04:00
Note mutability of array and address access primops

Without an understanding of immutable vs. mutable memory, the index
primop family have a potentially non-intuitive type signature:

    indexOffAddr :: Addr# -> Int# -> a
    readOffAddr  :: Addr# -> Int# -> State# d -> (# State# d, a #)

indexOffAddr# might seem like a free generality improvement, which it
certainly is not!

This change adds a brief note on mutability expectations for most
index/read/write access primops.

- - - - -
7da7f8f6 by Alan Zimmerman at 2024-03-14T09:01:15-04:00
EPA: Fix regression discarding comments in contexts

Closes #24533

- - - - -
73be65ab by Fendor at 2024-03-19T01:42:53-04:00
Fix sharing of 'IfaceTyConInfo' during core to iface type translation

During heap analysis, we noticed that during generation of
'mi_extra_decls' we have lots of duplicates for the instances:

* `IfaceTyConInfo NotPromoted IfaceNormalTyCon`
* `IfaceTyConInfo IsPromoted IfaceNormalTyCon`

which should be shared instead of duplicated. This duplication increased
the number of live bytes by around 200MB while loading the agda codebase
into GHCi.

These instances are created during `CoreToIface` translation, in
particular `toIfaceTyCon`.

The generated core looks like:

    toIfaceTyCon
      = \ tc_sjJw ->
          case $wtoIfaceTyCon tc_sjJw of
          { (# ww_sjJz, ww1_sjNL, ww2_sjNM #) ->
          IfaceTyCon ww_sjJz (IfaceTyConInfo ww1_sjNL ww2_sjNM)
          }

whichs removes causes the sharing to work propery.

Adding explicit sharing, with NOINLINE annotations, changes the core to:

    toIfaceTyCon
      = \ tc_sjJq ->
          case $wtoIfaceTyCon tc_sjJq of { (# ww_sjNB, ww1_sjNC #) ->
          IfaceTyCon ww_sjNB ww1_sjNC
          }

which looks much more like sharing is happening.
We confirmed via ghc-debug that all duplications were eliminated and the
number of live bytes are noticeably reduced.

- - - - -
bd8209eb by Alan Zimmerman at 2024-03-19T01:43:28-04:00
EPA: Address more 9.10.1-alpha1 regressions from recent changes

Closes #24533
Hopefully for good this time

- - - - -
31bf85ee by Fendor at 2024-03-19T14:48:08-04:00
Escape multiple arguments in the settings file

Uses responseFile syntax.

The issue arises when GHC is installed on windows into a location that
has a space, for example the user name is 'Fake User'.
The $topdir will also contain a space, consequentially.
When we resolve the top dir in the string `-I$topdir/mingw/include`,
then `words` will turn this single argument into `-I/C/Users/Fake` and
`User/.../mingw/include` which trips up the flag argument parser of
various tools such as gcc or clang.
We avoid this by escaping the $topdir before replacing it in
`initSettngs`.
Additionally, we allow to escape spaces and quotation marks for
arguments in `settings` file.

Add regression test case to count the number of options after variable
expansion and argument escaping took place.
Additionally, we check that escaped spaces and double quotation marks are
correctly parsed.

- - - - -
f45f700e by Matthew Pickering at 2024-03-19T14:48:44-04:00
Read global package database from settings file

Before this patch, the global package database was always assumed to be
in libdir </> package.conf.d.

This causes issues in GHC's build system because there are sometimes
situations where the package database you need to use is not located in
the same place as the settings file.

* The stage1 compiler needs to use stage1 libraries, so we should set
  "Global Package DB" for the stage1 compiler to the stage1 package
  database.
* Stage 2 cross compilers need to use stage2 libraries, so likewise, we
  should set the package database path to `_build/stage2/lib/`

* The normal situation is where the stage2 compiler uses stage1
  libraries. Then everything lines up.

* When installing we have rearranged everything so that the settings
  file and package database line up properly, so then everything should
  continue to work as before. In this case we set the relative package
  db path to `package.conf.d`, so it resolves the same as before.

* ghc-pkg needs to be modified as well to look in the settings file fo
  the package database rather than assuming the global package database
  location relative to the lib folder.

* Cabal/cabal-install will work correctly because they query the global
  package database using `--print-global-package-db`.

A reasonable question is why not generate the "right" settings files in
the right places in GHC's build system. In order to do this you would
need to engineer wrappers for all executables to point to a specific
libdir. There are also situations where the same package db is used by
two different compilers with two different settings files (think stage2
cross compiler and stage3 compiler).

In short, this 10 line patch allows for some reasonable simplifications
in Hadrian at very little cost to anything else.

Fixes #24502

- - - - -
4c8f1794 by Matthew Pickering at 2024-03-19T14:48:44-04:00
hadrian: Remove stage1 testsuite wrappers logic

Now instead of producing wrappers which pass the global package database
argument to ghc and ghc-pkg, we write the location of the correct
package database into the settings file so you can just use the intree
compiler directly.

- - - - -
da0d8ba5 by Matthew Craven at 2024-03-19T14:49:20-04:00
Remove unused ghc-internal module "GHC.Internal.Constants"

- - - - -
b56d2761 by Matthew Craven at 2024-03-19T14:49:20-04:00
CorePrep: Rework lowering of BigNat# literals

Don't use bigNatFromWord#, because that's terrible:
 * We shouldn't have to traverse a linked list at run-time
   to build a BigNat# literal. That's just silly!
 * The static List object we have to create is much larger
   than the actual BigNat#'s contents, bloating code size.
 * We have to read the corresponding interface file,
   which causes un-tracked implicit dependencies. (#23942)

Instead, encode them into the appropriate platform-dependent
sequence of bytes, and generate code that copies these bytes
at run-time from an Addr# literal into a new ByteArray#.
A ByteArray# literal would be the correct thing to generate,
but these are not yet supported; see also #17747.

Somewhat surprisingly, this change results in a slight
reduction in compiler allocations, averaging around 0.5%
on ghc's compiler performance tests, including when compiling
programs that contain no bignum literals to begin with.
The specific cause of this has not been investigated.

Since this lowering no longer reads the interface file for
GHC.Num.BigNat, the reasoning in Note [Depend on GHC.Num.Integer]
is obsoleted.  But the story of un-tracked built-in dependencies
remains complex, and Note [Tracking dependencies on primitives]
now exists to explain this complexity.

Additionally, many empty imports have been modified to refer to
this new note and comply with its guidance.  Several empty imports
necessary for other reasons have also been given brief explanations.

Metric Decrease:
    MultiLayerModulesTH_OneShot

- - - - -
349ea330 by Fendor at 2024-03-19T14:50:00-04:00
Eliminate thunk in 'IfaceTyCon'

Heap analysis showed that `IfaceTyCon` retains a thunk to
`IfaceTyConInfo`, defeating the sharing of the most common instances of
`IfaceTyConInfo`.
We make sure the indirection is removed by adding bang patterns to
`IfaceTyCon`.

Experimental results on the agda code base, where the `mi_extra_decls`
were read from disk:

Before this change, we observe around 8654045 instances of:

`IfaceTyCon[Name,THUNK_1_0]`

But these thunks almost exclusively point to a shared value!

Forcing the thunk a little bit more, leads to `ghc-debug` reporting:

`IfaceTyCon[Name:Name,IfaceTyConInfo]`

and a noticeable reduction of live bytes (on agda ~10%).

- - - - -
594bee0b by Krzysztof Gogolewski at 2024-03-19T14:50:36-04:00
Minor misc cleanups

- GHC.HsToCore.Foreign.JavaScript: remove dropRuntimeRepArgs;
  boxed tuples don't take RuntimeRep args
- GHC.HsToCore.Foreign.Call: avoid partial pattern matching
- GHC.Stg.Unarise: strengthen the assertion; we can assert that
  non-rubbish literals are unary rather than just non-void
- GHC.Tc.Gen.HsType: make sure the fsLit "literal" rule fires
- users_guide/using-warnings.rst: remove -Wforall-identifier,
  now deprecated and does nothing
- users_guide/using.rst: fix formatting
- andy_cherry/test.T: remove expect_broken_for(23272...), 23272 is fixed

The rest are simple cleanups.

- - - - -
cf55a54b by Ben Gamari at 2024-03-19T14:51:12-04:00
mk/relpath: Fix quoting

Previously there were two instances in this script which lacked proper
quoting. This resulted in `relpath` invocations in the binary
distribution Makefile producing incorrect results on Windows, leading to
confusing failures from `sed` and the production of empty package
registrations.

Fixes #24538.

- - - - -
5ff88389 by Bryan Richter at 2024-03-19T14:51:48-04:00
testsuite: Disable T21336a on wasm

- - - - -
60023351 by Ben Gamari at 2024-03-19T22:33:10-04:00
hadrian/bindist: Eliminate extraneous `dirname` invocation

Previously we would call `dirname` twice per installed library file.
We now instead reuse this result. This helps appreciably on Windows, where
processes are quite expensive.

- - - - -
616ac300 by Ben Gamari at 2024-03-19T22:33:10-04:00
hadrian: Package mingw toolchain in expected location

This fixes #24525, a regression due to 41cbaf44a6ab5eb9fa676d65d32df8377898dc89.
Specifically, GHC expects to find the mingw32 toolchain in the binary distribution
root. However, after this patch it was packaged in the `lib/` directory.

- - - - -
de9daade by Ben Gamari at 2024-03-19T22:33:11-04:00
gitlab/rel_eng: More upload.sh tweaks

- - - - -
1dfe12db by Ben Gamari at 2024-03-19T22:33:11-04:00
rel_eng: Drop dead prepare_docs codepath

- - - - -
dd2d748b by Ben Gamari at 2024-03-19T22:33:11-04:00
rel_env/recompress_all: unxz before recompressing

Previously we would rather compress the xz *again*, before in addition
compressing it with the desired scheme.

Fixes #24545.

- - - - -
9d936c57 by Ben Gamari at 2024-03-19T22:33:11-04:00
mk-ghcup-metadata: Fix directory of testsuite tarball

As reported in #24546, the `dlTest` artifact should be extracted into
the `testsuite` directory.

- - - - -
6d398066 by Ben Gamari at 2024-03-19T22:33:11-04:00
ghcup-metadata: Don't populate dlOutput unless necessary

ghcup can apparently infer the output name of an artifact from its URL.
Consequently, we should only include the `dlOutput` field when it would
differ from the filename of `dlUri`.

Fixes #24547.

- - - - -
576f8b7e by Zubin Duggal at 2024-03-19T22:33:46-04:00
Revert "Apply shellcheck suggestion to SUBST_TOOLDIR"

This reverts commit c82770f57977a2b5add6e1378f234f8dd6153392.

The shellcheck suggestion is spurious and results in SUBST_TOOLDIR being a
no-op. `set` sets positional arguments for bash, but we want to set the variable
given as the first autoconf argument.

Fixes #24542

Metric decreases because the paths in the settings file are now shorter,
so we allocate less when we read the settings file.

-------------------------
Metric Decrease:
    T12425
    T13035
    T9198
-------------------------

- - - - -
cdfe6e01 by Fendor at 2024-03-19T22:34:22-04:00
Compact serialisation of IfaceAppArgs

In #24563, we identified that IfaceAppArgs serialisation tags each
cons cell element with a discriminator byte. These bytes add up
quickly, blowing up interface files considerably when
'-fwrite-if-simplified-core' is enabled.

We compact the serialisation by writing out the length of
'IfaceAppArgs', followed by serialising the elements directly without
any discriminator byte.

This improvement can decrease the size of some interface files by up
to 35%.

- - - - -
97a2bb1c by Simon Peyton Jones at 2024-03-20T17:11:29+00:00
Expand untyped splices in tcPolyExprCheck

Fixes #24559

- - - - -
5f275176 by Alan Zimmerman at 2024-03-20T22:44:12-04:00
EPA: Clean up Exactprint helper functions a bit

- Introduce a helper lens to compose on `EpAnn a` vs `a` versions
- Rename some prime versions of functions back to non-prime
  They were renamed during the rework

- - - - -
da2a10ce by Vladislav Zavialov at 2024-03-20T22:44:48-04:00
Type operators in promoteOccName (#24570)

Type operators differ from term operators in that they are lexically
classified as (type) constructors, not as (type) variables.

Prior to this change, promoteOccName did not account for this
difference, causing a scoping issue that affected RequiredTypeArguments.

  type (!@#) = Bool
  f = idee (!@#)      -- Not in scope: ‘!@#’  (BUG)

Now we have a special case in promoteOccName to account for this.

- - - - -
247fc0fa by Preetham Gujjula at 2024-03-21T10:19:18-04:00
docs: Remove mention of non-existent Ord instance for Complex

The documentation for Data.Complex says that the Ord instance for Complex Float
is deficient, but there is no Ord instance for Complex a. The Eq instance for
Complex Float is similarly deficient, so we use that as an example instead.

- - - - -
6fafc51e by Andrei Borzenkov at 2024-03-21T10:19:54-04:00
Fix TH handling in `pat_to_type_pat` function (#24571)

There was missing case for `SplicePat` in `pat_to_type_at` function,
hence patterns with splicing that checked against `forall->` doesn't work
properly because they fall into the "illegal pattern" case.

Code example that is now accepted:

  g :: forall a -> ()
  g $([p| a |]) = ()

- - - - -
52072f8e by Sylvain Henry at 2024-03-21T21:01:59-04:00
Type-check default declarations before deriving clauses (#24566)

See added Note and #24566. Default declarations must be type-checked
before deriving clauses.

- - - - -
7dfdf3d9 by Sylvain Henry at 2024-03-21T21:02:40-04:00
Lexer: small perf changes

- Use unsafeChr because we know our values to be valid
- Remove some unnecessary use of `ord` (return Word8 values directly)

- - - - -
864922ef by Sylvain Henry at 2024-03-21T21:02:40-04:00
JS: fix some comments

- - - - -
3e0b2b1f by Sebastian Graf at 2024-03-21T21:03:16-04:00
Simplifier: Re-do dependency analysis in abstractFloats (#24551)

In #24551, we abstracted a string literal binding over a type variable,
triggering a CoreLint error when that binding floated to top-level.

The solution implemented in this patch fixes this by re-doing dependency
analysis on a simplified recursive let binding that is about to be type
abstracted, in order to find the minimal set of type variables to abstract over.
See wrinkle (AB5) of Note [Floating and type abstraction] for more details.

Fixes #24551

- - - - -
8a8ac65a by Matthew Craven at 2024-03-23T00:20:52-04:00
Improve toInteger @Word32 on 64-bit platforms

On 64-bit platforms, every Word32 fits in an Int, so we can
convert to Int# without having to perform the overflow check
integerFromWord# uses internally.

- - - - -
0c48f2b9 by Apoorv Ingle at 2024-03-23T00:21:28-04:00
Fix for #24552 (see testcase T24552)

Fixes for a bug in desugaring pattern synonyms matches, introduced
while working on  on expanding `do`-blocks in #18324

The `matchWrapper` unecessarily (and incorrectly) filtered out the
default wild patterns in a match. Now the wild pattern alternative is
simply ignored by the pm check as its origin is `Generated`.
The current code now matches the expected semantics according to the language spec.

- - - - -
b72705e9 by Simon Peyton Jones at 2024-03-23T00:22:04-04:00
Print more info about kinds in error messages

This fixes #24553, where GHC unhelpfully said

  error: [GHC-83865]
    • Expected kind ‘* -> * -> *’, but ‘Foo’ has kind ‘* -> * -> *’

See Note [Showing invisible bits of types in error messages]

- - - - -
8f7cfc7e by Tristan Cacqueray at 2024-03-23T00:22:44-04:00
docs: remove the don't use float hint

This hint is outdated, ``Complex Float`` are now specialised,
and the heap space suggestion needs more nuance so it should
be explained in the unboxed/storable array documentation.

- - - - -
5bd8ed53 by Andreas Klebinger at 2024-03-23T16:18:33-04:00
NCG: Fix a bug in jump shortcutting.

When checking if a jump has more than one destination account for the
possibility of some jumps not being representable by a BlockId.

We do so by having isJumpishInstr return a `Maybe BlockId` where Nothing
represents non-BlockId jump destinations.

Fixes #24507

- - - - -
8d67f247 by Ben Gamari at 2024-03-23T16:19:09-04:00
docs: Drop old release notes, add for 9.12.1

- - - - -
7db8c992 by Cheng Shao at 2024-03-25T13:45:46-04:00
rts: fix clang compilation on aarch64

This patch fixes function prototypes in ARMOutlineAtomicsSymbols.h
which causes "error: address argument to atomic operation must be a
pointer to _Atomic type" when compiling with clang on aarch64.

- - - - -
237194ce by Sylvain Henry at 2024-03-25T13:46:27-04:00
Lexer: fix imports for Alex 3.5.1 (#24583)

- - - - -
810660b7 by Cheng Shao at 2024-03-25T22:19:16-04:00
libffi-tarballs: bump libffi-tarballs submodule to libffi 3.4.6

This commit bumps the libffi-tarballs submodule to libffi 3.4.6, which
includes numerous upstream libffi fixes, especially
https://github.com/libffi/libffi/issues/760.

- - - - -
d2ba41e8 by Alan Zimmerman at 2024-03-25T22:19:51-04:00
EPA: do not duplicate comments in signature RHS

- - - - -
32a8103f by Rodrigo Mesquita at 2024-03-26T21:16:12-04:00
configure: Use LDFLAGS when trying linkers

A user may configure `LDFLAGS` but not `LD`. When choosing a linker, we
will prefer `ldd`, then `ld.gold`, then `ld.bfd` -- however, we have to
check for a working linker. If either of these fail, we try the next in
line.

However, we were not considering the `$LDFLAGS` when checking if these
linkers worked. So we would pick a linker that does not support the
current $LDFLAGS and fail further down the line when we used that linker
with those flags.

Fixes #24565, where `LDFLAGS=-Wl,-z,pack-relative-relocs` is not
supported by `ld.gold` but that was being picked still.

- - - - -
bf65a7c3 by Rodrigo Mesquita at 2024-03-26T21:16:48-04:00
bindist: Clean xattrs of bin and lib at configure time

For issue #21506, we started cleaning the extended attributes of
binaries and libraries from the bindist *after* they were installed to
workaround notarisation (#17418), as part of `make install`.

However, the `ghc-toolchain` binary that is now shipped with the bindist
must be run at `./configure` time. Since we only cleaned the xattributes
of the binaries and libs after they were installed, in some situations
users would be unable to run `ghc-toolchain` from the bindist, failing
at configure time (#24554).

In this commit we move the xattr cleaning logic to the configure script.

Fixes #24554

- - - - -
cfeb70d3 by Rodrigo Mesquita at 2024-03-26T21:17:24-04:00
Revert "NCG: Fix a bug in jump shortcutting."

This reverts commit 5bd8ed53dcefe10b72acb5729789e19ceb22df66.

Fixes #24586

- - - - -
13223f6d by Serge S. Gulin at 2024-03-27T07:28:51-04:00
JS: `h$rts_isProfiled` is removed from `profiling` and left its version at
`rts/js/config.js`

- - - - -
0acfe391 by Alan Zimmerman at 2024-03-27T07:29:27-04:00
EPA: Do not extend declaration range for trailine zero len semi

The lexer inserts virtual semicolons having zero width.
Do not use them to extend the list span of items in a list.

- - - - -
cd0fb82f by Alan Zimmerman at 2024-03-27T19:33:08+00:00
EPA: Fix FamDecl range

The span was incorrect if opt_datafam_kind_sig was empty

- - - - -
f8f384a8 by Ben Gamari at 2024-03-29T01:23:03-04:00
Fix type of _get_osfhandle foreign import

Fixes #24601.

- - - - -
00d3ecf0 by Alan Zimmerman at 2024-03-29T12:19:10+00:00
EPA: Extend StringLiteral range to include trailing commas

This goes slightly against the exact printing philosophy where
trailing decorations should be in an annotation, but the
practicalities of adding it to the WarningTxt environment, and the
problems caused by deviating do not make a more principles approach
worthwhile.

- - - - -
efab3649 by brandon s allbery kf8nh at 2024-03-31T20:04:01-04:00
clarify Note [Preproccesing invocations]

- - - - -
c8a4c050 by Ben Gamari at 2024-04-02T12:50:35-04:00
rts: Fix TSAN_ENABLED CPP guard

This should be `#if defined(TSAN_ENABLED)`, not `#if TSAN_ENABLED`,
lest we suffer warnings.

- - - - -
e91dad93 by Cheng Shao at 2024-04-02T12:50:35-04:00
rts: fix errors when compiling with TSAN

This commit fixes rts compilation errors when compiling with TSAN:

- xxx_FENCE macros are redefined and trigger CPP warnings.
- Use SIZEOF_W. WORD_SIZE_IN_BITS is provided by MachDeps.h which
  Cmm.h doesn't include by default.

- - - - -
a9ab9455 by Cheng Shao at 2024-04-02T12:50:35-04:00
rts: fix clang-specific errors when compiling with TSAN

This commit fixes clang-specific rts compilation errors when compiling
with TSAN:

- clang doesn't have -Wtsan flag
- Fix prototype of ghc_tsan_* helper functions
- __tsan_atomic_* functions aren't clang built-ins and
  sanitizer/tsan_interface_atomic.h needs to be included
- On macOS, TSAN runtime library is
  libclang_rt.tsan_osx_dynamic.dylib, not libtsan. -fsanitize-thread
  as a link-time flag will take care of linking the TSAN runtime
  library anyway so remove tsan as an rts extra library

- - - - -
865bd717 by Cheng Shao at 2024-04-02T12:50:35-04:00
compiler: fix github link to __tsan_memory_order in a comment

- - - - -
07cb627c by Cheng Shao at 2024-04-02T12:50:35-04:00
ci: improve TSAN CI jobs

- Run TSAN jobs with +thread_sanitizer_cmm which enables Cmm
  instrumentation as well.
- Run TSAN jobs in deb12 which ships gcc-12, a reasonably recent gcc
  that @bgamari confirms he's using in #GHC:matrix.org. Ideally we
  should be using latest clang release for latest improvements in
  sanitizers, though that's left as future work.
- Mark TSAN jobs as manual+allow_failure in validate pipelines. The
  purpose is to demonstrate that we have indeed at least fixed
  building of TSAN mode in CI without blocking the patch to land, and
  once merged other people can begin playing with TSAN using their own
  dev setups and feature branches.

- - - - -
a1c18c7b by Andrei Borzenkov at 2024-04-02T12:51:11-04:00
Merge tc_infer_hs_type and tc_hs_type into one function using ExpType philosophy (#24299, #23639)

This patch implements refactoring which is a prerequisite to
updating kind checking of type patterns. This is a huge simplification
of the main worker that checks kind of HsType.

It also fixes the issues caused by previous code duplication, e.g.
that we didn't add module finalizers from splices in inference mode.

- - - - -
817e8936 by Rodrigo Mesquita at 2024-04-02T20:13:05-04:00
th: Hide the Language.Haskell.TH.Lib.Internal module from haddock

Fixes #24562

- - - - -
b36ee57b by Sylvain Henry at 2024-04-02T20:13:46-04:00
JS: reenable h$appendToHsString optimization (#24495)

The optimization introducing h$appendToHsString wasn't kicking in
anymore (while it did in 9.8.1) because of the changes introduced in #23270 (7e0c8b3bab30).
This patch reenables the optimization by matching on case-expression, as
done in Cmm for unpackCString# standard thunks.

The test is also T24495 added in the next commits (two commits for ease
of backporting to 9.8).

- - - - -
527616e9 by Sylvain Henry at 2024-04-02T20:13:46-04:00
JS: fix h$appendToHsString implementation (#24495)

h$appendToHsString needs to wrap its argument in an updatable thunk
to behave like unpackAppendCString#. Otherwise if a SingleEntry thunk is
passed, it is stored as-is in a CONS cell, making the resulting list
impossible to deepseq (forcing the thunk doesn't update the contents of
the CONS cell)!

The added test checks that the optimization kicks in and that
h$appendToHsString works as intended.

Fix #24495

- - - - -
faa30b41 by Simon Peyton Jones at 2024-04-02T20:14:22-04:00
Deal with duplicate tyvars in type declarations

GHC was outright crashing before this fix: #24604

- - - - -
e0b0c717 by Simon Peyton Jones at 2024-04-02T20:14:58-04:00
Try using MCoercion in exprIsConApp_maybe

This is just a simple refactor that makes exprIsConApp_maybe
a little bit more direct, simple, and efficient.

Metrics: compile_time/bytes allocated
    geo. mean                                          -0.1%
    minimum                                            -2.0%
    maximum                                            -0.0%

Not a big gain, but worthwhile given that the code is, if anything,
easier to grok.

- - - - -
15f4d867 by Duncan Coutts at 2024-04-03T01:27:17-04:00
Initial ./configure support for selecting I/O managers

In this patch we just define new CPP vars, but don't yet use them
or replace the existing approach. That will follow.

The intention here is that every I/O manager can be enabled/disabled at
GHC build time (subject to some constraints). More than one I/O manager
can be enabled to be built. At least one I/O manager supporting the
non-threaded RTS must be enabled as well as at least one supporting the
non-threaded RTS. The I/O managers enabled here will become the choices
available at runtime at RTS startup (in later patches). The choice can
be made with RTS flags. There are separate sets of choices for the
threaded and non-threaded RTS ways, because most I/O managers are
specific to these ways. Furthermore we must establish a default I/O
manager for the threaded and non-threaded RTS.

Most I/O managers are platform-specific so there are checks to ensure
each one can be enabled on the platform. Such checks are also where (in
future) any system dependencies (e.g. libraries) can be checked.

The output is a set of CPP flags (in the mk/config.h file), with one
flag per named I/O manager:
* IOMGR_BUILD_<name>                : which ones should be built (some)
* IOMGR_DEFAULT_NON_THREADED_<name> : which one is default (exactly one)
* IOMGR_DEFAULT_THREADED_<name>     : which one is default (exactly one)

and a set of derived flags in IOManager.h

* IOMGR_ENABLED_<name>              : enabled for the current RTS way

Note that IOMGR_BUILD_<name> just says that an I/O manager will be
built for _some_ RTS way (i.e. threaded or non-threaded). The derived
flags IOMGR_ENABLED_<name> in IOManager.h say if each I/O manager is
enabled in the "current" RTS way. These are the ones that can be used
for conditional compilation of the I/O manager code.

Co-authored-by: Pi Delport <pi at well-typed.com>

- - - - -
85b0f87a by Duncan Coutts at 2024-04-03T01:27:17-04:00
Change the handling of the RTS flag --io-manager=

Now instead of it being just used on Windows to select between the WinIO
vs the MIO or Win32-legacy I/O managers, it is now used on all platforms
for selecting the I/O manager to use.

Right now it remains the case that there is only an actual choice on
Windows, but that will change later.

Document the --io-manager flag in the user guide.

This change is also reflected in the RTS flags types in the base
library. Deprecate the export of IoSubSystem from GHC.RTS.Flags with a
message to import it from GHC.IO.Subsystem.

The way the 'IoSubSystem' is detected also changes. Instead of looking
at the RTS flag, there is now a C bool global var in the RTS which gets
set on startup when the I/O manager is selected. This bool var says
whether the selected I/O manager classifies as "native" on Windows,
which in practice means the WinIO I/O manager has been selected.

Similarly, the is_io_mng_native_p RTS helper function is re-implemented
in terms of the selected I/O manager, rather than based on the RTS
flags.

We do however remove the ./configure --native-io-manager flag because
we're bringing the WinIO/MIO/Win32-legacy choice under the new general
scheme for selecting I/O managers, and that new scheme involves no
./configure time user choices, just runtime RTS flag choices.

- - - - -
1a8f020f by Duncan Coutts at 2024-04-03T01:27:17-04:00
Convert {init,stop,exit}IOManager to switch style

Rather than ad-hoc cpp conitionals on THREADED_RTS and mingw32_HOST_OS,
we use a style where we switch on the I/O manager impl, with cases for
each I/O manager impl.

- - - - -
a5bad3d2 by Duncan Coutts at 2024-04-03T01:27:17-04:00
Split up the CapIOManager content by I/O manager

Using the new IOMGR_ENABLED_<name> CPP defines.

- - - - -
1d36e609 by Duncan Coutts at 2024-04-03T01:27:17-04:00
Convert initIOManagerAfterFork and wakeupIOManager to switch style

- - - - -
c2f26f36 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Move most of waitRead#/Write# from cmm to C

Moves it into the IOManager.c where we can follow the new pattern of
switching on the selected I/O manager.

- - - - -
457705a8 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Move most of the delay# impl from cmm to C

Moves it into the IOManager.c where we can follow the new pattern of
switching on the selected I/O manager.

Uses a new IOManager API: syncDelay, following the naming convention of
sync* for thread-synchronous I/O & timer/delay operations.

As part of porting from cmm to C, we maintain the rule that the
why_blocked gets accessed using load acquire and store release atomic
memory operations. There was one exception to this rule: in the delay#
primop cmm code on posix (not win32), the why_blocked was being updated
using a store relaxed, not a store release. I've no idea why. In this
convesion I'm playing it safe here and using store release consistently.

- - - - -
e93058e0 by Duncan Coutts at 2024-04-03T01:27:18-04:00
insertIntoSleepingQueue is no longer public

No longer defined in IOManager.h, just a private function in
IOManager.c. Since it is no longer called from cmm code, just from
syncDelay. It ought to get moved further into the select() I/O manager
impl, rather than living in IOManager.c.

On the other hand appendToIOBlockedQueue is still called from cmm code
in the win32-legacy I/O manager primops async{Read,Write}#, and it is
also used by the select() I/O manager. Update the CPP and comments to
reflect this.

- - - - -
60ce9910 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Move anyPendingTimeoutsOrIO impl from .h to .c

The implementation is eventually going to need to use more private
things, which will drag in unwanted includes into IOManager.h, so it's
better to move the impl out of the header file and into the .c file, at
the slight cost of it no longer being inline.

At the same time, change to the "switch (iomgr_type)" style.

- - - - -
f70b8108 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Take a simpler approach to gcc warnings in IOManager.c

We have lots of functions with conditional implementations for
different I/O managers. Some functions, for some I/O managers,
naturally have implementations that do nothing or barf. When only one
such I/O manager is enabled then the whole function implementation will
have an implementation that does nothing or barfs. This then results in
warnings from gcc that parameters are unused, or that the function
should be marked with attribute noreturn (since barf does not return).
The USED_IF_THREADS trick for fine-grained warning supression is fine
for just two cases, but an equivalent here would need
USED_IF_THE_ONLY_ENABLED_IOMGR_IS_X_OR_Y which would have combinitorial
blowup. So we take a coarse grained approach and simply disable these
two warnings for the whole file.

So we use a GCC pragma, with its handy push/pop support:

 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wsuggest-attribute=noreturn"
 #pragma GCC diagnostic ignored "-Wunused-parameter"

...

 #pragma GCC diagnostic pop

- - - - -
b48805b9 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Add a new trace class for the iomanager

It makes sense now for it to be separate from the scheduler class of
tracers.

Enabled with +RTS -Do. Document the -Do debug flag in the user guide.

- - - - -
f0c1f862 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Have the throwTo impl go via (new) IOManager APIs

rather than directly operating on the IO manager's data structures.

Specifically, when thowing an async exception to a thread that is
blocked waiting for I/O or waiting for a timer, then we want to cancel
that I/O waiting or cancel the timer. Currently this is done directly in
removeFromQueues() in RaiseAsync.c. We want it to go via proper APIs
both for modularity but also to let us support multiple I/O managers.

So add sync{IO,Delay}Cancel, which is the cancellation for the
corresponding sync{IO,Delay}. The implementations of these use the usual
"switch (iomgr_type)" style.

- - - - -
4f9e9c4e by Duncan Coutts at 2024-04-03T01:27:18-04:00
Move awaitEvent into a proper IOManager API

and have the scheduler use it.

Previously the scheduler calls awaitEvent directly, and awaitEvent is
implemented directly in the RTS I/O managers (select, win32). This
relies on the old scheme where there's a single active I/O manager for
each platform and RTS way.

We want to move that to go via an API in IOManager.{h,c} which can then
call out to the active I/O manager.

Also take the opportunity to split awaitEvent into two. The existing
awaitEvent has a bool wait parameter, to say if the call should be
blocking or non-blocking. We split this into two separate functions:
pollCompletedTimeoutsOrIO and awaitCompletedTimeoutsOrIO. We split them
for a few reasons: they have different post-conditions (specifically the
await version is supposed to guarantee that there are threads runnable
when it completes). Secondly, it is also anticipated that in future I/O
managers the implementations of the two cases will be simpler if they
are separated.

- - - - -
5ad4b30f by Duncan Coutts at 2024-04-03T01:27:18-04:00
Rename awaitEvent in select and win32 I/O managers

These are now just called from IOManager.c and are the per-I/O manager
backend impls (whereas previously awaitEvent was the entry point).

Follow the new naming convention in the IOManager.{h,c} of
awaitCompletedTimeoutsOrIO, with the I/O manager's name as a suffix:
so awaitCompletedTimeoutsOrIO{Select,Win32}.

- - - - -
d30c6bc6 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Tidy up a couple things in Select.{h,c}

Use the standard #include {Begin,End}Private.h style rather than
RTS_PRIVATE on individual decls.

And conditionally build the code for the select I/O manager based on
the new CPP IOMGR_ENABLED_SELECT rather than on THREADED_RTS.

- - - - -
4161f516 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Add an IOManager API for scavenging TSO blocked_info

When the GC scavenges a TSO it needs to scavenge the tso->blocked_info
but the blocked_info is a big union and what lives there depends on the
two->why_blocked, which for I/O-related reasons is something that in
principle is the responsibility of the I/O manager and not the GC. So
the right thing to do is for the GC to ask the I/O manager to sscavenge
the blocked_info if it encounters any I/O-related why_blocked reasons.

So we add scavengeTSOIOManager in IOManager.{h,c} with the usual style.

Now as it happens, right now, there is no special scavenging to do, so
the implementation of scavengeTSOIOManager is a fancy no-op. That's
because the select I/O manager uses only the fd and target members,
which are not GC pointers, and the win32-legacy I/O manager _ought_ to
be using GC-managed heap objects for the StgAsyncIOResult but it is
actually usingthe C heap, so again no GC pointers. If the win32-legacy
were doing this more sensibly, then scavengeTSOIOManager would be the
right place to do the GC magic.

Future I/O managers will need GC heap objects in the tso->blocked_info
and will make use of this functionality.

- - - - -
94a87d21 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Add I/O manager API notifyIOManagerCapabilitiesChanged

Used in setNumCapabilities.

It only does anything for MIO on Posix.

Previously it always invoked Haskell code, but that code only did
anything on non-Windows (and non-JS), and only threaded. That currently
effectively means the MIO I/O manager on Posix.

So now it only invokes it for the MIO Posix case.

- - - - -
3be6d591 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Select an I/O manager early in RTS startup

We need to select the I/O manager to use during startup before the
per-cap I/O manager initialisation.

- - - - -
aaa294d0 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Make struct CapIOManager be fully opaque

Provide an opaque (forward) definition in Capability.h (since the cap
contains a *CapIOManager) and then only provide a full definition in
a new file IOManagerInternals.h. This new file is only supposed to be
included by the IOManager implementation, not by its users. So that
means IOManager.c and individual I/O manager implementations.

The posix/Signals.c still needs direct access, but that should be
eliminated. Anything that needs direct access either needs to be clearly
part of an I/O manager (e.g. the sleect() one) or go via a proper API.

- - - - -
877a2a80 by Duncan Coutts at 2024-04-03T01:27:18-04:00
The select() I/O manager does have some global initialisation

It's just to make sure an exception CAF is a GC root.

- - - - -
9c51473b by Duncan Coutts at 2024-04-03T01:27:18-04:00
Add tracing for the main I/O manager actions

Using the new tracer class.

Note: The unconditional definition of showIOManager should be
compatible with the debugTrace change in 7c7d1f6.

Co-authored-by: Pi Delport <pi at well-typed.com>

- - - - -
c7d3e3a3 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Include the default I/O manager in the +RTS --info output

Document the extra +RTS --info output in the user guide

- - - - -
8023bad4 by Duncan Coutts at 2024-04-03T01:27:18-04:00
waitRead# / waitWrite# do not work for win32-legacy I/O manager

Previously it was unclear that they did not work because the code path
was shared with other I/O managers (in particular select()).

Following the code carefully shows that what actually happens is that
the calling thread would block forever: the thread will be put into the
blocked queue, but no other action is scheduled that will ever result in
it getting unblocked.

It's better to just fail loudly in case anyone accidentally calls it,
also it's less confusing code.

- - - - -
83a74d20 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Conditionally ignore some GCC warnings

Some GCC versions don't know about some warnings, and they complain
that we're ignoring unknown warnings. So we try to ignore the warning
based on the GCC version.

- - - - -
1adc6fa4 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Accept changes to base-exports

All the changes are in fact not changes at all.

Previously, the IoSubSystem data type was defined in GHC.RTS.Flags and
exported from both GHC.RTS.Flags and GHC.IO.SubSystem. Now, the data
type is defined in GHC.IO.SubSystem and still exported from both
modules.

Therefore, the same exports and same instances are still available from
both modules. But the base-exports records only the defining module, and
so it looks like a change when it is fully compatible.

Related: we do add a deprecation to the export of the type via
GHC.RTS.Flags, telling people to use the export from GHC.IO.SubSystem.

Also the sort order for some unrelated Show instances changed. No idea
why.

The same changes apply in the other versions, with a few more changes
due to sort order weirdness.

- - - - -
8d950968 by Duncan Coutts at 2024-04-03T01:27:18-04:00
Accept metric decrease in T12227

I can't think of any good reason that anything in this MR should have
changed the number of allocations, up or down.

(Yes this is an empty commit.)

Metric Decrease:
    T12227

- - - - -
e869605e by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Several improvements to the handling of coercions

* Make `mkSymCo` and `mkInstCo` smarter
  Fixes #23642

* Fix return role of `SelCo` in the coercion optimiser.
  Fixes #23617

* Make the coercion optimiser `opt_trans_rule` work better for newtypes
  Fixes #23619

- - - - -
1efd0714 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
FloatOut: improve floating for join point

See the new Note [Floating join point bindings].

* Completely get rid of the complicated join_ceiling nonsense, which
  I have never understood.

* Do not float join points at all, except perhaps to top level.

* Some refactoring around wantToFloat, to treat Rec and NonRec more
  uniformly

- - - - -
9c00154d by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Improve eta-expansion through call stacks

See Note [Eta expanding through CallStacks] in GHC.Core.Opt.Arity

This is a one-line change, that fixes an inconsistency
-               || isCallStackPredTy ty
+               || isCallStackPredTy ty || isCallStackTy ty

- - - - -
95a9a172 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Spelling, layout, pretty-printing only

- - - - -
bdf1660f by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Improve exprIsConApp_maybe a little

Eliminate a redundant case at birth.  This sometimes reduces
Simplifier iterations.

See Note [Case elim in exprIsConApp_maybe].

- - - - -
609cd32c by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Inline GHC.HsToCore.Pmc.Solver.Types.trvVarInfo

When exploring compile-time regressions after meddling with the Simplifier, I
discovered that GHC.HsToCore.Pmc.Solver.Types.trvVarInfo was very delicately
balanced.  It's a small, heavily used, overloaded function and it's important
that it inlines. By a fluke it was before, but at various times in my journey it
stopped doing so.  So I just added an INLINE pragma to it; no sense in depending
on a delicately-balanced fluke.

- - - - -
ae24c9bc by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Slight improvement in WorkWrap

Ensure that WorkWrap preserves lambda binders, in case of join points.  Sadly I
have forgotten why I made this change (it was while I was doing a lot of
meddling in the Simplifier, but
  * it does no harm,
  * it is slightly more efficient, and
  * presumably it made something better!

Anyway I have kept it in a separate commit.

- - - - -
e9297181 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Use named record fields for the CastIt { ... } data constructor

This is a pure refactor

- - - - -
b4581e23 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Remove a long-commented-out line

Pure refactoring

- - - - -
e026bdf2 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Simplifier improvements

This MR started as: allow the simplifer to do more in one pass,
arising from places I could see the simplifier taking two iterations
where one would do.  But it turned into a larger project, because
these changes unexpectedly made inlining blow up, especially join
points in deeply-nested cases.

The main changes are below.  There are also many new or rewritten Notes.

Avoiding simplifying repeatedly
~~~~~~~~~~~~~~~
See Note [Avoiding simplifying repeatedly]

* The SimplEnv now has a seInlineDepth field, which says how deep
  in unfoldings we are.  See Note [Inline depth] in Simplify.Env.
  Currently used only for the next point: avoiding repeatedly
  simplifying coercions.

* Avoid repeatedly simplifying coercions.
  see Note [Avoid re-simplifying coercions] in Simplify.Iteration
  As you'll see from the Note, this makes use of the seInlineDepth.

* Allow Simplify.Iteration.simplAuxBind to inline used-once things.
  This is another part of Note [Post-inline for single-use things], and
  is really good for reducing simplifier iterations in situations like
      case K e of { K x -> blah }
  wher x is used once in blah.

* Make GHC.Core.SimpleOpt.exprIsConApp_maybe do some simple case
  elimination.  Note [Case elim in exprIsConApp_maybe]

* Improve the case-merge transformation:
  - Move the main code to `GHC.Core.Utils.mergeCaseAlts`, to join `filterAlts`
    and friends.  See Note [Merge Nested Cases] in GHC.Core.Utils.
  - Add a new case for `tagToEnum#`; see wrinkle (MC3).
  - Add a new case to look through join points: see wrinkle (MC4)

postInlineUnconditionally
~~~~~~~~~~~~~~~~~~~~~~~~~
* Allow Simplify.Utils.postInlineUnconditionally to inline variables
  that are used exactly once. See Note [Post-inline for single-use things].

* Do not postInlineUnconditionally join point, ever.
  Doing so does not reduce allocation, which is the main point,
  and with join points that are used a lot it can bloat code.
  See point (1) of Note [Duplicating join points] in
  GHC.Core.Opt.Simplify.Iteration.

* Do not postInlineUnconditionally a strict (demanded) binding.
  It will not allocate a thunk (it'll turn into a case instead)
  so again the main point of inlining it doesn't hold.  Better
  to check per-call-site.

* Improve occurrence analyis for bottoming function calls, to help
  postInlineUnconditionally.  See Note [Bottoming function calls]
  in GHC.Core.Opt.OccurAnal

Inlining generally
~~~~~~~~~~~~~~~~~~
* In GHC.Core.Opt.Simplify.Utils.interestingCallContext,
  use RhsCtxt NonRecursive (not BoringCtxt) for a plain-seq case.
  See Note [Seq is boring]  Also, wrinkle (SB1), inline in that
  `seq` context only for INLINE functions (UnfWhen guidance).

* In GHC.Core.Opt.Simplify.Utils.interestingArg,
  - return ValueArg for OtherCon [c1,c2, ...], but
  - return NonTrivArg for OtherCon []
  This makes a function a little less likely to inline if all we
  know is that the argument is evaluated, but nothing else.

* isConLikeUnfolding is no longer true for OtherCon {}.
  This propagates to exprIsConLike.  Con-like-ness has /positive/
  information.

Join points
~~~~~~~~~~~
* Be very careful about inlining join points.
  See these two long Notes
    Note [Duplicating join points] in GHC.Core.Opt.Simplify.Iteration
    Note [Inlining join points] in GHC.Core.Opt.Simplify.Inline

* When making join points, don't do so if the join point is so small
  it will immediately be inlined; check uncondInlineJoin.

* In GHC.Core.Opt.Simplify.Inline.tryUnfolding, improve the inlining
  heuristics for join points. In general we /do not/ want to inline
  join points /even if they are small/.  See Note [Duplicating join points]
  GHC.Core.Opt.Simplify.Iteration.

  But sometimes we do: see Note [Inlining join points] in
  GHC.Core.Opt.Simplify.Inline; and the new `isBetterUnfoldingThan` function.

* Do not add an unfolding to a join point at birth.  This is a tricky one
  and has a long Note [Do not add unfoldings to join points at birth]
  It shows up in two places
  - In `mkDupableAlt` do not add an inlining
  - (trickier) In `simplLetUnfolding` don't add an unfolding for a
    fresh join point
  I am not fully satisifed with this, but it works and is well documented.

* In GHC.Core.Unfold.sizeExpr, make jumps small, so that we don't penalise
  having a non-inlined join point.

Performance changes
~~~~~~~~~~~~~~~~~~~
* Binary sizes fall by around 2.6%, according to nofib.

* Compile times improve slightly. Here are the figures over 1%.

  I investiate the biggest differnce in T18304. It's a very small module, just
  a few hundred nodes. The large percentage difffence is due to a single
  function that didn't quite inline before, and does now, making code size a
  bit bigger.  I decided gains outweighed the losses.

    Metrics: compile_time/bytes allocated (changes over +/- 1%)
    ------------------------------------------------
           CoOpt_Singletons(normal)   -9.2% GOOD
                LargeRecord(normal)  -23.5% GOOD
MultiComponentModulesRecomp(normal)   +1.2%
MultiLayerModulesTH_OneShot(normal)   +4.1%  BAD
                  PmSeriesS(normal)   -3.8%
                  PmSeriesV(normal)   -1.5%
                     T11195(normal)   -1.3%
                     T12227(normal)  -20.4% GOOD
                     T12545(normal)   -3.2%
                     T12707(normal)   -2.1% GOOD
                     T13253(normal)   -1.2%
                 T13253-spj(normal)   +8.1%  BAD
                     T13386(normal)   -3.1% GOOD
                     T14766(normal)   -2.6% GOOD
                     T15164(normal)   -1.4%
                     T15304(normal)   +1.2%
                     T15630(normal)   -8.2%
                    T15630a(normal)          NEW
                     T15703(normal)  -14.7% GOOD
                     T16577(normal)   -2.3% GOOD
                     T17516(normal)  -39.7% GOOD
                     T18140(normal)   +1.2%
                     T18223(normal)  -17.1% GOOD
                     T18282(normal)   -5.0% GOOD
                     T18304(normal)  +10.8%  BAD
                     T18923(normal)   -2.9% GOOD
                      T1969(normal)   +1.0%
                     T19695(normal)   -1.5%
                     T20049(normal)  -12.7% GOOD
                    T21839c(normal)   -4.1% GOOD
                      T3064(normal)   -1.5%
                      T3294(normal)   +1.2%  BAD
                      T4801(normal)   +1.2%
                      T5030(normal)  -15.2% GOOD
                   T5321Fun(normal)   -2.2% GOOD
                      T6048(optasm)  -16.8% GOOD
                       T783(normal)   -1.2%
                      T8095(normal)   -6.0% GOOD
                      T9630(normal)   -4.7% GOOD
                      T9961(normal)   +1.9%  BAD
                      WWRec(normal)   -1.4%
        info_table_map_perf(normal)   -1.3%
                 parsing001(normal)   +1.5%

                          geo. mean   -2.0%
                          minimum    -39.7%
                          maximum    +10.8%

* Runtimes generally improve. In the testsuite perf/should_run gives:
   Metrics: runtime/bytes allocated
   ------------------------------------------
             Conversions(normal)   -0.3%
                 T13536a(optasm)  -41.7% GOOD
                   T4830(normal)   -0.1%
           haddock.Cabal(normal)   -0.1%
            haddock.base(normal)   -0.1%
        haddock.compiler(normal)   -0.1%

                       geo. mean   -0.8%
                       minimum    -41.7%
                       maximum     +0.0%

* For runtime, nofib is a better test.  The news is mostly good.
  Here are the number more than +/- 0.1%:

    # bytes allocated
    ==========================++==========
       imaginary/digits-of-e1 ||  -14.40%
       imaginary/digits-of-e2 ||   -4.41%
          imaginary/paraffins ||   -0.17%
               imaginary/rfib ||   -0.15%
       imaginary/wheel-sieve2 ||   -0.10%
                real/compress ||   -0.47%
                   real/fluid ||   -0.10%
                  real/fulsom ||   +0.14%
                  real/gamteb ||   -1.47%
                      real/gg ||   -0.20%
                   real/infer ||   +0.24%
                     real/pic ||   -0.23%
                  real/prolog ||   -0.36%
                     real/scs ||   -0.46%
                 real/smallpt ||   +4.03%
        shootout/k-nucleotide ||  -20.23%
              shootout/n-body ||   -0.42%
       shootout/spectral-norm ||   -0.13%
              spectral/boyer2 ||   -3.80%
         spectral/constraints ||   -0.27%
          spectral/hartel/ida ||   -0.82%
                spectral/mate ||  -20.34%
                spectral/para ||   +0.46%
             spectral/rewrite ||   +1.30%
              spectral/sphere ||   -0.14%
    ==========================++==========
                    geom mean ||   -0.59%

    real/smallpt has a huge nest of local definitions, and I
    could not pin down a reason for a regression.  But there are
    three big wins!

Metric Decrease:
    CoOpt_Singletons
    LargeRecord
    T12227
    T12707
    T13386
    T13536a
    T14766
    T15703
    T16577
    T17516
    T18223
    T18282
    T18923
    T21839c
    T20049
    T5321Fun
    T5030
    T6048
    T8095
    T9630
    T783
Metric Increase:
    MultiLayerModulesTH_OneShot
    T13253-spj
    T18304
    T18698a
    T9961
    T3294

- - - - -
27db3c5e by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Testsuite message changes from simplifier improvements

- - - - -
271a7812 by Simon Peyton Jones at 2024-04-03T01:27:55-04:00
Account for bottoming functions in OccurAnal

This fixes #24582, a small but long-standing bug

- - - - -
0fde229f by Ben Gamari at 2024-04-04T07:04:58-04:00
testsuite: Introduce template-haskell-exports test

- - - - -
0c4a9686 by Luite Stegeman at 2024-04-04T07:05:39-04:00
Update correct counter in bumpTickyAllocd

- - - - -
5f085d3a by Fendor at 2024-04-04T14:47:33-04:00
Replace `SizedSeq` with `FlatBag` for flattened structure

LinkedLists are notoriously memory ineffiecient when all we do is
traversing a structure.
As 'UnlinkedBCO' has been identified as a data structure that impacts
the overall memory usage of GHCi sessions, we avoid linked lists and
prefer flattened structure for storing.

We introduce a new memory efficient representation of sequential
elements that has special support for the cases:

* Empty
* Singleton
* Tuple Elements

This improves sharing in the 'Empty' case and avoids the overhead of
'Array' until its constant overhead is justified.

- - - - -
82cfe10c by Fendor at 2024-04-04T14:47:33-04:00
Compact FlatBag array representation

`Array` contains three additional `Word`'s we do not need in `FlatBag`. Move
`FlatBag` to `SmallArray`.

Expand the API of SmallArray by `sizeofSmallArray` and add common
traversal functions, such as `mapSmallArray` and `foldMapSmallArray`.
Additionally, allow users to force the elements of a `SmallArray`
via `rnfSmallArray`.

- - - - -
36a75b80 by Andrei Borzenkov at 2024-04-04T14:48:10-04:00
Change how invisible patterns represented in  haskell syntax and TH AST (#24557)

Before this patch:
  data ArgPat p
    = InvisPat (LHsType p)
    | VisPat (LPat p)

With this patch:
  data Pat p
    = ...
    | InvisPat (LHsType p)
    ...

And the same transformation in the TH land. The rest of the
changes is just updating code to handle new AST and writing tests
to check if it is possible to create invalid states using TH.

Metric Increase:
    MultiLayerModulesTH_OneShot

- - - - -
28009fbc by Matthew Pickering at 2024-04-04T14:48:46-04:00
Fix off by one error in seekBinNoExpand and seekBin

- - - - -
9b9e031b by Ben Gamari at 2024-04-04T21:30:08-04:00
compiler: Allow more types in GHCForeignImportPrim

For many, many years `GHCForeignImportPrim` has suffered from the rather
restrictive limitation of not allowing any non-trivial types in arguments
or results. This limitation was justified by the code generator allegely
barfing in the presence of such types.

However, this restriction appears to originate well before the NCG
rewrite and the new NCG does not appear to have any trouble with such
types (see the added `T24598` test). Lift this restriction.

Fixes #24598.

- - - - -
1324b862 by Alan Zimmerman at 2024-04-04T21:30:44-04:00
EPA: Use EpaLocation not SrcSpan in ForeignDecls

This allows us to update them for makeDeltaAst in ghc-exactprint

- - - - -
19883a23 by Alan Zimmerman at 2024-04-05T16:58:17-04:00
EPA: Use EpaLocation for RecFieldsDotDot

So we can update it to a delta position in makeDeltaAst if needed.

- - - - -
e8724327 by Matthew Pickering at 2024-04-05T16:58:53-04:00
Remove accidentally committed test.hs

- - - - -
88cb3e10 by Fendor at 2024-04-08T09:03:34-04:00
Avoid UArray when indexing is not required

`UnlinkedBCO`'s can occur many times in the heap. Each `UnlinkedBCO`
references two `UArray`'s but never indexes them. They are only needed
to encode the elements into a `ByteArray#`. The three words for
the lower bound, upper bound and number of elements are essentially
unused, thus we replace `UArray` with a wrapper around `ByteArray#`.
This saves us up to three words for each `UnlinkedBCO`.

Further, to avoid re-allocating these words for `ResolvedBCO`, we repeat
the procedure for `ResolvedBCO` and add custom `Binary` and `Show` instances.

For example, agda's repl session has around 360_000 UnlinkedBCO's,
so avoiding these three words is already saving us around 8MB residency.

- - - - -
f2cc1107 by Fendor at 2024-04-08T09:04:11-04:00
Never UNPACK `FastMutInt` for counting z-encoded `FastString`s

In `FastStringTable`, we count the number of z-encoded FastStrings
that exist in a GHC session.
We used to UNPACK the counters to not waste memory, but live retainer
analysis showed that we allocate a lot of `FastMutInt`s, retained by
`mkFastZString`.

We lazily compute the `FastZString`, only incrementing the counter when the `FastZString` is
forced.
The function `mkFastStringWith` calls `mkZFastString` and boxes the
`FastMutInt`, leading to the following core:

    mkFastStringWith
      = \ mk_fs _  ->
             = case stringTable of
                { FastStringTable _ n_zencs segments# _ ->
                    ...
                         case ((mk_fs (I# ...) (FastMutInt n_zencs))
                            `cast` <Co:2> :: ...)
                            ...

Marking this field as `NOUNPACK` avoids this reboxing, eliminating the
allocation of a fresh `FastMutInt` on every `FastString` allocation.

- - - - -
c6def949 by Matthew Pickering at 2024-04-08T16:06:51-04:00
Force in_multi to avoid retaining entire hsc_env

- - - - -
fbb91a63 by Fendor at 2024-04-08T16:06:51-04:00
Eliminate name thunk in declaration fingerprinting

Thunk analysis showed that we have about 100_000 thunks (in agda and
`-fwrite-simplified-core`) pointing to the name of the name decl.
Forcing this thunk fixes this issue.

The thunk created here is retained by the thunk created by forkM, it is
better to eagerly force this because the result (a `Name`) is already
retained indirectly via the `IfaceDecl`.

- - - - -
3b7b0c1c by Alan Zimmerman at 2024-04-08T16:07:27-04:00
EPA: Use EpaLocation in WarningTxt

This allows us to use an EpDelta if needed when using makeDeltaAst.

- - - - -
12b997df by Alan Zimmerman at 2024-04-08T16:07:27-04:00
EPA: Move DeltaPos and EpaLocation' into GHC.Types.SrcLoc

This allows us to use a NoCommentsLocation for the possibly trailing
comma location in a StringLiteral.
This in turn allows us to correctly roundtrip via makeDeltaAst.

- - - - -
868c8a78 by Fendor at 2024-04-09T08:51:50-04:00
Prefer packed representation for CompiledByteCode

As there are many 'CompiledByteCode' objects alive during a GHCi
session, representing its element in a more packed manner improves space
behaviour at a minimal cost.

When running GHCi on the agda codebase, we find around 380 live
'CompiledByteCode' objects. Packing their respective 'UnlinkedByteCode'
can save quite some pointers.

- - - - -
be3bddde by Alan Zimmerman at 2024-04-09T08:52:26-04:00
EPA: Capture all comments in a ClassDecl

Hopefully the final fix needed for #24533

- - - - -
3d0806fc by Jade at 2024-04-10T05:39:53-04:00
Validate -main-is flag using parseIdentifier

Fixes #24368

- - - - -
dd530bb7 by Rodrigo Mesquita at 2024-04-10T05:40:29-04:00
rts: free error message before returning

Fixes a memory leak in rts/linker/PEi386.c

- - - - -
e008a19a by Alexis King at 2024-04-10T05:40:29-04:00
linker: Avoid linear search when looking up Haskell symbols via dlsym

See the primary Note [Looking up symbols in the relevant objects] for a
more in-depth explanation.

When dynamically loading a Haskell symbol (typical when running a splice or
GHCi expression), before this commit we would search for the symbol in
all dynamic libraries that were loaded. However, this could be very
inefficient when too many packages are loaded (which can happen if there are
many package dependencies) because the time to lookup the would be
linear in the number of packages loaded.

This commit drastically improves symbol loading performance by
introducing a mapping from units to the handles of corresponding loaded
dlls. These handles are returned by dlopen when we load a dll, and can
then be used to look up in a specific dynamic library.

Looking up a given Name is now much more precise because we can get
lookup its unit in the mapping and lookup the symbol solely in the
handles of the dynamic libraries loaded for that unit.

In one measurement, the wait time before the expression was executed
went from +-38 seconds down to +-2s.

This commit also includes Note [Symbols may not be found in pkgs_loaded],
explaining the fallback to the old behaviour in case no dll can be found
in the unit mapping for a given Name.

Fixes #23415

Co-authored-by: Rodrigo Mesquita (@alt-romes)

- - - - -
dcfaa190 by Rodrigo Mesquita at 2024-04-10T05:40:29-04:00
rts: Make addDLL a wrapper around loadNativeObj

Rewrite the implementation of `addDLL` as a wrapper around the more
principled `loadNativeObj` rts linker function. The latter should be
preferred while the former is preserved for backwards compatibility.

`loadNativeObj` was previously only available on ELF platforms, so this
commit further refactors the rts linker to transform loadNativeObj_ELF
into loadNativeObj_POSIX, which is available in ELF and MachO platforms.

The refactor made it possible to remove the `dl_mutex` mutex in favour
of always using `linker_mutex` (rather than a combination of both).

Lastly, we implement `loadNativeObj` for Windows too.

- - - - -
12931698 by Rodrigo Mesquita at 2024-04-10T05:40:29-04:00
Use symbol cache in internal interpreter too

This commit makes the symbol cache that was used by the external
interpreter available for the internal interpreter too.

This follows from the analysis in #23415 that suggests the internal
interpreter could benefit from this cache too, and that there is no good
reason not to have the cache for it too. It also makes it a bit more
uniform to have the symbol cache range over both the internal and
external interpreter.

This commit also refactors the cache into a function which is used by
both `lookupSymbol` and also by `lookupSymbolInDLL`, extending the
caching logic to `lookupSymbolInDLL` too.

- - - - -
dccd3ea1 by Ben Gamari at 2024-04-10T05:40:29-04:00
testsuite: Add test for lookupSymbolInNativeObj

- - - - -
1b1a92bd by Alan Zimmerman at 2024-04-10T05:41:05-04:00
EPA: Remove unnecessary XRec in CompleteMatchSig

The XRec for [LIdP pass] is not needed for exact printing, remove it.

- - - - -
6e18ce2b by Ben Gamari at 2024-04-12T08:16:09-04:00
users-guide: Clarify language extension documentation

Over the years the users guide's language extension documentation has
gone through quite a few refactorings. In the process some of the
descriptions have been rendered non-sensical. For instance, the
description of `NoImplicitPrelude` actually describes the semantics of
`ImplicitPrelude`.

To fix this we:

 * ensure that all extensions are named in their "positive" sense (e.g.
   `ImplicitPrelude` rather than `NoImplicitPrelude`).
 * rework the documentation to avoid flag-oriented wording
   like "enable" and "disable"
 * ensure that the polarity of the documentation is consistent with
   reality.

Fixes #23895.

- - - - -
a933aff3 by Zubin Duggal at 2024-04-12T08:16:45-04:00
driver: Make `checkHomeUnitsClosed` faster

The implementation of `checkHomeUnitsClosed` was traversing every single path
in the unit dependency graph - this grows exponentially and quickly grows to be
infeasible on larger unit dependency graphs.

Instead we replace this with a faster implementation which follows from the
specificiation of the closure property - there is a closure error if there are
units which are both are both (transitively) depended upon by home units and
(transitively) depend on home units, but are not themselves home units.

To compute the set of units required for closure, we first compute the closure
of the unit dependency graph, then the transpose of this closure, and find all
units that are reachable from the home units in the transpose of the closure.

- - - - -
23c3e624 by Andreas Klebinger at 2024-04-12T08:17:21-04:00
RTS: Emit warning when -M < -H

Fixes #24487

- - - - -
d23afb8c by Ben Gamari at 2024-04-12T08:17:56-04:00
testsuite: Add broken test for CApiFFI with -fprefer-bytecode

See #24634.

- - - - -
a4bb3a51 by Ben Gamari at 2024-04-12T08:18:32-04:00
base: Deprecate GHC.Pack

As proposed in #21461.

Closes #21540.

- - - - -
55eb8c98 by Ben Gamari at 2024-04-12T08:19:08-04:00
ghc-internal: Fix mentions of ghc-internal in deprecation warnings

Closes #24609.

- - - - -
b0fbd181 by Ben Gamari at 2024-04-12T08:19:44-04:00
rts: Implement set_initial_registers for AArch64

Fixes #23680.

- - - - -
14c9ec62 by Ben Gamari at 2024-04-12T08:20:20-04:00
ghcup-metadata: Use Debian 9 binaries on Ubuntu 16, 17

Closes #24646.

- - - - -
35a1621e by Ben Gamari at 2024-04-12T08:20:55-04:00
Bump unix submodule to 2.8.5.1

Closes #24640.

- - - - -
a1c24df0 by Finley McIlwaine at 2024-04-12T08:21:31-04:00
Correct default -funfolding-use-threshold in docs

- - - - -
0255d03c by Oleg Grenrus at 2024-04-12T08:22:07-04:00
FastString is a __Modified__ UTF-8

- - - - -
c3489547 by Matthew Pickering at 2024-04-12T13:13:44-04:00
rts: Improve tracing message when nursery is resized

It is sometimes more useful to know how much bigger or smaller the
nursery got when it is resized.

In particular I am trying to investigate situations where we end up with
fragmentation due to the nursery (#24577)

- - - - -
5e4f4ba8 by Simon Peyton Jones at 2024-04-12T13:14:20-04:00
Don't generate wrappers for `type data` constructors with StrictData

Previously, the logic for checking if a data constructor needs a wrapper or not
would take into account whether the constructor's fields have explicit
strictness (e.g., `data T = MkT !Int`), but the logic would _not_ take into
account whether `StrictData` was enabled. This meant that something like `type
data T = MkT Int` would incorrectly generate a wrapper for `MkT` if
`StrictData` was enabled, leading to the horrible errors seen in #24620. To fix
this, we disable generating wrappers for `type data` constructors altogether.

Fixes #24620.

Co-authored-by: Ryan Scott <ryan.gl.scott at gmail.com>

- - - - -
dbdf1995 by Alex Mason at 2024-04-15T15:28:26+10:00
Implements MO_S_Mul2 and MO_U_Mul2 using the  UMULH, UMULL and SMULH instructions for AArch64

Also adds a test for MO_S_Mul2

- - - - -
42bd0407 by Teo Camarasu at 2024-04-16T20:06:39-04:00
Make template-haskell a stage1 package

Promoting template-haskell from a stage0 to a stage1 package means that
we can much more easily refactor template-haskell.

We implement this by duplicating the in-tree `template-haskell`.
A new `template-haskell-next` library is autogenerated to mirror `template-haskell`
`stage1:ghc` to depend on the new interface of the library including the
`Binary` instances without adding an explicit dependency on `template-haskell`.

This is controlled by the `bootstrap-th` cabal flag

When building `template-haskell` modules as part of this vendoring we do
not have access to quote syntax, so we cannot use variable quote
notation (`'Just`). So we either replace these with hand-written `Name`s
or hide the code behind CPP.

We can remove the `th_hack` from hadrian, which was required when
building stage0 packages using the in-tree `template-haskell` library.

For more details see Note [Bootstrapping Template Haskell].

Resolves #23536

Co-Authored-By: Sebastian Graf <sgraf1337 at gmail.com>
Co-Authored-By: Matthew Craven <5086-clyring at users.noreply.gitlab.haskell.org>

- - - - -
3d973e47 by Ben Gamari at 2024-04-16T20:07:15-04:00
Bump parsec submodule to 3.1.17.0

- - - - -
9d38bfa0 by Simon Peyton Jones at 2024-04-16T20:07:51-04:00
Clone CoVars in CorePrep

This MR addresses #24463.  It's all explained in the new

   Note [Cloning CoVars and TyVars]

- - - - -
0fe2b410 by Andreas Klebinger at 2024-04-16T20:08:27-04:00
NCG: Fix a bug where we errounously removed a required jump instruction.

Add a new method to the Instruction class to check if we can eliminate a
jump in favour of fallthrough control flow.

Fixes #24507

- - - - -
9f99126a by Teo Camarasu at 2024-04-16T20:09:04-04:00
Fix documentation preview from doc-tarball job

- Include all the .html files and assets in the job artefacts
- Include all the .pdf files in the job artefacts
- Mark the artefact as an "exposed" artefact meaning it turns up in the
  UI.

Resolves #24651

- - - - -
3a0642ea by Ben Gamari at 2024-04-16T20:09:39-04:00
rts: Ignore EINTR while polling in timerfd itimer implementation

While the RTS does attempt to mask signals, it may be that a foreign
library unmasks them. This previously caused benign warnings which we
now ignore.

See #24610.

- - - - -
9a53cd3f by Alan Zimmerman at 2024-04-16T20:10:15-04:00
EPA: Add additional comments field to AnnsModule

This is used in exact printing to store comments coming after the
`where` keyword but before any comments allocated to imports or decls.

It is used in ghc-exactprint, see
https://github.com/alanz/ghc-exactprint/commit/44bbed311fd8f0d053053fef195bf47c17d34fa7

- - - - -
e5c43259 by Bryan Richter at 2024-04-16T20:10:51-04:00
Remove unrunnable FreeBSD CI jobs

FreeBSD runner supply is inelastic. Currently there is only one, and
it's unavailable because of a hardware issue.

- - - - -
914eb49a by Ben Gamari at 2024-04-16T20:11:27-04:00
rel-eng: Fix mktemp usage in recompress-all

We need a temporary directory, not a file.

- - - - -
f30e4984 by Teo Camarasu at 2024-04-16T20:12:03-04:00
Fix ghc API link in docs/index.html

This was missing part of the unit ID meaning it would 404.

Resolves #24674

- - - - -
d7a3d6b5 by Ben Gamari at 2024-04-16T20:12:39-04:00
template-haskell: Declare TH.Lib.Internal as not-home

Rather than `hide`.

Closes #24659.

- - - - -
5eaa46e7 by Matthew Pickering at 2024-04-19T02:14:55-04:00
testsuite: Rename isCross() predicate to needsTargetWrapper()

isCross() was a misnamed because it assumed that all cross targets would
provide a target wrapper, but the two most common cross targets
(javascript, wasm) don't need a target wrapper.

Therefore we rename this predicate to `needsTargetWrapper()` so
situations in the testsuite where we can check whether running
executables requires a target wrapper or not.

- - - - -
55a9d699 by Simon Peyton Jones at 2024-04-19T02:15:32-04:00
Do not float HNFs out of lambdas

This MR adjusts SetLevels so that it is less eager to float a
HNF (lambda or constructor application) out of a lambda, unless
it gets to top level.

Data suggests that this change is a small net win:
 * nofib bytes-allocated falls by -0.09% (but a couple go up)
 * perf/should_compile bytes-allocated falls by -0.5%
 * perf/should_run bytes-allocated falls by -0.1%
See !12410 for more detail.

When fiddling elsewhere, I also found that this patch had a huge
positive effect on the (very delicate) test
  perf/should_run/T21839r
But that improvement doesn't show up in this MR by itself.

Metric Decrease:
    MultiLayerModulesRecomp
    T15703
    parsing001

- - - - -
f0701585 by Alan Zimmerman at 2024-04-19T02:16:08-04:00
EPA: Fix comments in mkListSyntaxTy0

Also extend the test to confirm.

Addresses #24669, 1 of 4

- - - - -
b01c01d4 by Serge S. Gulin at 2024-04-19T02:16:51-04:00
JS: set image `x86_64-linux-deb11-emsdk-closure` for build

- - - - -
c90c6039 by Alan Zimmerman at 2024-04-19T02:17:27-04:00
EPA: Provide correct span for PatBind

And remove unused parameter in checkPatBind

Contributes to #24669

- - - - -
bee54c24 by Krzysztof Gogolewski at 2024-04-19T11:13:00+02:00
Update quantification order following GHC haskell/haddock#23764

- - - - -
2814eb89 by Ben Gamari at 2024-04-19T18:57:05+02:00
hypsrc-test: Fix output of PositionPragmas.html

- - - - -
26036f96 by Alan Zimmerman at 2024-04-19T13:11:08-04:00
EPA: Fix span for PatBuilderAppType

Include the location of the prefix @ in the span for InVisPat.

Also removes unnecessary annotations from HsTP.

Contributes to #24669

- - - - -
dba03aab by Matthew Craven at 2024-04-19T13:11:44-04:00
testsuite: Give the pre_cmd for mhu-perf more time

- - - - -
d31fbf6c by Krzysztof Gogolewski at 2024-04-19T21:04:09-04:00
Fix quantification order for a `op` b and a %m -> b

Fixes #23764

Implements https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0640-tyop-quantification-order.rst

Updates haddock submodule.

- - - - -
385cd1c4 by Sebastian Graf at 2024-04-19T21:04:45-04:00
Make `seq#` a magic Id and inline it in CorePrep (#24124)

We can save much code and explanation in Tag Inference and StgToCmm by making
`seq#` a known-key Magic Id in `GHC.Internal.IO` and inline this definition in
CorePrep. See the updated `Note [seq# magic]`.
I also implemented a new `Note [Flatten case-bind]` to get better code for
otherwise nested case scrutinees.

I renamed the contructors of `ArgInfo` to use an `AI` prefix in order to
resolve the clash between `type CpeApp = CoreExpr` and the data constructor of
`ArgInfo`, as well as fixed typos in `Note [CorePrep invariants]`.

Fixes #24252 and #24124.

- - - - -
275e41a9 by Jade at 2024-04-20T11:10:40-04:00
Put the newline after errors instead of before them

This mainly has consequences for GHCi but also slightly alters how the
output of GHC on the commandline looks.

Fixes: #22499

- - - - -
dd339c7a by Teo Camarasu at 2024-04-20T11:11:16-04:00
Remove unecessary stage0 packages

Historically quite a few packages had to be stage0 as they depended on
`template-haskell` and that was stage0. In #23536 we made it so that was
no longer the case. This allows us to remove a bunch of packages from
this list.

A few still remain. A new version of `Win32` is required by
`semaphore-compat`. Including `Win32` in the stage0 set requires also
including `filepath` because otherwise Hadrian's dependency logic gets
confused. Once our boot compiler has a newer version of `Win32` all of
these will be able to be dropped.

Resolves #24652

- - - - -
2f8e3a25 by Alan Zimmerman at 2024-04-20T11:11:52-04:00
EPA: Avoid duplicated comments in splice decls

Contributes to #24669

- - - - -
c70b9ddb by Serge S. Gulin at 2024-04-21T16:33:43+03:00
JS: fix typos and namings (fixes #24602)

You may noted that I've also changed term of

```
, global "h$vt_double" ||= toJExpr IntV
```

See "IntV"

and

```
  WaitReadOp  -> \[] [fd] -> pure $ PRPrimCall $ returnS (app
"h$waidRead" [fd])
```

See "h$waidRead"

- - - - -
3db54f9b by Serge S. Gulin at 2024-04-21T16:33:43+03:00
JS: trivial checks for variable presence (fixes #24602)

- - - - -
777f108f by Serge S. Gulin at 2024-04-21T16:33:43+03:00
JS: fs module imported twice (by emscripten and by ghc-internal). ghc-internal import wrapped
in a closure to prevent conflict with emscripten (fixes #24602)

Better solution is to use some JavaScript module system like AMD, CommonJS or even UMD. It will be investigated at other issues.
At first glance we should try UMD (See https://github.com/umdjs/umd)

- - - - -
a45a5712 by Serge S. Gulin at 2024-04-21T16:33:43+03:00
JS: thread.js requires h$fds and h$fdReady to be declared for static code analysis, minimal
code copied from GHCJS (fixes #24602)

I've just copied some old pieces of GHCJS from publicly available sources (See https://github.com/Taneb/shims/blob/a6dd0202dcdb86ad63201495b8b5d9763483eb35/src/io.js#L607).
Also I didn't put details to h$fds. I took minimal and left only its object initialization: `var h$fds = {};`

- - - - -
ad90bf12 by Serge S. Gulin at 2024-04-21T16:33:43+03:00
JS: heap and stack overflows reporting defined as js hard failure (fixes #24602)

These errors were treated as a hard failure for browser application. The fix is trivial: just throw error.

- - - - -
5962fa52 by Serge S. Gulin at 2024-04-21T16:33:44+03:00
JS: Stubs for code without actual implementation detected by Google Closure Compiler (fixes #24602)

These errors were fixed just by introducing stubbed functions with throw for further implementation.

- - - - -
a0694298 by Serge S. Gulin at 2024-04-21T16:34:07+03:00
JS: Add externs to linker (fixes #24602)

After enabling jsdoc and built-in google closure compiler types I was needed to deal with the following:

1. Define NodeJS-environment types. I've just copied minimal set of externs from semi-official repo (see https://github.com/externs/nodejs/blob/6c6882c73efcdceecf42e7ba11f1e3e5c9c041f0/v8/nodejs.js#L8).
2. Define Emscripten-environment types: `HEAP8`. Emscripten already provides some externs in our code but it supposed to be run in some module system. And its definitions do not work well in plain bundle.
3. We have some functions which purpose is to add to functions some contextual information via function properties. These functions should be marked as `modifies` to let google closure compiler remove calls if these functions are not used actually by call graph. Such functions are: `h$o`, `h$sti`, `h$init_closure`, `h$setObjInfo`.
4. STG primitives such as registries and stuff from `GHC.StgToJS`. `dXX` properties were already present at externs generator function but they are started from `7`, not from `1`. This message is related: `// fixme does closure compiler bite us here?`

- - - - -
e58bb29f by Serge S. Gulin at 2024-04-21T16:34:07+03:00
JS: added both tests: for size and for correctness (fixes #24602)

By some reason MacOS builds add to stderr messages like:

    Ignoring unexpected archive entry:
    __.SYMDEF
    ...

However I left stderr to `/dev/null` for compatibility with linux CI builds.

- - - - -
909f3a9c by Serge S. Gulin at 2024-04-21T16:34:07+03:00
JS: Disable js linker warning for empty symbol table to make js tests running consistent across environments

- - - - -
83eb10da by Serge S. Gulin at 2024-04-21T16:34:07+03:00
JS: Add special preprocessor for js files due of needing to keep jsdoc comments (fixes #24602)

Our js files have defined google closure compiler types at jsdoc entries but these jsdoc entries are removed by cpp preprocessor. I considered that reusing them in javascript-backend would be a nice thing. Right now haskell processor uses `-traditional` option to deal with comments and `//` operators.
But now there are following compiler options: `-C` and `-CC`.
You can read about them at GCC (see https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#index-CC) and CLang (see https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-CC).
It seems that `-CC` works better for javascript jsdoc than `-traditional`.
At least it leaves `/* ... */` comments w/o changes.

- - - - -
e1cf8dc2 by brandon s allbery kf8nh at 2024-04-22T03:48:26-04:00
fix link in CODEOWNERS

It seems that our local Gitlab no longer has documentation for the
`CODEOWNERS` file, but the master documentation still does. Use
that instead.

- - - - -
a27c6a49 by Fendor at 2024-04-22T10:13:03+02:00
Adapt to UserData split

- - - - -
1efc5a7a by Fendor at 2024-04-22T10:13:03+02:00
Adapt to BinHandle split

- - - - -
593f4e04 by Fendor at 2024-04-23T10:19:14-04:00
Add performance regression test for '-fwrite-simplified-core'

- - - - -
1ba39b05 by Fendor at 2024-04-23T10:19:14-04:00
Typecheck corebindings lazily during bytecode generation

This delays typechecking the corebindings until the bytecode generation
happens.

We also avoid allocating a thunk that is retained by `unsafeInterleaveIO`.
In general, we shouldn't retain values of the hydrated `Type`, as not evaluating
the bytecode object keeps it alive.

It is better if we retain the unhydrated `IfaceType`.

See Note [Hydrating Modules]

- - - - -
e916fc92 by Alan Zimmerman at 2024-04-23T10:19:50-04:00
EPA: Keep comments in a CaseAlt match

The comments now live in the surrounding location, not inside the
Match. Make sure we keep them.

Closes #24707

- - - - -
d2b17f32 by Cheng Shao at 2024-04-23T15:01:22-04:00
driver: force merge objects when building dynamic objects

This patch forces the driver to always merge objects when building
dynamic objects even when ar -L is supported. It is an oversight of
!8887: original rationale of that patch is favoring the relatively
cheap ar -L operation over object merging when ar -L is supported,
which makes sense but only if we are building static objects! Omitting
check for whether we are building dynamic objects will result in
broken .so files with undefined reference errors at executable link
time when building GHC with llvm-ar. Fixes #22210.

- - - - -
209d09f5 by Julian Ospald at 2024-04-23T15:02:03-04:00
Allow non-absolute values for bootstrap GHC variable

Fixes #24682

- - - - -
3fff0977 by Matthew Pickering at 2024-04-23T15:02:38-04:00
Don't depend on registerPackage function in Cabal

More recent versions of Cabal modify the behaviour of libAbiHash which
breaks our usage of registerPackage.

It is simpler to inline the part of registerPackage that we need and
avoid any additional dependency and complication using the higher-level
function introduces.

- - - - -
c62dc317 by Cheng Shao at 2024-04-25T01:32:02-04:00
ghc-bignum: remove obsolete ln script

This commit removes an obsolete ln script in ghc-bignum/gmp. See
060251c24ad160264ae8553efecbb8bed2f06360 for its original intention,
but it's been obsolete for a long time, especially since the removal
of the make build system. Hence the house cleaning.

- - - - -
6399d52b by Cheng Shao at 2024-04-25T01:32:02-04:00
ghc-bignum: update gmp to 6.3.0

This patch bumps the gmp-tarballs submodule and updates gmp to 6.3.0.
The tarball format is now xz, and gmpsrc.patch has been patched into
the tarball so hadrian no longer needs to deal with patching logic
when building in-tree GMP.

- - - - -
65b4b92f by Cheng Shao at 2024-04-25T01:32:02-04:00
hadrian: remove obsolete Patch logic

This commit removes obsolete Patch logic from hadrian, given we no
longer need to patch the gmp tarball when building in-tree GMP.

- - - - -
71f28958 by Cheng Shao at 2024-04-25T01:32:02-04:00
autoconf: remove obsolete patch detection

This commit removes obsolete deletection logic of the patch command
from autoconf scripts, given we no longer need to patch anything in
the GHC build process.

- - - - -
daeda834 by Sylvain Henry at 2024-04-25T01:32:43-04:00
JS: correctly handle RUBBISH literals (#24664)

- - - - -
8a06ddf6 by Matthew Pickering at 2024-04-25T11:16:16-04:00
Linearise ghc-internal and base build

This is achieved by requesting the final package database for
ghc-internal, which mandates it is fully built as a dependency of
configuring the `base` package. This is at the expense of cross-package
parrallelism between ghc-internal and the base package.

Fixes #24436

- - - - -
94da9365 by Andrei Borzenkov at 2024-04-25T11:16:54-04:00
Fix tuple puns renaming (24702)

Move tuple renaming short cutter from `isBuiltInOcc_maybe` to `isPunOcc_maybe`, so we consider incoming module.

I also fixed some hidden bugs that raised after the change was done.

- - - - -
fa03b1fb by Fendor at 2024-04-26T18:03:13-04:00
Refactor the Binary serialisation interface

The goal is simplifiy adding deduplication tables to `ModIface`
interface serialisation.

We identify two main points of interest that make this difficult:

1. UserData hardcodes what `Binary` instances can have deduplication
   tables. Moreover, it heavily uses partial functions.
2. GHC.Iface.Binary hardcodes the deduplication tables for 'Name' and
   'FastString', making it difficult to add more deduplication.

Instead of having a single `UserData` record with fields for all the
types that can have deduplication tables, we allow to provide custom
serialisers for any `Typeable`.
These are wrapped in existentials and stored in a `Map` indexed by their
respective `TypeRep`.
The `Binary` instance of the type to deduplicate still needs to
explicitly look up the decoder via `findUserDataReader` and
`findUserDataWriter`, which is no worse than the status-quo.

`Map` was chosen as microbenchmarks indicate it is the fastest for a
small number of keys (< 10).

To generalise the deduplication table serialisation mechanism, we
introduce the types `ReaderTable` and `WriterTable` which provide a
simple interface that is sufficient to implement a general purpose
deduplication mechanism for `writeBinIface` and `readBinIface`.

This allows us to provide a list of deduplication tables for
serialisation that can be extended more easily, for example for
`IfaceTyCon`, see the issue https://gitlab.haskell.org/ghc/ghc/-/issues/24540
for more motivation.

In addition to this refactoring, we split `UserData` into `ReaderUserData`
and `WriterUserData`, to avoid partial functions and reduce overall
memory usage, as we need fewer mutable variables.

Bump haddock submodule to accomodate for `UserData` split.

-------------------------
Metric Increase:
    MultiLayerModulesTH_Make
    MultiLayerModulesRecomp
    T21839c
-------------------------

- - - - -
bac57298 by Fendor at 2024-04-26T18:03:13-04:00
Split `BinHandle` into `ReadBinHandle` and `WriteBinHandle`

A `BinHandle` contains too much information for reading data.
For example, it needs to keep a `FastMutInt` and a `IORef BinData`,
when the non-mutable variants would suffice.

Additionally, this change has the benefit that anyone can immediately
tell whether the `BinHandle` is used for reading or writing.

Bump haddock submodule BinHandle split.

- - - - -
4d6394dd by Simon Peyton Jones at 2024-04-26T18:03:49-04:00
Fix missing escaping-kind check in tcPatSynSig

Note [Escaping kind in type signatures] explains how we deal
with escaping kinds in type signatures, e.g.
    f :: forall r (a :: TYPE r). a
where the kind of the body is (TYPE r), but `r` is not in
scope outside the forall-type.

I had missed this subtlety in tcPatSynSig, leading to #24686.
This MR fixes it; and a similar bug in tc_top_lhs_type. (The
latter is tested by T24686a.)

- - - - -
981c2c2c by Alan Zimmerman at 2024-04-26T18:04:25-04:00
EPA: check-exact: check that the roundtrip reproduces the source

Closes #24670

- - - - -
a8616747 by Andrew Lelechenko at 2024-04-26T18:05:01-04:00
Document that setEnv is not thread-safe

- - - - -
1e41de83 by Bryan Richter at 2024-04-26T18:05:37-04:00
CI: Work around frequent Signal 9 errors

- - - - -
a6d5f9da by Naïm Favier at 2024-04-27T17:52:40-04:00
ghc-internal: add MonadFix instance for (,)

Closes https://gitlab.haskell.org/ghc/ghc/-/issues/24288, implements CLC
proposal https://github.com/haskell/core-libraries-committee/issues/238.

Adds a MonadFix instance for tuples, permitting value recursion in the
"native" writer monad and bringing consistency with the existing
instance for transformers's WriterT (and, to a lesser extent, for Solo).

- - - - -
64feadcd by Rodrigo Mesquita at 2024-04-27T17:53:16-04:00
bindist: Fix xattr cleaning

The original fix (725343aa) was incorrect because it used the shell
bracket syntax which is the quoting syntax in autoconf, making the test
for existence be incorrect and therefore `xattr` was never run.

Fixes #24554

- - - - -
e2094df3 by damhiya at 2024-04-28T23:52:00+09:00
Make read accepts binary integer formats

CLC proposal : https://github.com/haskell/core-libraries-committee/issues/177

- - - - -
c62239b7 by Sylvain Henry at 2024-04-29T10:35:00+02:00
Fix tests for T22229

- - - - -
1c2fd963 by Alan Zimmerman at 2024-04-29T23:17:00-04:00
EPA: Preserve comments in Match Pats

Closes #24708
Closes #24715
Closes #24734

- - - - -
4189d17e by Sylvain Henry at 2024-04-29T23:17:42-04:00
LLVM: better unreachable default destination in Switch (#24717)

See added note.

Co-authored-by: Siddharth Bhat <siddu.druid at gmail.com>

- - - - -
a3725c88 by Cheng Shao at 2024-04-29T23:18:20-04:00
ci: enable wasm jobs for MRs with wasm label

This patch enables wasm jobs for MRs with wasm label. Previously the
wasm label didn't actually have any effect on the CI pipeline, and
full-ci needed to be applied to run wasm jobs which was a waste of
runners when working on the wasm backend, hence the fix here.

- - - - -
702f7964 by Matthew Pickering at 2024-04-29T23:18:56-04:00
Make interface files and object files depend on inplace .conf file

A potential fix for #24737

- - - - -
728af21e by Cheng Shao at 2024-04-30T05:30:23-04:00
utils: remove obsolete vagrant scripts

Vagrantfile has long been removed in !5288. This commit further
removes the obsolete vagrant scripts in the tree.

- - - - -
36f2c342 by Cheng Shao at 2024-04-30T05:31:00-04:00
Update autoconf scripts

Scripts taken from autoconf 948ae97ca5703224bd3eada06b7a69f40dd15a02

- - - - -
ecbf22a6 by Ben Gamari at 2024-04-30T05:31:36-04:00
ghcup-metadata: Drop output_name field

This is entirely redundant to the filename of the URL. There is no
compelling reason to name the downloaded file differently from its
source.

- - - - -
c56d728e by Zubin Duggal at 2024-04-30T22:45:09-04:00
testsuite: Handle exceptions in framework_fail when testdir is not initialised

When `framework_fail` is called before initialising testdir, it would fail with
an exception reporting the testdir not being initialised instead of the actual failure.

Ensure we report the actual reason for the failure instead of failing in this way.

One way this can manifest is when trying to run a test that doesn't exist using `--only`

- - - - -
d5bea4d6 by Alan Zimmerman at 2024-04-30T22:45:45-04:00
EPA: Fix range for GADT decl with sig only

Closes #24714

- - - - -
4d78c53c by Sylvain Henry at 2024-05-01T17:23:06-04:00
Fix TH dependencies (#22229)

Add a dependency between Syntax and Internal (via module reexport).

- - - - -
37e38db4 by Sylvain Henry at 2024-05-01T17:23:06-04:00
Bump haddock submodule

- - - - -
ca13075c by Sylvain Henry at 2024-05-01T17:23:47-04:00
JS: cleanup to prepare for #24743

- - - - -
40026ac3 by Alan Zimmerman at 2024-05-01T22:45:07-04:00
EPA: Preserve comments for PrefixCon

Preserve comments in

    fun (Con {- c1 -} a b)
        = undefined

Closes #24736

- - - - -
92134789 by Hécate Moonlight at 2024-05-01T22:45:42-04:00
Correct `@since` metadata in HpcFlags

It was introduced in base-4.20, not 4.22.
Fix #24721

- - - - -
a580722e by Cheng Shao at 2024-05-02T08:18:45-04:00
testsuite: fix req_target_smp predicate

- - - - -
ac9c5f84 by Andreas Klebinger at 2024-05-02T08:18:45-04:00
STM: Remove (unused)coarse grained locking.

The STM code had a coarse grained locking mode guarded by #defines that was unused.
This commit removes the code.

- - - - -
917ef81b by Andreas Klebinger at 2024-05-02T08:18:45-04:00
STM: Be more optimistic when validating in-flight transactions.

* Don't lock tvars when performing non-committal validation.
* If we encounter a locked tvar don't consider it a failure.

This means in-flight validation will only fail if committing at the
moment of validation is *guaranteed* to fail.

This prevents in-flight validation from failing spuriously if it happens in
parallel on multiple threads or parallel to thread comitting.

- - - - -
167a56a0 by Alan Zimmerman at 2024-05-02T08:19:22-04:00
EPA: fix span for empty \case(s)

In
    instance SDecide Nat where
      SZero %~ (SSucc _) = Disproved (\case)

Ensure the span for the HsLam covers the full construct.

Closes #24748

- - - - -
9bae34d8 by doyougnu at 2024-05-02T15:41:08-04:00
testsuite: expand size testing infrastructure

- closes #24191
- adds windows_skip, wasm_skip, wasm_arch, find_so, _find_so
- path_from_ghcPkg, collect_size_ghc_pkg, collect_object_size, find_non_inplace functions to testsuite
- adds on_windows and req_dynamic_ghc predicate to testsuite

The design is to not make the testsuite too smart and simply offload to
ghc-pkg for locations of object files and directories.

- - - - -
b85b1199 by Sylvain Henry at 2024-05-02T15:41:49-04:00
GHCi: support inlining breakpoints (#24712)

When a breakpoint is inlined, its context may change (e.g. tyvars in
scope). We must take this into account and not used the breakpoint tick
index as its sole identifier. Each instance of a breakpoint (even with
the same tick index) now gets a different "info" index.

We also need to distinguish modules:
- tick module: module with the break array (tick counters, status, etc.)
- info module: module having the CgBreakInfo (info at occurrence site)

- - - - -
649c24b9 by Oleg Grenrus at 2024-05-03T20:45:42-04:00
Expose constructors of SNat, SChar and SSymbol in ghc-internal

- - - - -
d603f199 by Mikolaj Konarski at 2024-05-03T20:46:19-04:00
Add DCoVarSet to PluginProv (!12037)

- - - - -
ba480026 by Serge S. Gulin at 2024-05-03T20:47:01-04:00
JS: Enable more efficient packing of string data (fixes #24706)

- - - - -
be1e60ee by Simon Peyton Jones at 2024-05-03T20:47:37-04:00
Track in-scope variables in ruleCheckProgram

This small patch fixes #24726, by tracking in-scope variables
properly in -drule-check.  Not hard to do!

- - - - -
58408c77 by Simon Peyton Jones at 2024-05-03T20:47:37-04:00
Add a couple more HasCallStack constraints in SimpleOpt

Just for debugging, no effect on normal code

- - - - -
70e245e8 by Simon Peyton Jones at 2024-05-03T20:47:37-04:00
Add comments to Prep.hs

This documentation patch fixes a TODO left over from !12364

- - - - -
e5687186 by Simon Peyton Jones at 2024-05-03T20:47:37-04:00
Use HasDebugCallStack, rather than HasCallStack

- - - - -
631cefec by Cheng Shao at 2024-05-03T20:48:17-04:00
driver: always merge objects when possible

This patch makes the driver always merge objects with `ld -r` when
possible, and only fall back to calling `ar -L` when merge objects
command is unavailable. This completely reverts !8887 and !12313,
given more fixes in Cabal seems to be needed to avoid breaking certain
configurations and the maintainence cost is exceeding the behefits in
this case :/

- - - - -
1dacb506 by Ben Gamari at 2024-05-03T20:48:53-04:00
Bump time submodule to 1.14

As requested in #24528.

-------------------------
Metric Decrease:
    ghc_bignum_so
    rts_so
Metric Increase:
    cabal_syntax_dir
    rts_so
    time_dir
    time_so
-------------------------

- - - - -
4941b90e by Ben Gamari at 2024-05-03T20:48:53-04:00
Bump terminfo submodule to current master

- - - - -
43d48b44 by Cheng Shao at 2024-05-03T20:49:30-04:00
wasm: use scheduler.postTask() for context switch when available

This patch makes use of scheduler.postTask() for JSFFI context switch
when it's available. It's a more principled approach than our
MessageChannel based setImmediate() implementation, and it's available
in latest version of Chromium based browsers.

- - - - -
08207501 by Cheng Shao at 2024-05-03T20:50:08-04:00
testsuite: give pre_cmd for mhu-perf 5x time

- - - - -
bf3d4db0 by Alan Zimmerman at 2024-05-03T20:50:43-04:00
EPA: Preserve comments for pattern synonym sig

Closes #24749

- - - - -
c49493f2 by Matthew Pickering at 2024-05-04T06:02:57-04:00
tests: Widen acceptance window for dir and so size tests

These are testing things which are sometimes out the control of a GHC
developer. Therefore we shouldn't fail CI if something about these
dependencies change because we can't do anything about it.

It is still useful to have these statistics for visualisation in grafana
though.

Ticket #24759

- - - - -
9562808d by Matthew Pickering at 2024-05-04T06:02:57-04:00
Disable rts_so test

It has already manifested large fluctuations and destabilising CI

Fixes #24762

- - - - -
fc24c5cf by Ryan Scott at 2024-05-04T06:03:33-04:00
unboxedSum{Type,Data}Name: Use GHC.Types as the module

Unboxed sum constructors are now defined in the `GHC.Types` module, so if you
manually quote an unboxed sum (e.g., `''Sum2#`), you will get a `Name` like:

```hs
GHC.Types.Sum2#
```

The `unboxedSumTypeName` function in `template-haskell`, however, mistakenly
believes that unboxed sum constructors are defined in `GHC.Prim`, so
`unboxedSumTypeName 2` would return an entirely different `Name`:

```hs
GHC.Prim.(#|#)
```

This is a problem for Template Haskell users, as it means that they can't be
sure which `Name` is the correct one. (Similarly for `unboxedSumDataName`.)

This patch fixes the implementations of `unboxedSum{Type,Data}Name` to use
`GHC.Types` as the module. For consistency with `unboxedTupleTypeName`, the
`unboxedSumTypeName` function now uses the non-punned syntax for unboxed sums
(`Sum<N>#`) as the `OccName`.

Fixes #24750.

- - - - -
7eab4e01 by Alan Zimmerman at 2024-05-04T16:14:55+01:00
EPA: Widen stmtslist to include last semicolon

Closes #24754

- - - - -
06f7db40 by Teo Camarasu at 2024-05-05T00:19:38-04:00
doc: Fix type error in hs_try_putmvar example
- - - - -
af000532 by Moritz Schuler at 2024-05-05T06:30:58-04:00
Fix parsing of module names in CLI arguments
  closes issue #24732

- - - - -
da74e9c9 by Ben Gamari at 2024-05-05T06:31:34-04:00
ghc-platform: Add Setup.hs

The Hadrian bootstrapping script relies upon `Setup.hs` to drive its
build.

Addresses #24761.

- - - - -
35d34fde by Alan Zimmerman at 2024-05-05T12:52:40-04:00
EPA: preserve comments in class and data decls

Fix checkTyClHdr which was discarding comments.

Closes #24755

- - - - -
03c5dfbf by Simon Peyton Jones at 2024-05-05T12:53:15-04:00
Fix a float-out error

Ticket #24768 showed that the Simplifier was accidentally destroying
a join point.  It turned out to be that we were sending a bottoming
join point to the top, accidentally abstracting over /other/ join
points.

Easily fixed.

- - - - -
adba68e7 by John Ericson at 2024-05-05T19:35:56-04:00
Substitute bindist files with Hadrian not configure

The `ghc-toolchain` overhaul will eventually replace all this stuff with
something much more cleaned up, but I think it is still worth making
this sort of cleanup in the meantime so other untanglings and dead code
cleaning can procede.

I was able to delete a fair amount of dead code doing this too.

`LLVMTarget_CPP` is renamed to / merged with `LLVMTarget` because it
wasn't actually turned into a valid CPP identifier. (Original to
1345c7cc42c45e63ab1726a8fd24a7e4d4222467, actually.)

Progress on #23966

Co-Authored-By: Sylvain Henry <hsyl20 at gmail.com>

- - - - -
18f4ff84 by Alan Zimmerman at 2024-05-05T19:36:32-04:00
EPA: fix mkHsOpTyPV duplicating comments

Closes #24753

- - - - -
a19201d4 by Matthew Craven at 2024-05-06T19:54:29-04:00
Add test cases for #24664

...since none are present in the original MR !12463 fixing this issue.

- - - - -
46328a49 by Alan Zimmerman at 2024-05-06T19:55:05-04:00
EPA: preserve comments in data decls

Closes #24771

- - - - -
3b51995c by Andrei Borzenkov at 2024-05-07T14:39:40-04:00
Rename Solo# data constructor to MkSolo# (#24673)

- data Solo# a = (# a #)
+ data Solo# a = MkSolo# a

And `(# foo #)` syntax now becomes just a syntactic
sugar for `MkSolo# a`.

- - - - -
4d59abf2 by Arsen Arsenović at 2024-05-07T14:40:24-04:00
Add the cmm_cpp_is_gcc predicate to the testsuite

A future C-- test called T24474-cmm-override-g0 relies on the
GCC-specific behaviour of -g3 implying -dD, which, in turn, leads to it
emitting #defines past the preprocessing stage.  Clang, at least, does
not do this, so the test would fail if ran on Clang.

As the behaviour here being tested is ``-optCmmP-g3'' undoing effects of
the workaround we apply as a fix for bug #24474, and the workaround was
for GCC-specific behaviour, the test needs to be marked as fragile on
other compilers.

- - - - -
25b0b404 by Arsen Arsenović at 2024-05-07T14:40:24-04:00
Split out the C-- preprocessor, and make it pass -g0

Previously, C-- was processed with the C preprocessor program.  This
means that it inherited flags passed via -optc.  A flag that is somewhat
often passed through -optc is -g.  At certain -g levels (>=2), GCC
starts emitting defines *after* preprocessing, for the purposes of
debug info generation.  This is not useful for the C-- compiler, and, in
fact, causes lexer errors.  We can suppress this effect (safely, if
supported) via -g0.

As a workaround, in older versions of GCC (<=10), GCC only emitted
defines if a certain set of -g*3 flags was passed.  Newer versions check
the debug level.  For the former, we filter out those -g*3 flags and,
for the latter, we specify -g0 on top of that.

As a compatible and effective solution, this change adds a C--
preprocessor distinct from the C compiler and preprocessor, but that
keeps its flags.  The command line produced for C-- preprocessing now
looks like:

  $pgmCmmP $optCs_without_g3 $g0_if_supported $optCmmP

Closes: https://gitlab.haskell.org/ghc/ghc/-/issues/24474

- - - - -
9b4129a5 by Andreas Klebinger at 2024-05-08T13:24:20-04:00
-fprof-late: Only insert cost centres on functions/non-workfree cafs.

They are usually useless and doing so for data values comes with
a large compile time/code size overhead.

Fixes #24103

- - - - -
259b63d3 by Sebastian Graf at 2024-05-08T13:24:57-04:00
Simplifier: Preserve OccInfo on DataAlt fields when case binder is dead (#24770)

See the adjusted `Note [DataAlt occ info]`.
This change also has a positive repercussion on
`Note [Combine case alts: awkward corner]`.

Fixes #24770.

We now try not to call `dataConRepStrictness` in `adjustFieldsIdInfo` when all
fields are lazy anyway, leading to a 2% ghc/alloc decrease in T9675.

Metric Decrease:
    T9675

- - - - -
31b28cdb by Sebastian Graf at 2024-05-08T13:24:57-04:00
Kill seqRule, discard dead seq# in Prep (#24334)

Discarding seq#s in Core land via `seqRule` was problematic; see #24334.
So instead we discard certain dead, discardable seq#s in Prep now.
See the updated `Note [seq# magic]`.

This fixes the symptoms of #24334.

- - - - -
b2682534 by Rodrigo Mesquita at 2024-05-10T01:47:51-04:00
Document NcgImpl methods

Fixes #19914

- - - - -
4d3acbcf by Zejun Wu at 2024-05-10T01:48:28-04:00
Make renamer to be more flexible with parens in the LHS of the rules

We used to reject LHS like `(f a) b` in RULES and requires it to be written as
`f a b`. It will be handy to allow both as the expression may be more
readable with extra parens in some cases when infix operator is involved.
Espceially when TemplateHaskell is used, extra parens may be added out of
user's control and result in "valid" rules being rejected and there
are not always ways to workaround it.

Fixes #24621

- - - - -
ab840ce6 by Ben Gamari at 2024-05-10T01:49:04-04:00
IPE: Eliminate dependency on Read

Instead of encoding the closure type as decimal string we now simply
represent it as an integer, eliminating the need for `Read` in
`GHC.Internal.InfoProv.Types.peekInfoProv`.

Closes #24504.

-------------------------
Metric Decrease:
    T24602_perf_size
    size_hello_artifact
-------------------------

- - - - -
a9979f55 by Cheng Shao at 2024-05-10T01:49:43-04:00
testsuite: fix testwsdeque with recent clang

This patch fixes compilation of testwsdeque.c with recent versions of
clang, which will fail with the error below:

```
testwsdeque.c:95:33: error:
     warning: format specifies type 'long' but the argument has type 'void *' [-Wformat]
       95 |         barf("FAIL: %ld %d %d", p, n, val);
          |                     ~~~         ^

testwsdeque.c:95:39: error:
     warning: format specifies type 'int' but the argument has type 'StgWord' (aka 'unsigned long') [-Wformat]
       95 |         barf("FAIL: %ld %d %d", p, n, val);
          |                            ~~         ^~~
          |                            %lu

testwsdeque.c:133:42: error:
     error: incompatible function pointer types passing 'void (void *)' to parameter of type 'OSThreadProc *' (aka 'void *(*)(void *)') [-Wincompatible-function-pointer-types]
      133 |         createOSThread(&ids[n], "thief", thief, (void*)(StgWord)n);
          |                                          ^~~~~

/workspace/ghc/_build/stage1/lib/../lib/x86_64-linux-ghc-9.11.20240502/rts-1.0.2/include/rts/OSThreads.h:193:51: error:
     note: passing argument to parameter 'startProc' here
      193 |                                     OSThreadProc *startProc, void *param);
          |                                                   ^

2 warnings and 1 error generated.
```

- - - - -
c2b33fc9 by Rodrigo Mesquita at 2024-05-10T01:50:20-04:00
Rename pre-processor invocation args

Small clean up. Uses proper names for the various groups of arguments
that make up the pre-processor invocation.

- - - - -
2b1af08b by Cheng Shao at 2024-05-10T01:50:55-04:00
ghc-heap: fix typo in ghc-heap cbits

- - - - -
fc2d6de1 by Jade at 2024-05-10T21:07:16-04:00
Improve performance of Data.List.sort(By)

This patch improves the algorithm to sort lists in base.
It does so using two strategies:

1) Use a four-way-merge instead of the 'default' two-way-merge.
This is able to save comparisons and allocations.

2) Use `(>) a b` over `compare a b == GT` and allow inlining and specialization.
This mainly benefits types with a fast (>).

Note that this *may* break instances with a *malformed* Ord instance
where `a > b` is *not* equal to `compare a b == GT`.

CLC proposal: https://github.com/haskell/core-libraries-committee/issues/236

Fixes #24280

-------------------------
Metric Decrease:
    MultiLayerModulesTH_Make
    T10421
    T13719
    T15164
    T18698a
    T18698b
    T1969
    T9872a
    T9961
    T18730
    WWRec
    T12425
    T15703
-------------------------

- - - - -
1012e8aa by Matthew Pickering at 2024-05-10T21:07:52-04:00
Revert "ghcup-metadata: Drop output_name field"

This reverts commit ecbf22a6ac397a791204590f94c0afa82e29e79f.

This breaks the ghcup metadata generation on the nightly jobs.

- - - - -
daff1e30 by Jannis at 2024-05-12T13:38:35-04:00
Division by constants optimization

- - - - -
413217ba by Andreas Klebinger at 2024-05-12T13:39:11-04:00
Tidy: Add flag to expose unfoldings if they take dictionary arguments.

Add the flag `-fexpose-overloaded-unfoldings` to be able to control this
behaviour.

For ghc's boot libraries file size grew by less than 1% when it was
enabled. However I refrained from enabling it by default for now.

I've also added a section on specialization more broadly to the users
guide.

-------------------------
Metric Decrease:
    MultiLayerModulesTH_OneShot
Metric Increase:
    T12425
    T13386
    hard_hole_fits
-------------------------

- - - - -
c5d89412 by Zubin Duggal at 2024-05-13T22:19:53-04:00
Don't store a GlobalRdrEnv in `mi_globals` for GHCi.

GHCi only needs the `mi_globals` field for modules imported with
:module +*SomeModule.

It uses this field to make the top level environment in `SomeModule` available
to the repl.

By default, only the first target in the command line parameters is
"star" loaded into GHCi. Other modules have to be manually "star" loaded
into the repl.

Storing the top level GlobalRdrEnv for each module is very wasteful, especially
given that we will most likely never need most of these environments.

Instead we store only the information needed to reconstruct the top level environment
in a module, which is the `IfaceTopEnv` data structure, consisting of all import statements
as well as all top level symbols defined in the module (not taking export lists into account)

When a particular module is "star-loaded" into GHCi (as the first commandline target, or via
an explicit `:module +*SomeModule`, we reconstruct the top level environment on demand using
the `IfaceTopEnv`.

- - - - -
d65bf4a2 by Fendor at 2024-05-13T22:20:30-04:00
Add perf regression test for `-fwrite-if-simplified-core`

- - - - -
2c0f8ddb by Andrei Borzenkov at 2024-05-13T22:21:07-04:00
Improve pattern to type pattern transformation (23739)

`pat_to_type_pat` function now can handle more patterns:
  - TuplePat
  - ListPat
  - LitPat
  - NPat
  - ConPat

Allowing these new constructors in type patterns significantly
increases possible shapes of type patterns without `type` keyword.

This patch also changes how lookups in `lookupOccRnConstr` are
performed, because we need to fall back into
types when we didn't find a constructor on data level to perform
`ConPat` to type transformation properly.

- - - - -
be514bb4 by Cheng Shao at 2024-05-13T22:21:43-04:00
hadrian: fix hadrian building with ghc-9.10.1

- - - - -
ad38e954 by Cheng Shao at 2024-05-13T22:21:43-04:00
linters: fix lint-whitespace compilation with ghc-9.10.1

- - - - -
a593f284 by Andreas Klebinger at 2024-05-15T07:32:10-04:00
Expand the `inline` rule to look through casts/ticks.

Fixes #24808

- - - - -
b1e0c313 by Cheng Shao at 2024-05-15T07:32:46-04:00
testsuite: bump PartialDownSweep timeout to 5x on wasm32

- - - - -
b2227487 by Fendor at 2024-05-15T17:14:06-04:00
Add Eq and Ord instance to `IfaceType`

We add an `Ord` instance so that we can store `IfaceType` in a
`Data.Map` container.
This is required to deduplicate `IfaceType` while writing `.hi` files to
disk. Deduplication has many beneficial consequences to both file size
and memory usage, as the deduplication enables implicit sharing of
values.
See issue #24540 for more motivation.

The `Ord` instance would be unnecessary if we used a `TrieMap` instead
of `Data.Map` for the deduplication process. While in theory this is
clerarly the better option, experiments on the agda code base showed
that a `TrieMap` implementation has worse run-time performance
characteristics.

To the change itself, we mostly derive `Eq` and `Ord`. This requires us
to change occurrences of `FastString` with `LexicalFastString`, since
`FastString` has no `Ord` instance.
We change the definition of `IfLclName` to a newtype of
`LexicalFastString`, to make such changes in the future easier.

Bump haddock submodule for IfLclName changes

- - - - -
d368f9a6 by Fendor at 2024-05-15T17:14:06-04:00
Move out LiteralMap to avoid cyclic module dependencies

- - - - -
2fcc09fd by Fendor at 2024-05-15T17:14:06-04:00
Add deduplication table for `IfaceType`

The type `IfaceType` is a highly redundant, tree-like data structure.
While benchmarking, we realised that the high redundancy of `IfaceType`
causes high memory consumption in GHCi sessions when byte code is
embedded into the `.hi` file via `-fwrite-if-simplified-core` or
`-fbyte-code-and-object-code`.
Loading such `.hi` files from disk introduces many duplicates of
memory expensive values in `IfaceType`, such as `IfaceTyCon`,
`IfaceTyConApp`, `IA_Arg` and many more.

We improve the memory behaviour of GHCi by adding an additional
deduplication table for `IfaceType` to the serialisation of `ModIface`,
similar to how we deduplicate `Name`s and `FastString`s.
When reading the interface file back, the table allows us to automatically
share identical values of `IfaceType`.

To provide some numbers, we evaluated this patch on the agda code base.
We loaded the full library from the `.hi` files, which contained the
embedded core expressions (`-fwrite-if-simplified-core`).

Before this patch:

* Load time: 11.7 s, 2.5 GB maximum residency.

After this patch:

* Load time:  7.3 s, 1.7 GB maximum residency.

This deduplication has the beneficial side effect to additionally reduce
the size of the on-disk interface files tremendously.

For example, on agda, we reduce the size of `.hi` files (with
`-fwrite-if-simplified-core`):

* Before: 101 MB on disk
* Now:     24 MB on disk

This has even a beneficial side effect on the cabal store. We reduce the
size of the store on disk:

* Before: 341 MB on disk
* Now:    310 MB on disk

Note, none of the dependencies have been compiled with
`-fwrite-if-simplified-core`, but `IfaceType` occurs in multiple
locations in a `ModIface`.

We also add IfaceType deduplication table to .hie serialisation and
refactor .hie file serialisation to use the same infrastrucutre as
`putWithTables`.

Bump haddock submodule to accomodate for changes to the deduplication
table layout and binary interface.

- - - - -
36aa7cf1 by Fendor at 2024-05-15T17:14:06-04:00
Add run-time configurability of `.hi` file compression

Introduce the flag `-fwrite-if-compression=<n>` which allows to
configure the compression level of writing .hi files.

The motivation is that some deduplication operations are too expensive
for the average use case. Hence, we introduce multiple compression
levels with variable impact on performance, but still reduce the
memory residency and `.hi` file size on disk considerably.

We introduce three compression levels:

* `1`: `Normal` mode. This is the least amount of compression.
    It deduplicates only `Name` and `FastString`s, and is naturally the
    fastest compression mode.
* `2`: `Safe` mode. It has a noticeable impact on .hi file size and is
  marginally slower than `Normal` mode. In general, it should be safe to
  always use `Safe` mode.
* `3`: `Full` deduplication mode. Deduplicate as much as we can,
  resulting in minimal .hi files, but at the cost of additional
  compilation time.

Reading .hi files doesn't need to know the initial compression level,
and can always deserialise a `ModIface`, as we write out a byte that
indicates the next value has been deduplicated.
This allows users to experiment with different compression levels for
packages, without recompilation of dependencies.

Note, the deduplication also has an additional side effect of reduced
memory consumption to implicit sharing of deduplicated elements.
See https://gitlab.haskell.org/ghc/ghc/-/issues/24540 for example where
that matters.

-------------------------
Metric Decrease:
    MultiLayerModulesDefsGhciWithCore
    T16875
    T21839c
    T24471
    hard_hole_fits
    libdir
-------------------------

- - - - -
1e63a6fb by Matthew Pickering at 2024-05-15T17:14:07-04:00
Introduce regression tests for `.hi` file sizes

Add regression tests to track how `-fwrite-if-compression` levels affect
the size of `.hi` files.

- - - - -
639d742b by M Farkas-Dyck at 2024-05-15T17:14:49-04:00
TTG: ApplicativeStatement exist only in Rn and Tc

Co-Authored-By: romes <rodrigo.m.mesquita at gmail.com>

- - - - -
aa7b336b by Jade at 2024-05-15T23:06:17-04:00
Documentation: Improve documentation for symbols exported from System.IO

- - - - -
c561de8f by Jade at 2024-05-15T23:06:54-04:00
Improve suggestions for language extensions

- When suggesting Language extensions, also suggest Extensions which imply them
- Suggest ExplicitForAll and GADTSyntax instead of more specific
  extensions
- Rephrase suggestion to include the term 'Extension'
- Also moves some flag specific definitions out of Session.hs into
Flags.hs (#24478)

Fixes: #24477
Fixes: #24448
Fixes: #10893

- - - - -
4c7ae2a1 by Andreas Klebinger at 2024-05-15T23:07:30-04:00
Testsuite: Check if llvm assembler is available for have_llvm

- - - - -
bc672166 by Torsten Schmits at 2024-05-15T23:08:06-04:00
refactor quadratic search in warnMissingHomeModules

- - - - -
7875e8cb by Torsten Schmits at 2024-05-15T23:08:06-04:00
add test that runs MakeDepend on thousands of modules

- - - - -
b84b91f5 by Adam Gundry at 2024-05-16T15:32:06-04:00
Representation-polymorphic HasField (fixes #22156)

This generalises the HasField class to support representation polymorphism,
so that instead of

    type HasField :: forall {k} . k -> Type -> Type -> Constraint

we have

    type HasField :: forall {k} {r_rep} {a_rep} . k -> TYPE r_rep -> TYPE a_rep -> Constraint

- - - - -
05285090 by Matthew Pickering at 2024-05-16T15:32:43-04:00
Bump os-string submodule to 2.0.2.2

Closes #24786

- - - - -
886ab43a by Cheng Shao at 2024-05-17T01:34:50-04:00
rts: do not prefetch mark_closure bdescr in non-moving gc when ASSERTS_ENABLED

This commit fixes a small an oversight in !12148: the prefetch logic
in non-moving GC may trap in debug RTS because it calls Bdescr() for
mark_closure which may be a static one. It's fine in non-debug RTS
because even invalid bdescr addresses are prefetched, they will not
cause segfaults, so this commit implements the most straightforward
fix: don't prefetch mark_closure bdescr when assertions are enabled.

- - - - -
b38dcf39 by Teo Camarasu at 2024-05-17T01:34:50-04:00
rts: Allocate non-moving segments with megablocks

Non-moving segments are 8 blocks long and need to be aligned.
Previously we serviced allocations by grabbing 15 blocks, finding
an aligned 8 block group in it and returning the rest.
This proved to lead to high levels of fragmentation as a de-allocating a segment
caused an 8 block gap to form, and this could not be reused for allocation.

This patch introduces a segment allocator based around using entire
megablocks to service segment allocations in bulk.

When there are no free segments, we grab an entire megablock and fill it
with aligned segments. As the megablock is free, we can easily guarantee
alignment. Any unused segments are placed on a free list.

It only makes sense to free segments in bulk when all of the segments in
a megablock are freeable. After sweeping, we grab the free list, sort it,
and find all groups of segments where they cover the megablock and free
them.
This introduces a period of time when free segments are not available to
the mutator, but the risk that this would lead to excessive allocation
is low. Right after sweep, we should have an abundance of partially full
segments, and this pruning step is relatively quick.

In implementing this we drop the logic that kept NONMOVING_MAX_FREE
segments on the free list.

We also introduce an eventlog event to log the amount of pruned/retained
free segments.

See Note [Segment allocation strategy]

Resolves #24150

-------------------------
Metric Decrease:
    T13253
    T19695
-------------------------

- - - - -
710665bd by Cheng Shao at 2024-05-17T01:35:30-04:00
rts: fix I/O manager compilation errors for win32 target

This patch fixes I/O manager compilation errors for win32 target
discovered when cross-compiling to win32 using recent clang:

```
rts/win32/ThrIOManager.c:117:7: error:
     error: call to undeclared function 'is_io_mng_native_p'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      117 |   if (is_io_mng_native_p ()) {
          |       ^
    |
117 |   if (is_io_mng_native_p ()) {
    |       ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/fs.c:143:28: error:
     error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
      143 | int setErrNoFromWin32Error () {
          |                            ^
          |                             void
    |
143 | int setErrNoFromWin32Error () {
    |                            ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/win32/ConsoleHandler.c:227:9: error:
     error: call to undeclared function 'interruptIOManagerEvent'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      227 |         interruptIOManagerEvent ();
          |         ^
    |
227 |         interruptIOManagerEvent ();
    |         ^

rts/win32/ConsoleHandler.c:227:9: error:
     note: did you mean 'getIOManagerEvent'?
    |
227 |         interruptIOManagerEvent ();
    |         ^

rts/include/rts/IOInterface.h:27:10: error:
     note: 'getIOManagerEvent' declared here
       27 | void *   getIOManagerEvent  (void);
          |          ^
   |
27 | void *   getIOManagerEvent  (void);
   |          ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)

rts/win32/ConsoleHandler.c:196:9: error:
     error: call to undeclared function 'setThreadLabel'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
      196 |         setThreadLabel(cap, t, "signal handler thread");
          |         ^
    |
196 |         setThreadLabel(cap, t, "signal handler thread");
    |         ^

rts/win32/ConsoleHandler.c:196:9: error:
     note: did you mean 'postThreadLabel'?
    |
196 |         setThreadLabel(cap, t, "signal handler thread");
    |         ^

rts/eventlog/EventLog.h:118:6: error:
     note: 'postThreadLabel' declared here
      118 | void postThreadLabel(Capability    *cap,
          |      ^
    |
118 | void postThreadLabel(Capability    *cap,
    |      ^

1 error generated.
`x86_64-w64-mingw32-clang' failed in phase `C Compiler'. (Exit code: 1)
```

- - - - -
28b9cee0 by Rodrigo Mesquita at 2024-05-17T01:36:05-04:00
configure: Check C99-compat for Cmm preprocessor

Fixes #24815

- - - - -
8927e0c3 by Andreas Klebinger at 2024-05-17T01:36:41-04:00
Ensure `tcHasFixedRuntimeRep (# #)` returns True.

- - - - -
04179044 by doyougnu at 2024-05-17T09:00:32-04:00
testsuite: make find_so regex less general

Closes #24759

Background. In MR !12372 we began tracking shared object files and
directories sizes for dependencies. However, this broke  release builds
because release builds alter the filenames swapping "in-place" for a
hash. This was not considered in the MR and thus broke release
pipelines. Furthermore, the rts_so test was found to be wildly varying
and was therefore disabled in !12561.

This commit fixes both of these issues:

- fix the rts_so test by making the regex less general, now the rts_so
test and all other foo.so tests must match
"libHS<some-lib>-<version>-<hash|'in-place>-<ghc>". This prevents the
rts_so test from accidentally matching different rts variants such as
rts_threaded, which was the cause of the wild swings after !12372.

- add logic to match either a hash or the string in-place. This should
make the find_so function build agnostic.

- - - - -
0962b50d by Andreas Klebinger at 2024-05-17T09:01:08-04:00
TagAnalysis: Treat all bottom ids as tagged during analysis.

Ticket #24806 showed that we also need to treat dead end thunks as
tagged during the analysis.

- - - - -
7eb9f184 by Ben Gamari at 2024-05-17T11:23:37-04:00
Remove haddock submodule

In preparation for merge into the GHC, as proposed in #23178.

- - - - -
47b14dcc by Fendor at 2024-05-17T11:28:17-04:00
Adapt to `IfLclName` newtype changes

(cherry picked from commit a711607e29b925f3d69e27c5fde4ba655c711ff1)

- - - - -
6cc6681d by Fendor at 2024-05-17T11:28:17-04:00
Add IfaceType deduplication table to interface file serialisation

Although we do not really need it in the interface file serialisation,
as the deserialisation uses `getWithUserData`, we need to mirror the
structure `getWithUserData` expects. Thus, we write essentially an empty
`IfaceType` table at the end of the file, as the interface file doesn't
reference `IfaceType`.

(cherry picked from commit c9bc29c6a708483d2abc3d8ec9262510ce87ca61)

- - - - -
b9721206 by Ben Gamari at 2024-05-17T11:30:22-04:00
ghc-tags.yaml: Initial commit

- - - - -
074e7d8f by Ben Gamari at 2024-05-17T11:31:29-04:00
fourmolu: Add configuration

- - - - -
151b1736 by Ben Gamari at 2024-05-17T11:32:52-04:00
Makefile: Rework for use by haddock developers

Previously the Makefile was present only for GHC's old make-based build
system. Now since the make-based build system is gone we can use it for
more useful ends.

- - - - -
a7dcf13b by Ben Gamari at 2024-05-17T11:36:14-04:00
Reformat with fourmolu

Using previously-added configuration and `fourmolu -i .`
Note that we exclude the test-cases
(`./{hoogle,html-hypsrc,latex}-test`) as they are sensitive to
formatting.

- - - - -
0ea6017b by Ben Gamari at 2024-05-17T11:40:04-04:00
Add 'utils/haddock/' from commit 'a7dcf13bfbb97b20e75cc8ce650e2bb628db4660'

git-subtree-dir: utils/haddock
git-subtree-mainline: 7eb9f1849b1c72a1c61dee88462b4244550406f3
git-subtree-split: a7dcf13bfbb97b20e75cc8ce650e2bb628db4660

- - - - -
aba1d304 by Hécate Moonlight at 2024-05-17T11:40:48-04:00
Add exceptions to the dangling notes list

- - - - -
527bfbfb by Hécate Moonlight at 2024-05-17T11:40:52-04:00
Add haddock to the whitespace lint ignore list

- - - - -
43274677 by Ben Gamari at 2024-05-17T11:41:20-04:00
git-blame-ignore-revs: Ignore haddock reformatting

- - - - -


21 changed files:

- .ghcid
- + .git-blame-ignore-revs
- .gitignore
- .gitlab-ci.yml
- .gitlab/ci.sh
- − .gitlab/circle-ci-job.sh
- .gitlab/darwin/nix/sources.json
- .gitlab/darwin/toolchain.nix
- − .gitlab/gen-ci.cabal
- + .gitlab/generate-ci/LICENSE
- + .gitlab/generate-ci/README.mkd
- + .gitlab/generate-ci/flake.lock
- + .gitlab/generate-ci/flake.nix
- .gitlab/gen_ci.hs → .gitlab/generate-ci/gen_ci.hs
- + .gitlab/generate-ci/generate-ci.cabal
- + .gitlab/generate-ci/generate-job-metadata
- + .gitlab/generate-ci/generate-jobs
- .gitlab/hie.yaml → .gitlab/generate-ci/hie.yaml
- − .gitlab/generate_job_metadata
- − .gitlab/generate_jobs
- .gitlab/issue_templates/bug.md → .gitlab/issue_templates/default.md


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/2aa68effa160912f759fadca4eff533c7839aa0e...43274677db062b5ee17fd23892f5ddf9eecbdbc7

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/2aa68effa160912f759fadca4eff533c7839aa0e...43274677db062b5ee17fd23892f5ddf9eecbdbc7
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240517/f53f5995/attachment-0001.html>


More information about the ghc-commits mailing list