<div dir="ltr"><div>That sounds like a good approach. Are there other things that would go nicely<br>in a shared package like this, in addition to the extension data type?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 2, 2015 at 1:00 AM, Matthew Pickering <span dir="ltr"><<a href="mailto:matthewtpickering@gmail.com" target="_blank">matthewtpickering@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Surely the easiest way here (including for other tooling - ie<br>
haskell-src-exts) is to create a package which just provides this<br>
enumeration. GHC, cabal, th, haskell-src-exts and so on then all<br>
depend on this package rather than creating their own enumeration.<br>
<div><div class="h5"><br>
On Wed, Sep 2, 2015 at 9:47 AM, Michael Smith <<a href="mailto:michael@diglumi.com">michael@diglumi.com</a>> wrote:<br>
> #10820 on Trac [1] and D1200 on Phabricator [2] discuss adding the<br>
> capababilty<br>
> to Template Haskell to detect which language extensions enabled.<br>
> Unfortunately,<br>
> since template-haskell can't depend on ghc (as ghc depends on<br>
> template-haskell),<br>
> it can't simply re-export the ExtensionFlag type from DynFlags to the user.<br>
><br>
> There is a second data type encoding the list of possible language<br>
> extensions in<br>
> the Cabal package, in Language.Haskell.Extension [3]. But template-haskell<br>
> doesn't already depend on Cabal, and doing so seems like it would cause<br>
> difficulties, as the two packages can be upgraded separately.<br>
><br>
> So adding this new feature to Template Haskell requires introducing a<br>
> *third*<br>
> data type for language extensions. It also requires enumerating this full<br>
> list<br>
> in two more places, to convert back and forth between the TH Extension data<br>
> type<br>
> and GHC's internal ExtensionFlag data type.<br>
><br>
> Is there another way here? Can there be one single shared data type for this<br>
> somehow?<br>
><br>
> [1] <a href="https://ghc.haskell.org/trac/ghc/ticket/10820" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/10820</a><br>
> [2] <a href="https://phabricator.haskell.org/D1200" rel="noreferrer" target="_blank">https://phabricator.haskell.org/D1200</a><br>
> [3]<br>
> <a href="https://hackage.haskell.org/package/Cabal-1.22.4.0/docs/Language-Haskell-Extension.html" rel="noreferrer" target="_blank">https://hackage.haskell.org/package/Cabal-1.22.4.0/docs/Language-Haskell-Extension.html</a><br>
><br>
</div></div>> _______________________________________________<br>
> ghc-devs mailing list<br>
> <a href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
><br>
</blockquote></div><br></div></div>