
#11484: Type synonym using -XTypeInType can't be spliced with TH -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Template Haskell | Version: 8.0.1-rc1 Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): I did some cursory debugging on this by pretty printing the `TyCon` and its `TyVar`s when [http://git.haskell.org/ghc.git/blob/7407a66d5bd29aa011f5a4228c6e2b2f7f8ad3f8... checkValidTyConVars] (the function which is producing that error message) is run. When you type in that type synonym directly, i.e., {{{ λ> type TySyn2 (k :: *) (a :: k) = () RGS TySyn2 [k_a5hY, a_a5hZ] }}} then the only type variables are `k` and `a`, as expected. But when it's spliced in from TH: {{{ λ> data X; $([d| type TySyn2 (k :: *) (a :: k) = () |]) ... <interactive>:3:11-51: Splicing declarations [d| type TySyn2_a1ba (k_a1bb :: *) (a_a1bc :: k_a1bb) = () |] ======> type TySyn2_a5hT (k_a5hU :: Type) (a_a5hV :: k_a5hU) = () RGS TySyn2 [k_a5hU[sk], k_a5hU, a_a5hV] }}} we can see how it went wrong, as GHC mistakenly believes that there are type variables. I suppose we just have to "un-skolemize" one of the occurrences of `k`... is there a function which does this? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11484#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler