[GHC] #10279: panic on haskell-src-exts
GHC
ghc-devs at haskell.org
Mon Apr 20 13:37:31 UTC 2015
#10279: panic on haskell-src-exts
-------------------------------------+-------------------------------------
Reporter: throwaway123 | Owner: ezyang
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.1
Resolution: | Keywords:
Operating System: Linux | Architecture: x86_64
Type of failure: Compile-time | (amd64)
crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by simonpj):
Te basic problem here, which also happened in #, is that `"haskell-src-
exts-1.16.0.1"` is not the '''key''' of any package; it's the
'''name/version''' of the package. Reminder
* The name/version of a package is something like `haskell-src-
exts-1.16.0.1`. It represents the source code of a particular released
package.
* The key of a package is something like `haske_7Ftlz85Zj6I3uisdzq1Sbd`;
it represents a compiled instance of the package.
Global names (built with `NameG`) contain package keys.
Edward Y and I talked. Here's our proposal.
1. Add a new function
{{{
reifyPackage :: String -- Package name
-> String -- Version
-> Q [Package]
}}}
which, given a package name/version returns all the installed packages
with that name and version.
The auxiliary types are
{{{
data Package = Pkg PkgKey -- Abstract; may grow more fields
newtype PkgKey = PkgKey String -- Abstract;
packageKey :: Package -> PkgKey -- Accessor
packageKey (Pkg p) = p
mkPackageKey :: String -> PkgKey
mkPackageKey = PkgKey -- Use with caution; these strings are not easy to
come up with
-- eg "haske_7Ftlz85Zj6I3uisdzq1Sbd"
}}}
2. Improve the error message when splicing code that mentions a bad
`PkgKey` in a `NameG`, as in comment:8
Notes
* A TH `NameG` currently contains a `PkgName`, defined thus:
{{{
newtype PkgName = PkgName String -- package name
}}}
This is badly misleading; we propose to rename it to `PkgKey`, defined
above. You can get a `PkgKey` from `reifyPackage` plus `packageKey`; or
in some other out-of-band-way plus `mkPkgKey`.
* `reifyPackage` returns a list of `Packages`. There can be more than
one if the sane package name/version is installed wrt different
dependencies; but this is atypical. At some point we may need to support
bigger API for `Package`, which lets you get its dependencies.
See also #10330.
None of this is for 7.10; it's a proposal for 7.12.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10279#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list