summaryrefslogtreecommitdiff
path: root/compiler/backpack
diff options
context:
space:
mode:
authorEdward Z. Yang <ezyang@cs.stanford.edu>2017-10-16 15:27:10 -0400
committerBen Gamari <ben@smart-cactus.org>2017-10-16 17:24:49 -0400
commitfd8b044e9664181d4815e48e8f83be78bc9fe8d2 (patch)
tree7e81af52e4a14c1975c35f481e0279c1271cb1fc /compiler/backpack
parent71a423562a555ef0805bba546a3a42d437803842 (diff)
downloadhaskell-fd8b044e9664181d4815e48e8f83be78bc9fe8d2.tar.gz
Levity polymorphic Backpack.
This patch makes it possible to specify non * kinds of abstract data types in signatures, so you can have levity polymorphism through Backpack, without the runtime representation constraint! Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> Test Plan: validate Reviewers: andrewthad, bgamari, austin, goldfire Reviewed By: bgamari Subscribers: goldfire, rwbarton, thomie GHC Trac Issues: #13955 Differential Revision: https://phabricator.haskell.org/D3825
Diffstat (limited to 'compiler/backpack')
-rw-r--r--compiler/backpack/RnModIface.hs2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/backpack/RnModIface.hs b/compiler/backpack/RnModIface.hs
index 296b4e2f3c..2199965d13 100644
--- a/compiler/backpack/RnModIface.hs
+++ b/compiler/backpack/RnModIface.hs
@@ -424,11 +424,13 @@ rnIfaceDecl d@IfaceData{} = do
binders <- mapM rnIfaceTyConBinder (ifBinders d)
ctxt <- mapM rnIfaceType (ifCtxt d)
cons <- rnIfaceConDecls (ifCons d)
+ res_kind <- rnIfaceType (ifResKind d)
parent <- rnIfaceTyConParent (ifParent d)
return d { ifName = name
, ifBinders = binders
, ifCtxt = ctxt
, ifCons = cons
+ , ifResKind = res_kind
, ifParent = parent
}
rnIfaceDecl d@IfaceSynonym{} = do