diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2018-03-05 08:57:04 -0500 |
---|---|---|
committer | Ryan Scott <ryan.gl.scott@gmail.com> | 2018-03-05 08:57:04 -0500 |
commit | 6ee831f279c91888ee5815f8eee473bcd6fd25c6 (patch) | |
tree | 3489ba2f34132d85b6e43046f7db7ce2854fa404 /compiler/deSugar/DsMeta.hs | |
parent | 3d252037234ce48f9bdada7d5c9b1d8eba470829 (diff) | |
download | haskell-6ee831f279c91888ee5815f8eee473bcd6fd25c6.tar.gz |
Fix #14888 by adding more special cases for ArrowT
Summary:
There were previously some situations where `(->)` would
not be desugared or reified as `ArrowT`, leading to various oddities
such as those observed in #14888. We now uniformly treat `(->)` as
`ArrowT` in Template Haskell–world by checking for any tycon that
has the same name as `(->)`, and converting that to `ArrowT`.
Test Plan: make test TEST=T14888
Reviewers: goldfire, bgamari, simonpj
Reviewed By: goldfire, simonpj
Subscribers: simonpj, rwbarton, thomie, carter
GHC Trac Issues: #14888
Differential Revision: https://phabricator.haskell.org/D4466
Diffstat (limited to 'compiler/deSugar/DsMeta.hs')
-rw-r--r-- | compiler/deSugar/DsMeta.hs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/deSugar/DsMeta.hs b/compiler/deSugar/DsMeta.hs index db25c55837..5029f9df09 100644 --- a/compiler/deSugar/DsMeta.hs +++ b/compiler/deSugar/DsMeta.hs @@ -994,6 +994,7 @@ repTy ty@(HsQualTy {}) = repForall ty repTy (HsTyVar _ (L _ n)) | isLiftedTypeKindTyConName n = repTStar | n `hasKey` constraintKindTyConKey = repTConstraint + | n `hasKey` funTyConKey = repArrowTyCon | isTvOcc occ = do tv1 <- lookupOcc n repTvar tv1 | isDataOcc occ = do tc1 <- lookupOcc n |