[GHC] #10279: panic on haskell-src-exts
GHC
ghc-devs at haskell.org
Fri Apr 17 09:52:13 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 ezyang):
OK, did some reading of haskell-src-exts-qq and it's the same problem as
https://github.com/ekmett/lens/issues/496 and #9745:
{{{
-- | The generic functions in 'Language.Haskell.TH.Quote' don't use global
-- names for syntax constructors. This has the unfortunate effect of
breaking
-- quotation when the haskell-src-exts syntax module is imported
qualified.
-- The solution is to set the flavour of all names to 'NameG'.
qualify :: Name -> Name
-- Need special cases for constructors used in string literals. Assume
nearly
-- all else is a datatype defined in Syntax module of haskell-src-exts.
qualify n | ":" <- nameBase n = '(:)
| "[]" <- nameBase n = '[]
| "(,)" <- nameBase n = '(,)
| "Nothing" <- nameBase n = 'Nothing
| "Just" <- nameBase n = 'Just
| "SrcLoc" <- nameBase n = 'Hs.SrcLoc
| "Boxed" <- nameBase n = 'Hs.Boxed
| otherwise = Name (mkOccName (nameBase n)) flavour
where pkg = "haskell-src-exts-" ++ VERSION_haskell_src_exts
flavour = NameG VarName (mkPkgName pkg)
(mkModName "Language.Haskell.Exts.Syntax")
}}}
This is not going to work with package keys.
It seems pretty clear to me that we should improve the error message in
this case, though it's not altogether clear where it should live (probably
the TH code?)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10279#comment:6>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list