| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
We now have a top-level `tyConAppNeedsKindSig` function, which means
that we can delete lots of code in `Convert`.
|
|
|
|
|
|
|
| |
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 #1015.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
* Synify and render properly promoted type variables
Fixes #923.
* Accept output
|
|
|
|
| |
It got introduced in ghc/ghc@ae2c9b40f5b6bf272251d1f4107c60003f541b62.
|
| |
|
|
|
|
| |
This should have been in the previous patch, but wasn't.
|
| |
|
|
|
|
|
| |
The other types are still looked at when considering whether to make
a kind signature or not.
|
|
|
|
|
|
|
|
|
|
|
| |
We reconstruct promoted list literals whenever possible. That means
that 'synifyType' produces
'[Int, Bool, ()]
instead of
(Int ': (() ': (Bool ': ([] :: [Type]))))
|
|
|
|
| |
When we have a fully applied promoted tuple, we can expand it out properly.
|
|
|
|
|
| |
* adds space after/before the '#' marks
* properly reify 'HsSumTy' in 'synifyType'
|
| |
|
|
|
|
|
| |
After GHC commit
http://git.haskell.org/ghc.git/commit/f265008fb6f70830e7e92ce563f6d83833cef071
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tyThingToLHsDecls: Preserve type synonyms that contain a forall
Fixes #879.
* Add Note [Invariant: Never expand type synonyms]
* Clarify Note [Invariant: Never expand type synonyms]
(cherry picked from commit c3eb3f0581f69e816f9453b1747a9f2a3ba02bb9)
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
This tracks the refactoring of HsDecl.ConDecl.
|
| | |
|
| | |
|
|/ |
|
|
|
|
| |
This reverts commit 01eeeb048acd2dd05ff6471ae148a97cf0720547.
|
|
|
|
|
|
| |
* Actually render infix type operators as infix
* Account for things like `(f :*: g) p`, too
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Fix haddock: internal error: links: UnhelpfulSpan
This fixes #554 for me. I believe this is another fall out
of `wildcard-refactor`, like #549.
* Comment to clarify why we take the methods name location
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
See https://ghc.haskell.org/trac/ghc/wiki/ImplementingTreesThatGrow
|
|\ \ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
See #549 and GHC issue #12519
(cherry picked from commit 073d899a8f94ddec698f617a38d3420160a7fd0b)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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)
|
| | |
| | |
| | |
| | | |
(cherry picked from commit bb994de1ab0c76d1aaf1e39c54158db2526d31f1)
|
| | |
| | |
| | |
| | | |
(cherry picked from commit ab954263a793d8ced734459d6194a5d89214b66c)
|
| |/
|/| |
|
| | |
|
| | |
|
| | |
|
| | |
|