... | ... | @@ -14,42 +14,47 @@ |
|
|
Add **TypeCheckerPlugins** to the ticket's keywords to include it in these lists.
|
|
|
|
|
|
|
|
|
|
|
|
Open Tickets:
|
|
|
|
|
|
<table><tr><th>[\#9980](https://gitlab.haskell.org//ghc/ghc/issues/9980)</th>
|
|
|
<table><tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/9980">#9980</a></th>
|
|
|
<td>TcS monad is too heavy</td></tr>
|
|
|
<tr><th>[\#10077](https://gitlab.haskell.org//ghc/ghc/issues/10077)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/10077">#10077</a></th>
|
|
|
<td>Providing type checker plugin on command line results in false cyclic import error</td></tr>
|
|
|
<tr><th>[\#11435](https://gitlab.haskell.org//ghc/ghc/issues/11435)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/11435">#11435</a></th>
|
|
|
<td>Evidence from TC Plugin triggers core-lint warning</td></tr>
|
|
|
<tr><th>[\#11457](https://gitlab.haskell.org//ghc/ghc/issues/11457)</th>
|
|
|
<td>Run type-checker plugins before GHC's solver</td></tr>
|
|
|
<tr><th>[\#12780](https://gitlab.haskell.org//ghc/ghc/issues/12780)</th>
|
|
|
<td>Calling "do nothing" type checker plugin affects type checking when it shouldn't</td></tr>
|
|
|
<tr><th>[\#15147](https://gitlab.haskell.org//ghc/ghc/issues/15147)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/11457">#11457</a></th>
|
|
|
<td>Run type-checker plugins before GHC's solver</td></tr>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/12780">#12780</a></th>
|
|
|
<td>Calling "do nothing" type checker plugin affects type checking when it shouldn't</td></tr>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/15147">#15147</a></th>
|
|
|
<td>Type checker plugin receives Wanteds that are not completely unflattened</td></tr>
|
|
|
<tr><th>[\#15248](https://gitlab.haskell.org//ghc/ghc/issues/15248)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/15248">#15248</a></th>
|
|
|
<td>Coercions from plugins cannot be stopped from floating out</td></tr>
|
|
|
<tr><th>[\#15322](https://gitlab.haskell.org//ghc/ghc/issues/15322)</th>
|
|
|
<td>\`KnownNat\` does not imply \`Typeable\` any more when used with plugin</td></tr>
|
|
|
<tr><th>[\#15745](https://gitlab.haskell.org//ghc/ghc/issues/15745)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/15322">#15322</a></th>
|
|
|
<td>`KnownNat` does not imply `Typeable` any more when used with plugin</td></tr>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/15745">#15745</a></th>
|
|
|
<td>Panicking typechecker plugins</td></tr></table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Closed Tickets:
|
|
|
|
|
|
<table><tr><th>[\#9840](https://gitlab.haskell.org//ghc/ghc/issues/9840)</th>
|
|
|
<table><tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/9840">#9840</a></th>
|
|
|
<td>Permit empty closed type families</td></tr>
|
|
|
<tr><th>[\#10078](https://gitlab.haskell.org//ghc/ghc/issues/10078)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/10078">#10078</a></th>
|
|
|
<td>tcPluginStop of a type checker plugin is not called if an error occurs</td></tr>
|
|
|
<tr><th>[\#11462](https://gitlab.haskell.org//ghc/ghc/issues/11462)</th>
|
|
|
<td>Use of typechecker plugin erroneously triggers "unbound implicit parameter" error</td></tr>
|
|
|
<tr><th>[\#11525](https://gitlab.haskell.org//ghc/ghc/issues/11525)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/11462">#11462</a></th>
|
|
|
<td>Use of typechecker plugin erroneously triggers "unbound implicit parameter" error</td></tr>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/11525">#11525</a></th>
|
|
|
<td>Using a dummy typechecker plugin causes an ambiguity check error</td></tr>
|
|
|
<tr><th>[\#14691](https://gitlab.haskell.org//ghc/ghc/issues/14691)</th>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/14691">#14691</a></th>
|
|
|
<td>Replace EvTerm with CoreExpr</td></tr>
|
|
|
<tr><th>[\#15633](https://gitlab.haskell.org//ghc/ghc/issues/15633)</th>
|
|
|
<td>Type-checker plugins aren't loaded in GHCi 8.6.1</td></tr></table>
|
|
|
<tr><th><a href="https://gitlab.haskell.org//ghc/ghc/issues/15633">#15633</a></th>
|
|
|
<td>Type-checker plugins aren't loaded in GHCi 8.6.1</td></tr></table>
|
|
|
|
|
|
|
|
|
|
|
|
## Motivation
|
|
|
|
... | ... | @@ -360,7 +365,10 @@ Feel free to extend these lists. |
|
|
Have you tried out this interface? Does it work?
|
|
|
**End Richard**
|
|
|
|
|
|
**Adam:**
|
|
|
|
|
|
|
|
|
**Adam:**
|
|
|
|
|
|
|
|
|
- At the moment, `solve` doesn't explicitly modify the custom state because I suspect that threading the returned values through the `TcS` pipeline might be tricky, and that plugins wanting this can use `IORef`s instead. Actually, I wonder if instead of using an existential type variable, `tcPlugin` should return subsume `init` and return a `TcM (Maybe TcPlugin)`; then any state can be stored in a closure.
|
|
|
- I expect most plugins to work on equality constraints of a particular kind, or typeclass constraints for a fixed typeclass, but I don't see an obvious way to specify such domains. As you say, I think it should be easy for the plugin to filter constraints itself.
|
... | ... | |