summaryrefslogtreecommitdiff
path: root/compiler/deSugar/DsMeta.hs
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2018-03-05 08:57:04 -0500
committerRyan Scott <ryan.gl.scott@gmail.com>2018-03-05 08:57:04 -0500
commit6ee831f279c91888ee5815f8eee473bcd6fd25c6 (patch)
tree3489ba2f34132d85b6e43046f7db7ce2854fa404 /compiler/deSugar/DsMeta.hs
parent3d252037234ce48f9bdada7d5c9b1d8eba470829 (diff)
downloadhaskell-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.hs1
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