diff options
author | RyanGlScott <ryan.gl.scott@gmail.com> | 2015-12-07 12:37:50 +0100 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2015-12-07 12:37:58 +0100 |
commit | 700c42b5e0ffd27884e6bdfa9a940e55449cff6f (patch) | |
tree | 089d9fb84be2d57abfb0971a029b0c2b92404e37 /testsuite/tests/overloadedrecflds | |
parent | d4bcd05d7df3138429abdf43d3e3eb8f6da2dcdf (diff) | |
download | haskell-700c42b5e0ffd27884e6bdfa9a940e55449cff6f.tar.gz |
Use TypeLits in the meta-data encoding of GHC.Generics
Test Plan: Validate.
Reviewers: simonpj, goldfire, hvr, dreixel, kosmikus, austin, bgamari
Reviewed By: kosmikus, austin, bgamari
Subscribers: RyanGlScott, Fuuzetsu, bgamari, thomie, carter, dreixel
Differential Revision: https://phabricator.haskell.org/D493
GHC Trac Issues: #9766
Diffstat (limited to 'testsuite/tests/overloadedrecflds')
-rw-r--r-- | testsuite/tests/overloadedrecflds/should_run/overloadedrecflds_generics.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/testsuite/tests/overloadedrecflds/should_run/overloadedrecflds_generics.hs b/testsuite/tests/overloadedrecflds/should_run/overloadedrecflds_generics.hs index 987a24f9bc..c2b4bd6120 100644 --- a/testsuite/tests/overloadedrecflds/should_run/overloadedrecflds_generics.hs +++ b/testsuite/tests/overloadedrecflds/should_run/overloadedrecflds_generics.hs @@ -7,6 +7,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -17,14 +18,14 @@ import GHC.Generics import Data.Data import Data.Proxy -type family FirstSelector (f :: * -> *) :: * +type family FirstSelector (f :: * -> *) :: Meta type instance FirstSelector (M1 D x f) = FirstSelector f type instance FirstSelector (M1 C x f) = FirstSelector f type instance FirstSelector (a :*: b) = FirstSelector a type instance FirstSelector (M1 S s f) = s -data SelectorProxy s (f :: * -> *) a = SelectorProxy -type SelectorProxy' s = SelectorProxy s Proxy () +data SelectorProxy (s :: Meta) (f :: * -> *) a = SelectorProxy +type SelectorProxy' (s :: Meta) = SelectorProxy s Proxy () -- Extract the first selector name using GHC.Generics firstSelectorName :: forall a. Selector (FirstSelector (Rep a)) |