diff options
author | RyanGlScott <ryan.gl.scott@gmail.com> | 2015-12-21 16:11:25 +0100 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2015-12-21 19:09:55 +0100 |
commit | ee6fba89b066fdf8408e6a18db343a4177e613f6 (patch) | |
tree | f60d6c0495bbfdaf29ff642caaf4deefb717b25d /testsuite/tests/ghci.debugger/scripts/print029.hs | |
parent | 99b956ef1d4bbb2252c0bbaa956094c2f837d111 (diff) | |
download | haskell-ee6fba89b066fdf8408e6a18db343a4177e613f6.tar.gz |
Encode strictness in GHC generics metadata
This augments `MetaSel` with a `Bang` field, which gives generic
programmers access to the following information about each field
selector:
* `SourceUnpackedness`: whether a field was marked `{-# NOUNPACK #-}`,
`{-# UNPACK #-}`, or not
* `SourceStrictness`: whether a field was given a strictness (`!`) or
laziness (`~`) annotation
* `DecidedStrictness`: what strictness GHC infers for a field during
compilation, which may be influenced by optimization levels,
`-XStrictData`, `-funbox-strict-fields`, etc.
Unlike in Phab:D1603, generics does not grant a programmer the ability
to "splice" in metadata, so there is no issue including
`DecidedStrictness` with `Bang` (whereas in Template Haskell, it had to
be split off).
One consequence of this is that `MetaNoSel` had to be removed, since it
became redundant. The `NoSelector` empty data type was also removed for
similar reasons.
Fixes #10716.
Test Plan: ./validate
Reviewers: dreixel, goldfire, kosmikus, austin, hvr, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1646
GHC Trac Issues: #10716
Diffstat (limited to 'testsuite/tests/ghci.debugger/scripts/print029.hs')
0 files changed, 0 insertions, 0 deletions